Release Notes

Filter
Synergy/DE - 12.4.1.1005
May 7, 2026

License Manager

We fixed a license forwarding issue that caused the copyright warning to display incorrectly when running xfServerPlus on Linux.

SQL Connection

We fixed an issue in vtxnetd threaded connections where the service name could be incorrectly referenced from stack memory, potentially causing the wrong service to be loaded under extreme connection load.
We improved the error handling that occurs when receiving the service name by detecting recv() failures and logging a clear socket-closed message instead of an unknown command error.
We improved vtxnetd resiliency when receiving invalid network traffic, preventing instability caused by non-protocol data sent to the service port.

Synergy Language

We updated synconfig to better handle SQL OpenNet startup and shutdown and to report on the status of the service. We also updated the default synpreload.config file and added a "-u" option to the dltest utility that will suggest manual updates to synpreload.config based on available drivers.
Synergy/DE versions 12.4.1.1005 and higher (including all 12.5 versions) do not support 32-bit Linux.
We implemented the "-e" command in the hcutl utility to allow the record length for high-cooperative ISAM files to be extended.
We implemented "-ka" and "-kd" commands in the isutl utility to add and remove keys from ISAM files. This allows the files to be updated without reloading the contents into new files, but it requires exclusive access.
We added support for .NET 10. .NET 6 is no longer supported; NuGet packages now target .NET 8 and .NET 10.
We fixed an issue where using the SYNESCAPE_ESCAPE XML encoding option with non-ASCII characters in an XML element could cause heap corruption and program crashes.
In certain cases, the runtime crashed without signaling a trappable error. For a READ operation on an input channel with an alpha key argument, the expected ARGDIG error was not signaled. This has been fixed.
HTTP/HTTPS chunked encoding logic was unexpectedly terminating after the initial packet in the RECV didn't include the chunk length in that same packet, causing a size 0 to be returned. This has been fixed so that all chunks are now retrieved when chunked encoding is used and packets are split in this fashion.
We fixed an issue with the Synergy .NET runtime on Linux where Synergy interfered with .NET-managed child processes. Previously, calling Process.WaitForExit() on a .NET-owned child could hang or return the wrong exit code. Synergy now tracks and manages only the child processes it creates, allowing .NET to correctly handle its own processes. Behavior on Windows and in non-.NET Linux applications is unchanged.
We fixed a problem that caused replicating null integer keys to fail to suppress records with 0 for those keys. Decimal and unsigned keys already showed the correct behavior.
Previously, if an MRETURN statement was missing from a method, which should have triggered an E_INMTHD error ("MRETURN not found within a method"), a THROW statement caused that error to be suppressed, leading to an implicit stop at runtime. We fixed this issue so that E_INMTHD is only suppressed when a THROW or STOP statement is the last statement in the method. We also now correctly report a W_RETRQD warning (level 4) for a function that's missing an FRETURN.
The traditional Synergy compiler now reports a level 3 warning, W_URESULT ("scope [] on pseudo array gives unexpected results at runtime"), when [] (the scope operator) is applied to a pseudo array. Since a pseudo array is not a real array, using [] will access only its first element—not the entire array, as one might expect. If you need to access the full array using the scope operator, it's best to convert the pseudo array to a real array.
If a local variable with the same name as a reserved keyword (e.g., "store") is used in a statement (e.g., MRETURN), an unexpected E_INVSTMT error is no longer reported.
The traditional Synergy compiler now reports an E_INVTYP error when an extension method is called incorrectly using a type as the instance variable (e.g., string.mymethod()).
We fixed a problem in which isutl -ro could cause index errors in a file that used "MULTIPLE" in its file specification to define multiple fixed record lengths . (This problem did not apply to files with a record type of "VARIABLE".) Note that isutl -ro may still fail on some "MULTIPLE" files with an unrelated "Bad data segment" error. (See tracker 161187.)
The compiler now reports a hard E_NOTALLOWED error when doing an INIT of a group within an external common. (It already reported this error for an INIT of a field within an external common or the external common itself.) We also added a -qrelaxed:extinit switch that generates a warning and proper INIT code using an external common definition. This can be useful if the external common and its associated global common come from the same source, such as an include file or repository.
The compiler now reports a level 3 warning ("%DBL-W-URESULT, Precedence of operator <operator> may cause unexpected results at runtime") when an assignment operator (+=, -=, *=, /=, |=, or &=) is used in combination with a Boolean comparison that could produce unexpected results. Because assignment operators have the lowest precedence, such expressions may not evaluate as expected. To resolve the warning, add parentheses around the expression to ensure the intended behavior.
We fixed an intermittent invalid pointer/segfault error that occurred during dbl/dblproto compilation when files were being closed.
We fixed a problem that caused some Unix systems to ignore DFLAG 3, so that the runtime generated an $ERR_LOCKED error when encountering a locked record with that flag set instead of suspending the operation as expected.
We fixed a problem in fconvert that caused undefined behavior when parsing a .par file if a file option was missing a required argument.
We fixed an issue where using an undefined field in an expression used to initialize another field (in the data division) could cause an access violation in the traditional Synergy compiler. Now, an NFND error ("Identifier not found") will be reported on the undefined field instead.