During the R-release cycle, various libraries and components used by 4D are updated, existing behaviors are modified, and known issues are recorded. This information, initially published via the "Release Notes" of each version, is summarized on this page, along with changes in the latest release.
4D v18 R6 includes an ICU library update (see below) which will force an automatic rebuild of indexes of type alpha, text, and object. Depending on the size of the data file, this operation can take a while and may require to be planned.
If you use components compiled with 4D v19.0 for Silicon (Apple ARM CPUs) which call the Count parameters command, we recommend to recompile them with 4D v19.1 (or v19 R3) to provide compatibility with 4D v19 R3 and future releases. If a component is not compiled for Silicon, there is no need to recompile.
The 4D compiler has been updated in 4D v19, with the following consequences:
If you want to use a compiled version of a v18 Rx project with 4D v19 or higher, you must recompile the project with 4D v19 beforehand.
Dot notation and saving methods in Unicode are now mandatory to compile a database. On attempting to compile database with one of these settings turned off, a compilation error is generated. Corresponding options must be switched on in the Compatibility page of the Settings.
On Windows, building a client/server application that triggers automatic updates for macOS clients now requires that you select a .4darchive file previously generated on the macOS side.
4D v19 is the first universal binary release of 4D on macOS. A universal binary looks no different than a regular app, but its executable file contains two versions: one version runs natively on Apple silicon, and the other runs natively on Intel-based Mac computers.
The SameSite attribute of scalar web session cookies is set by default to "Strict" as of 4D v19 (the most secure setting). In previous releases, this attribute was not set by the web server; thus, browsers were using a "Lax" configuration by default. See developer.4d.com for more information.
4D v19 and higher include internal modifications regarding encryption features. As a result, a data file that is encrypted with 4D v19 or higher using a command such as Encrypt data file or the MSC cannot be reopened using a previous version (except 4D v18.5 which includes the modifications).
Note: Encryption is also triggered by compacting or repairing operations.
However, it will still be possible to reopen the data file using a prior 4D version by removing the encryption in 4D v19.x beforehand.
Only encrypted data files are concerned. If you do not use encryption, the data file can be reopened as usual.
For consistency, the MailAttachment.path property now returns the attachment file path with a POSIX syntax. Use the new MailAttachment.platformPath property to get the attachment file path with a platform syntax.
For a better clarity and to promote project-based architecture in new developments, the overall terminology has been upgraded in 4D and the interface simplified:
The "database" generic term has been replaced by "project" all over the 4D applications.
By default, only the New > Project... option is proposed in the File menu/New toolbar button.
The ability to create binary databases through the File menu or the New toolbar button is still supported, but it must be explicitely enabled in the Preferences using the Enable binary database creation option.
Starting with 4D v18 R5, existing ORDA data model class functions (introduced in 4D v18 R4) become automatically not exposed to REST requests by default. You must explicitly declare each function that you want to be available from REST requests as exposed. See Data Model Classes documentation on developer.4d.com.
As of 4D v18 R5, entity selection objects can be shared between processes for greater flexibilty and scalability. Depending on how they are created, some entity selections can become shareable in your application (see Shareable vs Alterable entity selections).
A shareable entity selection does not accept the addition of new entities. As a consequence, calls to entitySelection.add( ) could generate errors in your existing code. In this case, to restore an error-free execution, you can:
When you execute a manual restoration of a backup file, any content related to the data file (files and Settings folder) are now automatically restored in a Data subfolder created within the destination folder.
The Backup / DataBase XML keys are no longer available in the "backup.4DSettings" file (DatabaseName, LastBackupPath, LastBackupLogPath, CurrentBackupSet, LastBackupDate, LastBackupTime). Information and reports about last backup operation can now be found in the “backupHistory.json” file.
The server port 19815 is now automatically used by 4D Server when the remote debugger is enabled (default port number). For more information, please refer to the 4D Server and port numbers section.
As of 4D v18 R6, the On Clicked and On Double Clicked event are generated when a click occurs in a text input cell while the cell is being edited. This feature allows displaying pop-up menus after a Contextual click for example. The event is generated in the column and in the list box object (in that order).
In previous releases, these events could only be generated for text input cells when they were not in edition. To avoid unexpected effects in existing interfaces, you can add the following test in your code:
//List box object or list box column method If(FORM Event.code=On Clicked) //or On Double Clicked If(Not(Is editing text)) //added test //previous code End if End if
As of 4D v18 R4, list box advanced features are available to all 4D users for free (they previously required a 4D View Pro license). These features include:
These commands have been updated in 4D v18 R4. Some non-documented behaviors have been modified, which could bring compatibility issues in existing applications.
Both commands used to modify the OK system variable; they no longer set this variable.
In case of an invalid Base64 format, BASE64 DECODE called on a single blob parameter was leaving the blob untouched. It now returns an empty blob.
Following Apple's recommendations, 4D now delivers signed and notarized 4D Volume Desktop and plug-ins. Consequently, signing your applications on macOS becomes mandatory, otherwise the building process will produce packages with broken signatures. The Sign application option is checked by default in the Build Application dialog box. Developers who do not have a distribution certificate need to use a self-signed certificate (a Generate self-signed certificate button has been added in the Build Application dialog box to make things easier).
In addition, it is no longer possible to build a macOS client application directly on the Windows platform. You need to build the macOS archive on a Mac and copy it to the final package.
Note: 4D now controls that the structure of third-party plug-ins and applications is compliant with the latest Apple requirements (updated in February 2020) during the signing step. Therefore, even a former notarized element could be rejected by 4D. This will save time since the whole notarization would fail eventually. In this case, you may need to contact the plug-in or application provider to obtain an updated version.
In project applications, when 4D connects to a 4D Server on the same machine, 4D now uses its own internal components and plug-ins instead of those in 4D Server (server plug-ins are not "downloaded" to the 4D application in this context). Note that it is no longer recommended to install plug-ins or components at the 4D or 4D Server application level. For more information, please refer to this section.
The 4D Internet Commands plug-in is no longer installed by default in 4D as of 4D v19. It must be explicitely selected/downloaded and installed in the Plugins folder of your database if it still uses it. For more information, see Installation and Software Requirements.
As stated on the *** New documentation website *** page, the 4D documentation is being moved to the developer.4d.com/docs platform. In addition to new content, the new website is also progressively filled with updated material from doc.4d.com.
To avoid confusion, we've started removing doc.4d.com sections that have already been updated and migrated to developer.4d.com. Removed sections now display a redirection to the new website, for example:
When importing legacy 4D Write plug-in documents, 4D Write Pro now uses by default the system separator (returned by GET SYSTEM FORMAT) as decimal separator for decimal tabs. You can change this parameter using the WP SET ATTRIBUTES command.
As of 4D Write Pro v18 R2, methods and commands are no longer filtered in formulas -- 4D Write Pro now supports formulas as objects instead of strings. Any created formula can be inserted and computed, even if they call methods they were not "allowed". The following 4D filtering features are now ignored for the 4D Write Pro formula evaluation:
Filtering of commands and project methods... option in the "Security" page of the Database Settings dialog box
In previous versions, the ST FREEZE EXPRESSIONS command always computed expressions before executing in 4D Write Pro documents. As of 4D v18 R2, it only computes expressions if they were not already computed (except if the * parameter was used).
As of 4D v18 R2, Oracle library files must be installed in the /usr/local/lib location (no other location is supported). See also the 4D for OCI Installation (Windows) page.