Release Notes
Filter
Clear All
Operating System
Product
Apply
SDI - 2025.12.2909
December 3, 2025
Visual Studio Integration
SDI now supports SDK projects, which can be built on both Windows and Linux. These projects represent a major overhaul of how build tools are packaged for Synergy projects, aligning them with modern .NET SDK practices. SDK projects provide tighter control over toolset versions, are smaller and more portable, and enable cross-platform builds through self-contained tooling.
SDI now includes SDK project templates for several Synergy .NET and traditional Synergy project types:
Class Library SDK (.NET)
Console App SDK (.NET)
Executable Library SDK (ELB)
Multiple Mainline SDK (.NET)
Multiple Mainline SDK (DBR)
Object Library SDK (OLB)
Synergy/DE Repository SDK
Traditional Application SDK (DBR)
Unit Test SDK (Traditional)
To support these templates, we’ve also published the following NuGet packages:
Synergy.Net
Synergy.Repository
Synergy.Traditional
Synergy.Traditional.UnitTestThe Repository page of project properties has been updated for improved usability and to support automatic generation of schema files when exiting the Repository program.
- Options on the Repository page have been reorganized and reworded for clarity and ease of use. Settings are now easier to understand and follow, making it simpler to configure and manage Repository projects efficiently.
- The Repository page now includes options for automatically generating repository schema files when exiting the Repository program. When the new option "Automatically generate schemas on exiting Repository UI" is selected, the following options are available:
- "Generate a single schema file" creates one schema file for the entire repository project.
- "Generate separate schema files" results in a separate schema file for each repository element, providing greater flexibility in the management of schema files and repository elements.
Renaming a multiple-mainline file in Solution Explorer no longer causes issues, such as constant attempts to load the project and incorrect entries in IntelliSense dropdowns.
We fixed an issue that caused SDI installations and upgrades to fail on machines with both Visual Studio 2022 and Visual Studio 2026 Insiders, potentially leaving the system in an inconsistent state.
We fixed an issue in multiple-mainline projects where adding a file using Add > Reference Existing Item for an item in a location outside the project directory caused an exception (“Object reference not set to an instance of an object”) when the file was selected in Solution Explorer. This now works correctly, and IntelliSense functions as expected for the newly added file.
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.
We resolved an issue with multiple mainline projects where selecting newly added or previously existing files in Solution Explorer caused errors and prevented IntelliSense from loading properly.
We added better safeguards against invalid SDI package states during shutdown, which can cause null reference exceptions to be displayed.
We fixed a Synergy .NET compiler issue that resulted in a NullReferenceException at runtime when a base class constructor invoked a virtual method implemented in a derived class.
With Synergy .NET, you can now use XSUBR to call a routine in another assembly using a literal string name. If the routine is found at compile time, the compiler validates its arguments and generates a direct call to the routine. Otherwise, the call is deferred to runtime. Additionally, literal support has been extended to allow the assembly name to be specified before the routine name, separated by a colon (e.g., "myassembly:mysubroutine").
The Synergy .NET compiler now reports an E_BADSTATIC error when the initial value of a static class field references an instance.
The Synergy .NET compiler no longer incorrectly reports a PRNRQD error when a method name is used as the initial value for a class field whose type is a delegate.
We resolved an issue which caused build error reporting to display all errors as being at the same location.
The Synergy Method Definition Utility (MDU), Synergy Composer, and the x86 and x64 command prompts launched from the Tools menu in Visual Studio are now configured with the appropriate repository project reference information. In the case of MDU, this prevents silent failures during method exports when the repository is not configured.
We updated the Synergy .NET compiler so that a local variable declared in a FOREACH loop will no longer inadvertently set some other local variable to null when compiled in debug mode. Previously, this could occur and could cause unexpected results at runtime.
The Synergy .NET compiler now reports an E_ACCESS error when a delegate call is made to a delegate that isn’t visible in the context.
The E_TYPPARM error message now includes information on the argument type and parameter type: "Cannot pass type argumentType to type parameterType." For example:
Background compile operations now include safeguards to prevent pop-ups for certain internal errors.
We resolved an issue where projects using circular proto-only references would produce false duplicate symbol errors during builds in some cases. The build process now correctly handles these scenarios.
The Synergy .NET compiler now reports a level 3 warning ("%DBL-W-URESULT, Precedence of operator <operator> may cause unexpected results at runtime") when an assignment operator (+=,-=,*=,/=,|=,&=) 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.
SDI - 2025.10.2527
October 7, 2025
Visual Studio Integration
We fixed a background compilation issue that could cause exceptions and lead to a bad IntelliSense state.
When used with certain Synergy DBL keywords, Find All References now correctly reports that no results were found instead of showing an empty window. This fix also prevents IntelliSense failures that could occur up to 30 minutes after the Find All References operation.
We fixed a regression (discovered in SDI version 2025.06.1647) where IntelliSense triggered the closest completion option when a completion character (e.g., a comma) was typed in a context where an identifier was expected. In this situation, the IntelliSense completion list sometimes included entries that were irrelevant.
Synergy/DE - 12.3.1.2024
LTS
September 12, 2025
SQL Connection
Synergy Language
We fixed an issue with dblproto that caused the traditional Synergy compiler to incorrectly report a PROTOMISMC error on Linux when a prototyped routine included a parameter defined as an array of non-CLS structures.
xfNetLink .NET
xfODBC
We fixed a problem with xfODBC that sometimes caused queries to omit results when optimizing by a key that contained mixed ascending and descending segments.
SDI - 2025.08.2277
August 14, 2025
Visual Studio Integration
We fixed an issue with Synergy .NET that caused a NullReferenceException when FRETURN returned a non-CLS structure from an alpha function.
We resolved an issue where using the "Any CPU" platform configuration for traditional Synergy projects caused IntelliSense failures. This included failures with features such as Go To Definition, code highlighting, and member dropdowns, along with a persistent "IntelliSense build in progress" message in the status bar. Additionally, the required .dbp file was not correctly generated in the .intellisense folder. These issues no longer occur when using "Any CPU" platform settings.
We fixed an issue that prevented echo commands in pre-build and post-build events from displaying to the Output window.
We fixed an issue where clearing the "Use common properties" checkbox on the Common Properties page of project properties could cause settings to disappear. Previously, if you cleared this checkbox, saved the page, closed it, and then reopened it, settings on this page would disappear, and saving the page in this state would also remove the settings from the Common.props file. This behavior has been corrected. Additionally, the Common Properties page now updates correctly when the Common.props file is modified outside of Visual Studio.
We added safeguards to prevent Visual Studio from crashing when processing assembly reference nodes.
Editor performance while typing in a very large file has been improved to reduce hangs and increase responsiveness in operations such as colorizing tokens and offering completion IntelliSense.
We fixed an issue where assigning a scoped decimal structure (e.g., mystructure[]) to an alpha variable caused an InvalidProgramException at runtime.
structure struct1
nocode3, 9d1
endstructure
main
record
applycodes, a9, "101010101"
svar, struct1
proc
applycodes = svar.nocode3[] ;No longer causes exception We resolved an issue where insert/toggle comment commands (ctrl+k, ctrl+c and ctrl+/) were incorrectly inserting the ! character as the comment character.
In Synergy .NET, the maximum number of descriptor literals allowed in a DBL program has been increased from 65,535 to 121,999. To prevent issues with the .NET runtime, a warning (W-NOTSUPT) is now reported when more than 60,000 descriptor literals are used, indicating that debug symbols will be reduced at runtime. If 122,000 or more descriptor literals are used, an error (E-NOTSUPT) will be reported.
We fixed an issue that caused an "index out of range" exception when faster.core.dll was referenced by a project.
We fixed an issue with Synergy .NET where assigning an alpha to a scoped decimal array (e.g., myarray[]) caused an InvalidProgramException at runtime.
We resolved an intermittent issue with the internal access control mechanism for IntelliSense symbol files, which could prevent background compilation from completing.
The first time you open Visual Studio after installing or updating SDI, a dialog opens with options that enable you to either participate in or opt out of the Synergy DBL Integration Improvement Program. We fixed an issue that caused this dialog to continue to open even after the opt-in option was selected if this option was selected after updating SDI when the opt-out option had been selected for the previous version of SDI.
- When hovering over structure fields.
- When used on statements that use parentheses to specify an array element, such as myarray(dvar) in the following:
myarray ,13[d1] dvar ,d2 . . . myvar = myarray(dvar)The ILASM error "unable to find forward reference label" is no longer mistakenly reported when an EXIT statement is in a FINALY block in Synergy .NET code.
Referencing a record with no fields in Synergy .NET code no longer incorrectly results in an INTCMPERR error ("curDataDiv is 0: variable not hoisted").
We fixed a runtime exception that could occur in non-debug builds when a program contained a subroutine with a local record and another subroutine with both a non-local record of the same structure and a reference to a field in that record.
Synergy/DE - 12.4.1.1003
June 13, 2025
Repository
We added a new "Import type" dropdown to the Load Repository Schema dialog to support the ability to load schema from separate files. This makes it possible to use schema files more effectively with version control change tracking. When "Separate files" is selected as the import type, you must specify the directory from which the files will be loaded. Only files with the .sdl extension will be loaded.
SQL Connection
We have added the ability to retrieve the return value from a SQL Server stored procedure. See the 12.4 SQL Connection documentation for details.
Synergy Language
UI Toolkit
xfNetLink .NET
xfServer
Synergy/DE - 12.3.1.2023
LTS
April 15, 2025
SQL Connection
Synergy Language
xfODBC
xfServer
xfServerPlus
Synergy/DE - 12.4.1.1002
March 14, 2025
Repository
Rpsutl has a new command-line option (-nh) that suppresses the generation of the header (comment) block at the top of the generated schema file. This makes it possible to use schema files more effectively with version control change tracking.
Rpsutl has two new command-line options, -esf and -ed, that are used to generate schema to individual files, one for each definition. This makes it possible to use schema files more effectively with version control change tracking. The syntax is
rpsutl -esf [-ed export_dir] [-d main_file text_file]
If the -ed option is not specified, the files will be created in the current directory. Existing files will be overwritten.
A new checkbox has been added to the Generate Repository Schema dialog to suppress the generation of the header (comment) block at the top of the generated schema file. This makes it possible to use schema files more effectively with version control change tracking.
A new "Export type" dropdown has been added to the Generate Repository Schema dialog to support the ability to generate schema to separate files. This makes it possible to use schema files more effectively with version control change tracking. When "Separate files" is selected as the Export type, you must specify the directory to which the files will be generated. The default file naming convention is "type-name.sdl," where type is fmt, tmp, enm, fil, or str, and name is the name of the repository definition, e.g., str-customer.sdl.
It was possible to get a Toolkit error, or to see multiple sets of [ ] brackets displayed if, when in Move mode, you switched context to another row in the list with the mouse or scroll bar. This affected Enumeration members, Fields, Keys, Relations, Local Formats, and Tags, and has been corrected.
While in Move mode, if you switched context to another row in the list with the mouse or scroll bar, it was possible to get a UI Toolkit error or to see multiple sets of [ ] brackets displayed. This issue, which affected enumeration members, fields, keys, relations, local formats, and tags, has been corrected by this tracker and tr#33224.
Synergy Language
An issue was found where using whitespace in front of a code line prevented the warning "W-NOTSUPT: Continuation character & is not supported after comment" from appearing. This has been fixed so that using a continuation character on the line after a comment will still report the warning regardless of whitespace or indentation on those lines. This change was applied to both traditional Synergy and Synergy .NET.
The continuation character is correctly reported as a level 3 warning rather than a NOTSUPT error for -qrntcompat values of 12030100 (12.3.1) and higher.
We added a new data reference operation, ^VALDESCR. ^VALDESCR performs the functionality of ^VAL but returns a descriptor that prevents both
E_TYPPARM and E_ARGPASS errors when passed into a routine that takes
a descriptor while strong prototyping is being used.
We fixed the compiler to prevent an unexpected E_INVEXFTYP error when string is used as a type for an external function declaration.
We fixed a potential problem that could cause an SSL connection to time out early in certain unusual circumstances.
The traditional compiler converts an empty literal string within a USING statement to a default handler (i.e., ()), adding it after subsequent labels. This causes the USING statement to be evaluated out of order, potentially producing unexpected results. Removing this behavior would cause existing customer code to break, so instead the compiler now reports a W_URESULT warning (1046, "Empty alpha literal may cause unexpected results at runtime") when an empty alpha string is used in a USING statement and also a W_NOTEXE warning on subsequent default handlers. To avoid these warnings, we recommend that you examine and potentially remove empty alpha strings from USING statements and test them at runtime.
When calling a subroutine as a function, if there's a local external function definition for that subroutine whose return type is ^VAL, we now correctly use the ^VAL function convention (i.e., the function parameters exactly match the subroutine parameters).
xfServer
xfServerPlus
SDI - 2025.03.1285
March 5, 2025
Visual Studio Integration
We added the ability for a user to disable the SDI update notification window by setting a registry value named SkipUpdateCheck on HKEY_CURRENT_USER\Software\Synergex\SDI to true.
The obj\proto directory is now platform specific: an obj\proto directory is created for each built platform. Prior to this enhancement, any build, regardless of platform, would overwrite files in this directory, causing compiler directives and D_ADDR to result in changes in symbol behavior, which led to build and IntelliSense failures.
We fixed an issue that caused "DBP is already in use" errors during the background compilations used to generate IntelliSense information. These errors prevented the creation of new DBP files, which are necessary for the generation of new symbols.
Compiling a file that contained a global non-CLS structure and whose name included a hyphen character caused an unexpected ILASM error. This has been fixed.
An issue was found where using whitespace in front of a code line prevented the warning "W-NOTSUPT: Continuation character & is not supported after comment" from appearing. This has been fixed so that using a continuation character on the line after a comment will still report the warning regardless of whitespace or indentation on those lines. This change was applied to both traditional Synergy and Synergy .NET.
We fixed an issue that prevented linker errors from causing build failures for traditional Synergy projects.
When the ^VARIANT, or -qvariant, option is set in the project's compile property page, it will display the number that was input when hovering over the compiler directive in the Visual Studio editor.
The compiler now reports a W_URESULT warning (1046, "Empty alpha literal may cause
unexpected results at runtime") for an empty alpha literal within a USING statement, because it will match everything and subsequent USING statements will never be executed. To avoid this warning, we recommend that you examine and potentially remove empty alpha strings from USING statements and test them at runtime.
A warning will now be produced when a referenced project does not exist, making error reporting more user-friendly.
For multiple mainline projects that do not have a StartupObject set, selecting mainline files from Solution Explorer will no longer display the following error message: "Object reference not set to an instance of an object."
We resolved an unexpected failure that occurred when building a solution with an ELB project with the "-qvariant" option set on the project's compile property page.
We resolved an issue that sometimes caused projects to be skipped during Visual Studio builds. This issue primarily affected Visual Studio builds of Synergy repository projects, which use the SynergyDE build NuGet package, after a fresh clone of a code repository and prior to running a NuGet restore.
Handling for build error and warning messages has been updated to produce messages for all mainlines in a .NET multiple mainline project instead of just one.
The .intellisense folder is no longer generated in the same location as the multi-mainline source files. It will now always be generated in the same directory as the multi-mainline .synproj.
We resolved an issue where multi-mainline projects were failing to trigger a minimal analyze after loading or when edits were made to the multi-mainline file.
A FOREACH iteration over a generic previously caused a TYPMISMCH error when the generic was used before it was declared. This has been fixed.
For the Synergy .NET compiler, using the -doc option to produce XML documentation files will no longer generate multiple XML elements that have the same name attribute. This applies to documentation comments (starting with three semicolons on each line) that precede partial classes, partial interfaces, partial structures, and partial methods. For partial methods, the documentation comment on the method's implementation will be used for XML, and the documentation comment on the method's declaration will be ignored. For partial types (classes, interfaces, and structures), any partial type having a particular name (e.g., ExampleClass) will only use the last partial definition with a documentation comment to produce XML. The documentation comment for all other previous partial types with that same name (e.g., ExampleClass) will be ignored. Whenever a comment is ignored, a W-XMLDOC level 4 warning is reported, indicating the method or type associated with that comment. This change supports utilities that read XML documents but can't process duplicate names.
.NET multiple mainline projects now base the output directory for documentation files off of the synproj file location rather than the location of the mainline file.
We fixed a concurrency issue that would intermittently cause a type that was designated as a boxed structure (such as @System.Guid) for a field, property, or parameter from an assembly to be resolved as @System.ValueType, which caused various type mismatch compiler errors.
We fixed an issue where "Other options" specified on the Compile page for traditional Synergy projects were not passed to background compile operations, preventing IntelliSense from reflecting these settings.
We improved the build error that is generated for a Synergy project when the "Working directory" field (on the Application page of project properties) specifies an invalid directory.
A build error previously occurred while building .NET multiple mainline projects on an environment with .NET 9 installed for a missing _ChooseAppHost target. The target dependencies for .NET multiple mainline projects have been updated to include a different target that exists in both .NET 8 and .NET 9.
The "Committed by pressing the space bar" option on the IntelliSense page for Synergy DBL text editor options has been removed because it was conflicting with the "Default IntelliSense completion mode" option in the Visual Studio Advanced text editor options. (It would sometimes prevent this default from being used.) Synergy completion mode behavior is now controlled by the "Switch between automatic and tab-only IntelliSense completion" command (on the Edit > IntelliSense menu), which derives its initial state for every Visual Studio session from the "Default IntelliSense completion mode" setting. This determines whether an item is selected (boxed with a background highlight) or suggested (boxed without a background highlight) by default in completion sessions. When an item is selected, any valid commit character should complete the session with the selected item. When an item is suggested, only tab should complete the session with the suggested item. Any character or key other than those should close the session without completing the selected or suggested item. This behavior may be slightly different than in previous releases but should be more consistent going forward.
The dblnet compiler now emits a code that ensures a static constructor is run when compiling with -netcore, even if no static fields in that class are being set.
Go To Definition no longer fails to execute for repository and library includes when they are placed in the global scope.
We fixed a compatibility issue that was causing a build failure for Script projects on machines with SDE versions lower than 12.3.1.
We updated our NuGet dependencies for SDI to address moderate/high severity vulnerabilities. As a result of these updates, we have increased our minimum supported version of Visual Studio to 17.8. To be able to install newer versions of SDI, you must use Visual Studio versions 17.8 or higher.
When a Synergy .NET multiple mainline project is built from the command line, the mainline files that are built in the process are now listed in the output.
Synergy/DE - 12.3.1.2022
LTS
January 27, 2025
Installation
The environment variables VORTEX_HOME and GENESIS_HOME are used for different purposes by Connectivity Series products, but both point to the same location by default on Unix. Users may want to redirect GENESIS_HOME to point to the location of system catalogs, but VORTEX_HOME should not be modified. However, the setsde script used the value of GENESIS_HOME to set VORTEX_HOME, so if a user edited setsde to change GENESIS_HOME, that change might also change VORTEX_HOME and prevent Connectivity Series from working correctly. To avoid this problem, we've modified all newly created copies of setsde so that GENESIS_HOME and VORTEX_HOME are set independently. Now if GENESIS_HOME is modified in setsde, it shouldn't affect VORTEX_HOME or any other variable.
Repository
SQL Connection
Synergy Language
Opening two channels to TT: in .NET and closing the second no longer results in an unhandled exception. In addition, this avoids an unexpected exception when closing a Toolkit .NET program while running under a debugger.
For dbs.exe and the .NET runtimes, when a file with Unix line endings (LF) instead of Windows line endings (CRLF) was read via redirected input to TT:, the READS would terminate early with a $ERR_EOF error. In addition, if a line was terminated by EOF rather than a line terminator, the text on the line was ignored. This has been fixed.
An "Invalid date” ($ERR_INVDATE) exception from %WKDAY is now reported immediately at the correct line.
UI Toolkit
xfODBC
The sorting operation no longer results in duplicate values in queries with both the DISTINCT keyword and an outer join.
The correct number of rows is now returned on a query that uses TOP or SKIP to select a list with an integer literal in the first position.
xfServer
SDI - 2024.10.2239
October 25, 2024
Visual Studio Integration
With Synergy .NET, when INIT was used on a fixed or pseudo array that had no initial value, it cleared only the first element of the array. This has been fixed so that it now clears the entire array, which matches INIT's behavior with traditional Synergy.
The "Latest" setting for "Target Synergy runtime" (on the Build page of project properties) now selects version 12.5.1, which currently corresponds to the 12.4 feature release. Previously "Latest" targeted 12.3.1.
The Synergy .NET complier now reports an E_ATOS error when a group or record is passed as an argument to a parameter that's a larger structure. Previously, this caused an exception (SynDataException).
The Synergy .NET compiler no longer mistakenly reports an INVCALL error on a %MEM_PROC call when a subsequent lambda expression includes a subroutine call of MEM_PROC.
We fixed an issue that caused inconsistent red squiggle behavior for erroneous code in Synergy code files when these files were opened, as code was modified on the same line as erroneous code (which sometimes caused red squiggles to briefly appear), and when modifying code on other lines.
Startup Object highlighting now persists when an multiple mainline project is closed and then reopened. Previously, the highlighting would disappear when the project was reopened, though the Startup Object setting was still in force.
The Synergy .NET compiler now reports an E_NOFXD level 3 warning when performing # rounding on an expression that includes implied-decimal (d.) operands.
The default runtime is now 12030100 for dbl, dblnet, and dblink. This is the default version if -qrntcompat is not specified.
New .NET and .NET Standard class library projects will now have "3 - Don't display warning levels higher than 3" as the default "Set the warning level" setting. ("Set the warning level" is a setting on the Compile page of project properties.) Previously, the default setting for this was "0 - Don't generate any warnings" for these project types.
The SDI Update window is no longer displayed in Visual Studio when the latest version of SDI is installed.
We fixed an issue that caused hover-over IntelliSense for an "i" data type with a set size (e.g., "testvar, [4]i4") to display incorrectly (e.g., as "testvar, [#]i44").
We added diagnostic logging to dblnet to report information about asm2dbp. The asm2dbp program is a utility related to the Synergy .NET compiler that takes .NET assemblies and generates DBP files (prototype files). These diagnostics can be enabled by setting the environment variable ASM2DBP_DIAG to 1. To disable the diagnostics, delete the ASM2DBP_DIAG environment variable. Log files are written to the Synergex directory under the LocalAppData path (i.e. navigate to LocalAppData/Synergex where LocalAppData is an environment variable containing a directory path on Windows).
With traditional Synergy projects, the following settings (set on the Compile page of project properties) were not passed to background compilations used behind the scenes for IntelliSense:
- Require prototype usage (-qreqproto),
- Define all undefined functions as ^VAL (-X, -qimplicit_functions).
Synergy .NET now supports ^REF parameter types that are value types, including
non-descriptor integer types and CLS structures. (Other ^REF types cause E_NOTSUPT errors.) Note that the caller must also encapsulate argument
with ^REF and the type must match exactly; otherwise an E_TYPPARM error will be reported.
We fixed an issue that sometimes caused a SynergyTasks.DBLinkT error when a multiple mainline project had more than one mainline with the same name but different file extensions (e.g., mymain.dbl and mymain.abc).
We fixed an issue that caused Solution Explorer to indicate that it was infinitely loading (it displayed a continuously spinning icon) when a multiple mainline project was expanded in Solution Explorer.
The continuation character is correctly reported as a level 3
warning rather than a NOTSUPT error for -qrntcompat values of 12030100
(12.3.1) and higher.
Synergy/DE - 12.3.1.1020
LTS
October 14, 2024
License Manager
Synergy Language
Patching an ISAM file that contains change tracking using isutl -p no longer loses snapshot timestamp information. Affected patch options include enabling or disabling the network encryption flag and enabling or disabling resilient and full resilient.
The traditional Synergy and Synergy .NET 12.3 compilers now recognize the DBLV123 system define when -qrntcompat is greater than or equal to12030100.
Freeing a snapshot (down to 1 or 0 remaining snapshots) previously could cause DELETE entries to be malformed, causing a file verify (isutl -v) to report a data mismatch with leaf or invalid RFA errors. This has been fixed.
When creating an ISAM file using a file description (FDL, XDL, or PAR), NULL key values that are specified using a quoted string ('0', " ", or '\0') are now converted to the correct values as documented in the ISAMC documentation.
Previously, when ctutl was used on low-overhead change tracking data (e.g., with no duplicates or fixed-length records), records that were freed by either the free or rollback operation were deposited in the free list with a partially cleared free list link, causing an %ISUTL-E-28: Data freelist error. This has been fixed.
UI Toolkit
We fixed a regression in the script compiler that could cause a "Bad index" error at runtime if a menu column in a window script used lists to group related entries, and the runtime attempted to enable or disable a list of entries in the column. Any window library built with version 12.3.1.1014 of the script compiler (or any 12.2 version) should be rebuilt to take advantage of this fix.
SDI - 2024.09.2004
September 5, 2024
Visual Studio Integration
Previously, if a build failed for a mainline in a multiple mainline project due to link errors, the other mainlines were not built. Additionally, builds did not occur in parallel. We updated this behavior so that builds for multiple mainline projects occur as if each mainline were an individual project. Mainlines are now built in parallel, and a mainline build failure due to link errors does not prevent other mainlines from building.
Microsoft is ending support for .NET 6 in November of 2024 (https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core), so we have updated Synergy .NET project types to default to .NET 8.
We fixed an issue that caused debugger information to fail to appear when Break All was used immediately after launching the Visual Studio debugger for traditional Synergy code. For instance, the Call Stack window would sometimes be blank, and in some cases the editor would become blank.
PEVerify is now run for all build outputs, including DLL and EXE build outputs, for .NET Framework multiple mainline projects.
The Go To Definition feature now works for .NET multiple mainline projects. Previously if you used this feature for a function for which another version existed in another project, Go To Definition would not always go to the correct file.
When opening a Synergy .NET solution in Visual Studio, an extra console window with the title asm2dbp.exe briefly appeared and disappeared upon loading the solution. This has been fixed so the extra window is no longer shown. To obtain this bug fix, both SDI and the Synergex.SynergyDE.Build NuGet package must be updated.
We fixed an issue that sometimes caused the Visual Studio UI to hang due to processing colorization changes when editing Synergy files. This was particularly true for large files with many method calls, and it resulted in delays when scrolling through the file or when typing.
We fixed an issue with IntelliSense for Synergy .NET programs that was causing intermittent delays and missing display data.
The compiler for Synergy .NET no longer mistakenly reports an E_INVTYPSIZ error on a line that follows a FOREACH AS statement. The workaround for this issue was to eliminate the AS part of the FOREACH.
We fixed an issue that caused "invalid output path" build errors when building .NET Multiple Mainline projects.
With a Synergy project that is source controlled via TFS (Team Foundation Server), using the "Get Latest Version (Recursive)" function with the Synergy project would fail with an "Unspecified Error". This has been corrected.
For Synergy .NET projects, the option to permanently delete a file from the Solution Explorer did not update the .synproj file, causing subsequent attempts to build or rebuild to result in an error stating that "Source file 'filename' does not exist". (This option is invoked by right-clicking the file, selecting Delete from the context menu, and then clicking the Delete button.)
When the get or set method of a property had capitalized letters (e.g. Get/Set or GET/SET), an unexpected E-NOOVR error ("No suitable method/property found to override") would occur when trying to override the property. This has been fixed so that the E-NOOVR error will no longer occur, but a W-CHGCASE (change case) warning will be issued instead. The W-CHGCASE warning indicates that the case of the overriding get or set method was automatically changed to match the base property. To remove this warning, make sure that the case of the base property methods exactly match those of the overriding property methods.
We fixed an issue that prevented the build system from detecting when a script project was out of date due to updates to the referenced repository.
We fixed an issue that prevented the WPF designer from loading for C# projects. The WPF designer no longer loads by default for Synergy WPF projects (because these project types are deprecated), but it does load for Synergy WPF projects when you select the designer view from the XAML view, and it now loads for C# projects when a solution includes both C# and Synergy projects.
When Visual Studio instances are running under different user contexts (e.g., a non-admin instance and an admin instance), attempts to retrieve the version information no longer result in unexpected exceptions due to permission restrictions. We enhanced SDI to handle such cases gracefully, ensuring reliable version information retrieval regardless of the user context.
We fixed an issue with the way the SDI Update window retrieved values from the Windows registry. This issue would sometimes result in NullReferenceException and cause Visual Studio to crash.
The debugger now steps correctly for a conditional statement for a single line at the end of a begin/end block in Synergy .NET code. Previously, the debugger would incorrectly step to the single line even if the conditional statement evaluated to false. For example, the debugger would step to the Console.Writeline line of the following:
begindata ok, boolean, trueif (!ok)Console.WriteLine("Fail")end
We fixed issues with paths and output file handling that prevented the up-to-date check for Synergy .NET and .NET Framework multiple mainline projects from functioning correctly, causing these types of projects to rebuild with every solution build.
Synergy/DE - 12.4.1.1001
August 30, 2024
License Manager
Synergy Language
Using a Windows drive-relative path specification (e.g., c:prog.exe) now runs the expected program when running ctutl.exe, ismvfy.exe, or irecovr.exe.
A level 4 ATOS warning ("Passing alpha to structure requires alpha of at least structure size") now occurs when a group or record is passed as an argument to a larger structure parameter.
Previously, when ctutl was used on low-overhead change tracking data (e.g., with no duplicates or fixed-length records), records that were freed by either the free or rollback operation were deposited in the free list with a partially cleared free list link, causing an %ISUTL-E-28: Data freelist error. This has been fixed.
The correct SnapshotInfo entries are now loaded into the ChangeTracking object that are reflected in the file. There is always one and only one entry of SSType Beginning, which contains the earliest snapshot number (either the initial 0 or the last freed snapshot) with DateTime representing the time of file creation, last clear, or last freed snapshot) with all Inserts, Updates, Deletes, and Ulinks set to 0. For each applied snapshot, there is one SSType Snapshot that will contain its unique snapshot number, the datetime it was applied, and all Inserts, Updates, Deletes, and Ulinks that were recorded while that snapshot number was the current snapshot (or SSType Ending) prior to that snapshot being applied. Lastly, there is always one and only entry of SSType Ending whose snapshot number is the current snapshot (the snapshot currently recording changes to the file) with DateTime representing the time the ChangeTracking object was created (or the time the last Refresh() method was called) with Inserts, Updates, Deletes, and Ulinks reflecting the changes since the last applied snapshot. Due to this change, use of these snapshot entries may result in different behavior. Prior behavior included change accumulators always being recorded in the prior snapshot and never including the last snapshot entry.
A warning has been added to the 32-bit traditional Synergy compiler. (It does not apply to 64-bit traditional.) For addition, subtraction, multiplication, and division between two values, a W-INVCAST warning ("Invalid cast") will now be given if casting one or both values to i8. However, the warning will not be given if either value is already an i8 field, literal, etc. The purpose of this warning is to indicate that casting to i8 has no effect on whether the current expression does 32-bit or 64-bit math; actual i8 variables should be used instead. To disable this warning, pass the option -WD=699 to the compiler.
When a string variable is used as the loop element for a FOREACH loop and the collection is a real array of type alpha, a new TYPMISMCH error ("Type mismatch between type and type") will be reported to avoid an issue at runtime. The user can change the string variable to an alpha variable in order to get the loop to work.
A level 4 W_PASSUR warning ("Passing alpha to group of larger size for parameter <#parmnum> could give unexpected results") now occurs when an alpha field, group, or record is passed as an argument to a larger parameter group.
The parser no longer reports an unexpected E_INVTYPSIZ error due to an earlier FOREACH-AS statement.
When you run isutl -c, you will now be prompted to confirm with "y" or "n" that you want to clear the ISAM file. If your file specification includes a wildcard, for each file, you'll be prompted, "You are about to clear filename. Do you wish to continue: (Yes/No/All/Quit)?" Answering "y" means clear this file, "n" means do not clear this file, "a" means clear this and all subsequent files, and "q" means do not clear this file and quit now. We also added a -y option to isutl -c, which suppresses the confirmation query by automatically responding "y".
Patching an ISAM file that contains change tracking using isutl -p no longer loses snapshot timestamp information. Affected patch options include enabling or disabling the network encryption flag and enabling or disabling resilient and full resilient.
An E-NOTSUPT error ("Token is not supported") will be reported on a FOREACH loop that iterates over a real array that is a class or structure field. Previously, the FOREACH only got the first element of the real array in a class or structure. The new error message indicates that a FOR-FROM loop will work instead. There was also a problem where putting a dynamic array and a real array into a class and iterating over both using FOREACH caused a segmentation fault at runtime. The NOTSUPT error will prevent this case as well.
An "Assembly not found" error no longer occurs when a C# project references a Synergy .NET project with a Synergex.SynergyDE.synxml NuGet package reference. (To fix this problem, we strong-signed assemblies that are part of Synergex.SynergyDE.synrnt NuGet package.)
An access violation no longer occurs when returning a literal for a method whose return type is an array of boxed alphas.
Freeing a snapshot (down to 1 or 0 remaining snapshots) previously could cause DELETE entries to be malformed, causing a file verify (isutl -v) to report a data mismatch with leaf or invalid RFA errors. This has been fixed.
A FOREACH loop with an implicit element type sometimes caused an internal compiler error if the element type was a user-defined nested class declared after the loop in the same file. FOREACH loops now infer the type properly regardless of where the element class is placed in the file.
Performing a free operation on change tracking snapshots no longer blocks I/O by other processes, allowing frees to be performed on live data files.
The compiler no longer reports an unexpected NOTSUPT error when ^NAMEOF contains a parameter group and the source is compiled with the -qcheck option.
When creating an ISAM file using a file description (FDL, XDL, or PAR), NULL key values that are specified using a quoted string ('0', " ", or '\0') are now converted to the correct values as documented in the ISAMC documentation.
xfODBC
xfServer
SDI - 2024.07.1696
July 3, 2024
Visual Studio Integration
The "dotnet add" and "dotnet add reference" commands are now supported for all project templates in Synergex.Projects.Templates.
We added templates for the "Multiple Mainline (.NET)" and "Multiple Mainline (.NET Framework)" project types to the Synergex.Projects.Templates NuGet package.
An access violation no longer occurs when returning a literal string for a method whose return type is a boxed alpha array.
We fixed a Synergy .NET compiler issue that resulted in an access violation for an overloaded method with a parameter that was an array of boxed bytes.
We fixed an issue that prevented Start Debugging from working in Visual Studio 2022 version 17.10.x.
New and unexpected %DBL-E-REFTYPMSMC errors no longer occur after updating SDI when there have been no source changes.
We improved SDI's problem manager logging by implementing a log rotation mechanism that prevents memory leaks.
We fixed an issue that caused a "missing method" exception at runtime when using JsonElement's indexer. This fix also prevents NOPRPMTH errors from occurring when property method names differ in case from "get" and "set" (e.g., "Get" or "Set") and the property is from another assembly.
We fixed a problem with the SynNETUnitTest project template (in the Synergex.Projects.Templates NuGet package) that caused projects created from this template to have an incorrect import statement.
We fixed a mismatch between the name of the .dbl file that's added to a newly created traditional Synergy unit test project created using the syTradUnitTestProj template (in the Synergex.Projects.Templates NuGet package) and the .dbl file specified in the .synproj file for the project.
We fixed an issue that sometimes caused an error when a build was stareted in Visual Studio while project property pages were open.
We fixed an issue with IntelliSense-related processing for SDI that caused unintended errors and red squiggles to appear intermittently (though these did not affect builds).
Synergy/DE - 12.3.1.1018
LTS
June 28, 2024
License Manager
Synergy Language
xfODBC
Timeouts set with "SET OPTION TIMEOUT" will now correctly apply to all queries that haven't fetched any rows within the specified time. Note that this timeout applies to each fetch operation but not to the total length of time for a query. (In other words, massive result sets will still take a long time to return, regardless of timeout value.)
SDI - 2024.05.1447
May 3, 2024
Visual Studio Integration
We added an experimental option to reduce load times for Synergy projects. To invoke this feature, set the SDI_FAST_MODE environment variable to any value before starting Visual Studio. Note that this functionality may cause project references to load in an incorrect order, which could put a project in an invalid state.
SDI now supports Synergy .NET projects with multiple Synergy mainline programs. As part of this support, SDI includes two new project templates, “Multiple Mainline (.NET)” and “Multiple Mainline (.NET Framework)”, that enable you to create .NET 6+ or .NET Framework projects with multiple Synergy mainline programs that share project settings and references. A project created with one of these templates results in an application that is distributed as multiple EXEs. Each mainline source file results in a separate executable that can be run and debugged separately.
We fixed an issue where the Synergy DBL text editor formatting options did not get applied until the Tools > Options dialog page had been opened.
A FOREACH loop with an implicit element type sometimes caused an internal compiler error if the element type was a user-defined nested class declared after the loop in the same file. FOREACH loops now infer the type properly regardless of where the element class is placed in the file.
We fixed an issue that sometimes caused the error "SynergyTasks.DBLinkT task failed unexpectedly" when building a solution.
We fixed an issue that occurred when casting multiple function arguments to a Synergy integer type. Previously, a value cast in the last argument replaced values for the previous arguments in the same statement.
We fixed an issue that prevented the debugger from breaking on breakpoints that precede a lambda in an ASYNC method.
The compiler for Synergy .NET now reports an E_NOSPECL error when the braces for an inline lambda expression are missing.
We improved logging that occurs when a catastrophic failure occurs while a background compile is running to generate IntelliSense symbols for a .NET or .NET Framework project. This logging now writes the error text to the background.log file to make it easier to diagnose background compile failures with these platforms.
We fixed an issue that caused a NOTSUPT error ("due to incorrect size...") when there is a structure is within a record, group, or structure. Additionally, the workaround for this issue (DBLDIR:\bin\dblnet.hcs) is no longer supported.
The Synergy .NET compiler no longer mistakenly reports an E_NTTREF error for a parameter that is a structure from an assemble and that structure is defined in a namespace that has a class with the same name as the namespace.
We fixed an issue that caused unexpected results for arithmetic operations such as subtraction with two i4 variables that had been cast to i8.
We fixed the parser to properly report a lambda syntax error when the return type is incorrectly declared on a lambda.
With Synergy .NET, the "Working Directory" setting, which is set on the Application page of project properties, is now stored as a relative path (relative to the solution directory).
We now prevent a NullReferenceException error at runtime when declaring a sized descriptor parameter on an ASYNC method.
The compiler for Synergy .NET now reports an IVBAD error if an initial value is provided for a boxed enum or an array of boxed enums.
We resolved problems with IntelliSense showing unexpected errors/red squiggles on the wrong line when opening a file in the Visual Studio editor.
We fixed an issue that prevented colorization from being refreshed for code in an .IFDEF statement when the .IFDEF condition was modified.
We reinstituted a warning message the displays when prototype files (.dbp files that are used internally for IntelliSense symbols) are locked for I/O for extended periods.
Casting an enumeration property to an integer no longer causes an error to occur when the compiled program is checked with PEVerify or ILVerify.
When the final parameter for a routine call is "end", and this is on a separate line that begins with an ampersand (&), IntelliSense no longer mistakenly interprets "end" as the conclusion of a BEGIN-END block. Previously, this was misinterpreted, resulting in incorrect indentation for subsequent lines of code.
Synergy/DE - 12.3.1.1014
LTS
March 8, 2024
License Manager
SQL Connection
Synergy Language
When SYN_RESIZE_SCALE was used, window elements often had incorrect dimensions when windows were restored from maximized. The dimensions of the window and its components should now be consistent after restoration.
(.NET) We fixed a Stack Overflow exception in the HTTP document transport API that occurred when sending large documents in post, put, patch, and delete requests by updating the way we allocate memory for documents in the request.
We resolved an issue with the traditional debugger that occurred during an attempt to run the same OPENELB command multiple times. After saving debugger settings by running the SAVE command, the output file contains only the unique ELBs that were opened during the debugging session.
UI Toolkit
When using the new BUTTON= in the fonts section of synergy.ini, a size other than 9 or 10 did not result in correct button sizing. This has been fixed.
In 11.1.1c through 12.1.1.3292, the default font for the status bar was incorrectly changed from Arial to Consolas. (Consolas is a monotype font, while Arial is a proportional font.) Arial is now used by default.
In versions 11.1.1c through 12.1.1-3292, the default button size was 10, which caused size and scaling problems for existing applications that expected it to be 9 as in prior versions. This default button size is now 9 again. As most customers default to Consolas;10 from the default app size, they can add BUTTON=SYSTEM;10;A in the font section of synergy.ini to restore the post-11.1.1c behavior. If SYN_RESIZE_SCALE is used, ARIAL;10;A is preferred to SYSTEM:10:A.