Release Notes
4D 20 R7
Read What’s new in 4D 20 R7, the blog post that lists all new features and enhancements in 4D 20 R7.
Highlights
- List box columns and headers of type time now support the "blankIfNull" option.
- New properties in
.getBoxInfo()
and.getBoxList()
. - You can now add and remove components using the Component manager interface.
- New direct typing mode in which you declare all variables and parameters in your code using
var
and#DECLARE
/Function
keywords (only mode supported in new projects). Syntax checking feature has been enhanced accordingly. - Support of Session singletons and new
.isSessionSingleton
Class property. - New
onHttpGet
function keyword to define singleton or ORDA functions that can be called through HTTP REST GET requests. - New
4D.OutgoingMessage
class for the REST server to return any web contents. - Qodly Studio: You can now attach the Qodly debugger to 4D Server.
- New Build Application keys for remote 4D applications to validate the server certificate authority signatures and/or domain.
- 4D Language:
- New commands: Process info, Session info, SET WINDOW DOCUMENT ICON
- Modified commands: Process activity, Process number
- 4D Write Pro:
- New command: WP DELETE SECTION
- Modified commands: WP DELETE SUBSECTION and WP RESET ATTRIBUTES
- What's new page in 4D Write Pro Reference.
- Fixed bug list: list of all bugs that have been fixed in 4D 20 R7.
Behavior changes
- Documentations for 4D Language and 4D Write Pro Language are now fully available on developer.4d.com. Find out about all the new features and changes concerning these documentations in this release note.
- The
File
command (as well as4D.File.new()
) is stricter when it comes to checking the syntax of the path supplied as a parameter. - The describe action permission has been removed from available actions. Access to
/rest/$catalog
urls is no longer controlled. Session describe privileges are now ignored.
4D 20 R6
Read What’s new in 4D 20 R6, the blog post that lists all new features and enhancements in 4D 20 R6.
Highlights
- Support of comparison operators on object references and collection references.
collection.query()
now supports object and collection references as query values. - When a component has a declared namespace, its classes are now automatically shared between all loaded components in the host project via
cs.<namespace>
. - Component manager: Support of components stored on GitHub.
- New
entitySelection.clean()
function and$clean
REST API to get a new entity selection based upon the original entity selection but without its deleted entities. - New
session.getPrivileges()
function and$info/privileges
REST API to inspect session privileges for an easier debugging. - New 4DCEFParameters.json file to customize 4D embedded web areas.
- New HTTPAgent class and new
agent
property for HTTPRequest class. - New
enableState()
anddisableState()
functions to monitor Qodly page states from the server. - New
$singleton
API to call exposed singleton functions from REST and new associated privileges. - A new settings button helps you upgrade your project to use "force login" REST mode (the
On REST Authentication
database method is now deprecated). - A new settings tab helps you define warnings generation globally.
- Several commands, mainly from the "4D Environment" theme, are now thread-safe (see the full list), as well as some selectors of the
SET DATABASE PARAMETER
/Get database parameter
commands. - New 4D-QPDF component that provides the
PDF Get attachments
command to extract attachments from a PDF/A3 document. - 4D Language commands: What's new page on doc.4d.com.
- 4D Write Pro: What's new page on doc.4d.com.
- Fixed bug list: list of all bugs that have been fixed in 4D 20 R6.
Behavior changes
- Support of scroll chaining in forms: parent subforms now scroll automatically when embedded scrollable objects (vertically or horizontally) have reached their boundaries and the user keeps scrolling using the mouse or trackpad (overscrolling).
- The
$catalog
REST API now returns singletons (if any).
4D 20 R5
Read What’s new in 4D 20 R5, the blog post that lists all new features and enhancements in 4D 20 R5.
Highlights
- New Component manager to handle components through a
dependencies.json
file. - Support of
Try...Catch...End try
error handling structures. - QUIC network layer now supports broadcasting, SSO, and IPv6.
- Support of restricted entity selections.
- Support of shared classes and singleton classes. New Class properties:
isShared
,isSingleton
,me
. - Support for initializing a class property in its declaration line.
- New force login mode for REST requests with a specific support in Qodly Studio for 4D.
- New $format REST parameter.
Session
object is now available in remote user sessions and stored procedures session.- 4D Language commands: What's new page on doc.4d.com.
- 4D Write Pro: What's new page on doc.4d.com.
- Fixed bug list: list of all bugs that have been fixed in 4D 20 R5.
Behavior changes
- The plug-ins 4D Internet Commands and 4D for OCI are no longer included in 4D installers. To get these plug-ins, you need to connect to the 4D Product Download portal.
- Changes made in the Structure editor regarding graphical appearance of tables and fields (color, position, order...) are now saved in a separate file named
catalog_editor.json
stored in the project'sSources
folder.
4D 20 R4
Read What’s new in 4D 20 R4, the blog post that lists all new features and enhancements in 4D 20 R4.
Highlights
- Support of
ECDSA
encryption format for TLS certificates. - Client/server and SQL server TLS connections are now configured dynamically (no certificate files are required).
- Direct HTML format for structure definition exports.
- New Code Live Checker that enhances code control during code typing, syntax checking, and compilation steps to prevent execution errors.
- Method parameters declared in
#DECLARE
prototypes are no longer necessary in "Compiler_" methods. - Support of custom date and time formats
- New
Try(expression)
keyword to handle simple error cases. - New
HTTP Parse message
command. - New Non-blocking printing compatibility option.
- New editing mode in the Data Explorer.
- 4D Language commands: What's new page on doc.4d.com.
- 4D Write Pro: What's new page on doc.4d.com.
- Fixed bug list: list of all bugs that have been fixed in 4D 20 R4.
Behavior changes
- Using a legacy syntax for declaring parameters (e.g.
C_TEXT($1)
orvar $1 : Text
) is now deprecated and generates warnings at code typing, syntax checking, and compilation steps. - Selections are now kept consistent after some records have been deleted and others records created (see this blog post.
- In the updated OpenSSL library, the default SSL/TLS security level has been changed from 1 to 2. RSA, DSA and DH keys of 1024 bits and above and less than 2048 bits as well as ECC keys of 160 bits and above and less than 224 bits are now no longer allowed. By default, TLS compression was already disabled in previous OpenSSL versions. At security level 2 it cannot be enabled.
- In order to allow password verification when the 4D user directory uses the bcrypt algorithm, the "password" value in the connectionInfo parameter of the
Open datastore
command is now sent in clear form by default. Make sure your "On REST authentication" database method can handle passwords in clear form (third parameter is then False) and thatOpen datastore
encrypts your connection by passing the "tls" option to True in connectionInfo. In specific cases, a new "passwordAlgorithm" option can also be used for compatibility (seeOpen datastore
command).
4D 20 R3
Read What’s new in 4D 20 R3, the blog post that lists all new features and enhancements in 4D 20 R3.
Highlights
- New
collection.multiSort
function. - Support of context parameter in
Formula from string
. - Support of
headers
property in connectionHandler parameter of 4D.WebSocket.new. - Global modification stamp to help implementing data synchronization modules. New functions:
ds.getGlobalStamp
andds.setGlobalStamp
. - Assigning file references to picture/blob attributes is supported in ORDA.
- Support for initializing the variable's value and data type in the declaration line.
- Log file settings are now saved with the current data file
- New syntax for declaring variadic parameters
- 4D View Pro: Support for the import and export of 4D View Pro documents in Blob format.
- 4D Language commands: What's new page on doc.4d.com.
- 4D Write Pro: What's new page on doc.4d.com.
- Fixed bug list: list of all bugs that have been fixed in 4D 20 R3.
Behavior changes
- Some errors were catchable by your error handling method in interpreted mode only. A fix has been done, so that the following errors will now be caught also in compiled mode: Indice out of range, Type incompatible, and Dereferencing a Null pointer. However, for such errors on Intel processors, the procedure is still interrupted as before, whereas on Apple Silicon processors the procedure is only interrupted if you call the
ABORT
command. - 4D no longer includes an internal PHP interpreter. You need to set up and run your own PHP interpreter to use PHP commands.
4D 20 R2
Read What’s new in 4D 20 R2, the blog post that lists all new features and enhancements in 4D 20 R2.
If your 4D applications use TLS connections, it is recommended that you upgrade to 4D 20 R2 HF1 build 100440 or higher. For more information, refer to this Security bulletin.
Highlights
- New WebSocket class to create and manage client WebSocket connections from 4D.
- New QUIC network layer interface setting.
- 4D View Pro: Support of the .sjs file format for the import and export of documents.
- 4D Language commands: What's new page on doc.4d.com.
- 4D Write Pro: What's new page on doc.4d.com.
- 4D Write Pro Interface: New Table Wizard.
- Fixed bug list: list of all bugs that have been fixed in 4D 20 R2.
Behavior changes
- Warning: The starting
offset
value of 4D.FileHandle objects was incorrectly set to 1 instead of 0. A fix has been made in 4D as of versions 20.1 HF1 and 20 R2 and the value is now 0.
4D 20.x LTS
See Release Notes for 4D 20.x LTS.
Library table
Library | Current version | Updated in 4D | Comment |
---|---|---|---|
BoringSSL | 0aa300b | 20 R6 | Used for QUIC |
CEF | 121 | 20 R5 | Chromium 6167 |
Hunspell | 1.7.2 | 20 | Used for spell checking in 4D forms and 4D Write Pro |
ICU | 73.2 | 20 | This major upgrade forces an automatic rebuild of alphanumeric, text and object indexes. |
libldap | 2.6.7 | 20 R6 | |
libsasl | 2.1.28 | 20 | |
Libuv | 1.48 | 20 R6 | Used for QUIC |
libZip | 1.9.2 | 20 | Used by zip class, 4D Write Pro, svg and serverNet components |
LZMA | 5.4.1 | 20 | |
OpenSSL | 3.3.2 | 20 R7 | Default TLS/SSL security level has been upgraded. See Behavior changes for release 20 R4 |
PDFWriter | 4.3 | 20 | FreeType dependency in 12.2.1 |
PHP | 8.2.4 | 20 | |
SpreadJS | 17.1.0 | 20 R7 | See this blog post for an overview of the new features |
webKit | WKWebView | 19 | |
Zlib | 1.2.13 | 20 |