We’ve been quite active here at 4D over the past few months. We trust that our release of Qodly Studio in Developer Preview has kept you engaged and busy, and we want to extend our gratitude to all of you who have been testing it.
And now, we are thrilled to announce the launch of beta testing for 4D v20 R3 … starting today!
Let’s uncover all that this feature release has to offer:
- 4D Write Pro is out with two features that are sure to capture your interest. You can now assign names to formulas to enhance clarity. Plus, export documents in the PDF/A format.
- As for the new programming capabilities, we are improving your coding experience. This includes a one-line variable declaration and initialization, simplified function declarations for any number of parameters, and global stamps for incremental synchronization that is no longer limited to 4D for Mobile but can be applied to multiple scenarios via the 4D REST Server— among other enhancements.
- A new 4D View Pro blob format allows storing compressed documents in your database, providing the same high performance as the .sjs format.
- A new Visual Studio Code extension feature that provides easy access to 4D documentation.
- And that’s not all —Much more awaits you!
Download 4D v20 R3 now (Exclusive to 4D Partners)
Programming
Effortless Variable Initialization
4D v20 R3 enables developers to declare and initialize variables in a single line, effortlessly eliminating repetitive code.
This feature simplifies your development process, resulting in cleaner and more efficient code.
For that, you have two options: let the compiler determine the variable type from the value automatically or explicitly specify it for complex types.
Streamlined Variadic Function Writing
Starting from 4D v20 R3, adding the “…” symbol in the last parameter simplifies method and function declarations that accept an unspecified number of parameters, making your code shorter, more readable, and flexible.
Incremental Synchronization with Global Stamps
Incremental synchronization was introduced with 4D for Mobile. This feature allows to update or synchronize data by transferring only the changes made since the last synchronization instead of transferring the entire dataset.
The best part? You can now tap into this power using the 4D REST Server, effortlessly applying it to any scenario. 4D assigns stamps to your new, modified, or deleted records automatically. And if you ever want to take control, we’ve got you covered with two handy functions to get and set these stamps as needed.
Efficient collections Manipulation with multiSort()
4D empowers you to work efficiently with object collections, simplifying tasks like sorting, ordering, and filtering. Yet, when data arrives from non-4D systems in the form of arrays, converting them into object collections and back into arrays can be tedious.
In 4D v20 R3, the new multiSort() function simplifies the sorting and synchronization of multiple collections, making data manipulation more efficient.
Websocket Client Headers Customization
Customizing WebSocket client headers lets you inject specific information, preferences, or requirements into the WebSocket connection establishment process.
4D v20 R3 allows you to transmit security information, application-specific data, or any pertinent information to the server via WebSocket client headers, enhancing the versatility and control of your WebSocket interactions.
Log Management Made Easy
In 4D v20 R3, log management gets an upgrade to offer more configuration options for deployment.
Now, just like other backup settings, you can override the “Use log file” option. This setting determines whether your application uses a log. When enabled, 4D seamlessly guides you through log creation or selection while storing the log path in the data file.
If you need to open a data file to testing/development without access to the last use log, even if the structure normally requests one, you can now overwrite the option in your data settings file and open the data without the need to run a backup first, to create a new log.
IMPROVING THE FORMULA FROM STRING COMMAND
In 4D v20 R3, the Formula from string command is enhanced, allowing formulas to be executed in different contexts. This update simplifies component development, enabling easier access to methods and variables from the host database.
The Future of PHP in 4D: Important Changes
PHP has played a significant role in 4D’s web development, offering features like zip, hash, and LDAP functionality. Over time, many PHP features have become integral to 4D’s core functionality. To simplify things, we are removing the built-in PHP interpreter in 4D v20 R3 and starting the deprecation process for PHP commands in v21.
While we won’t completely eliminate PHP commands from 4D, we strongly recommend using system workers to execute PHP code.
4D Write Pro
Enhance Clarity with Formula Naming
Previously, formulas could be displayed as values, expressions, or symbols, which might have posed challenges regarding readability.
However, with 4D v20 R3, developers now have the option to assign names to formulas. This improves the intuitiveness of 4D Write Pro documents since users can quickly identify and understand the purpose of each formula within the document, making it easier to work with templates and boosting the overall user experience.
Introducing PDF/A Format export
The PDF format has long been a classic choice for exporting 4D Write Pro documents, available in various versions. But with 4D v20 R3, we’re thrilled to introduce a new addition: the PDF/A format. While optional, this format opens doors to future applications like electronic invoicing. It enables the generation, transmission, receipt, and storage of business transactions in electronic form, fostering more efficient and eco-friendly management of these processes.
4D Netkit
Gmail Management: Labels, Fetching, and Email Removal
The previous feature release was the first step of integrating the Gmail API into 4D Netkit. Starting from 4D v20 R3, we’ve introduced commands for retrieving label lists, fetching emails, and removing emails, and there are even more commands in the pipeline. Stay tuned!
Microsoft 365: Update mail properties
Listening to your feedback, we’re introducing a new command to address your requests regarding the ‘isRead’ flag in emails. With the release of 4D v20 R3, 4D Netkit puts you in control, enabling updates to a wide range of properties for received and drafted emails using the ‘Office365.mail.update()’ function.
4D View Pro
EFFICIENT DOCUMENT MANAGEMENT WITH BLOB FORMAT
We understand developers’ challenges when dealing with larger 4D View Pro documents. To elevate your experience, we introduced the .sjs file format.
But the enhancements don’t stop there. With 4D v20 R3, we’re introducing a new blob format that lets you effortlessly store compressed documents in your database, offering the same exceptional performance as the .sjs format.
Visual Studio Code
Explore 4D Documentation with Ease
4D v20 R3 comes with a new Visual Studio Code editor feature thanks to the 4D-Analyzer extension — the “Show 4D Documentation” feature!
Even if you’re good at understanding 4D commands and classes, there are times when having complete information while working with code in VS Code is invaluable.
Starting from 4D v20 R3, it’s a breeze: simply hover your mouse over the command, class, or class function you want to explore, and a tooltip with a description will appear. You’ll find a link at the bottom of this tooltip that says, “Show documentation.” Couldn’t get any easier!
Need more technical details? Take a look at the 4D v20 R3 Beta documentation on the 4D Doc Center.
Your feedback is greatly appreciated and will help us improve our product quality and better serve your needs. We’d love to hear your thoughts about any of the features above. Contribute to our beta forum (accessible for all 4D Partners). And don’t hesitate to tell us about your needs; we take votes very seriously!
Not yet a partner? Don’t miss out on the opportunity to become a 4D Partner and engage in meaningful discussions. Join us today and be part of the conversation!