Web Server in preemptive mode

We are moving forward with 4D v16 on preemptive multi-threading as the 4D Web Server is also becoming preemptive. Just click one checkbox and your application will support more simultaneously connected users, and process more requests in parallel. For requests using a lot of CPU time, execution can be up to 2 times faster!


4D Write Pro commands in preemptive processes

With 4D v16, you can improve your database scalability using the new 4D Write Pro commands in preemptive processes.

If you are doing routines for creating or converting documents programmatically – e.g. invoices … you can now do it with preemptive workers as most 4D Write Pro commands are now thread safe!


XML commands are now thread safe

Want to enhance your database scalability and use all the performance available with your multi-core machines?

With 4D v16, we have extended the list of thread-safe commands in order to use preemptive processes with your code handling XML.


Database mirroring

When integrating the log file, 4D stops at the first error and doesn’t return any error message. Reasons for integration errors could be a damaged log, by example because of a bad hard disk or software error during writing. If that error happens at the end, no problem; but it could also be at the start or in the middle of the log. In this case, the data after the error might be useful.

Now, when the integration fails in standard mode, you can try integration in auto-repair mode. In this case, 4D tries to resolve the error encountered, doesn’t stop the integration, and returns the error list.


JSON export for Journal

In 4D applications, the data file is important, so all the activity of the database is stored in the log file. As you all know, the log file is a vital element for the restoration of your database following an unfortunate contingency. However all the information on the database activity may also be useful for analysis. For example, to check the activity on a table, to see the changes made by a user, and to follow a record’s history.