Release Notes

Filter
SDI - 2024.09.2004
September 5, 2024

Visual Studio Integration

New Features

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.
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.

Bug Fixes

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. 
We fixed an issue that prevented .NET and .NET Framework multiple mainline projects from building when the project folder name included a space.
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:

begin
   data ok, boolean, true
   if (!ok)
      Console.WriteLine("Fail")
end
When a routine call is used for an initialization value in the data section, the compiler now provides more detailed and descriptive error text ("Feature not yet implemented: Runtime initialization of <field> not supported"for the E_NOTIMPLE error that it reports on the offending line.
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. 
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.
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
D_NETCORE is now displayed for .IFDEF IntelliSense completion. 
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.
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.)
We fixed an issue with IntelliSense for Synergy .NET programs that was causing intermittent delays and missing display data. 
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.
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 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. 


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.
PEVerify is now run for all build outputs, including DLL and EXE build outputs, for .NET Framework multiple mainline projects.
Using a global common in Synergy .NET no longer causes an unexpected ILASM error.
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.
SDI - 2024.07.1696
July 3, 2024

Visual Studio Integration

New Features

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.

Bug Fixes

We improved SDI's problem manager logging by implementing a log rotation mechanism that prevents memory leaks.
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 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 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 an issue that prevented conditional breakpoints from working with Synergy .NET projects. 
We fixed an issue that caused Visual Studio to crash intermittently when editing DBL files in traditional Synergy projects. This issue was caused by a threading-related access violation in DBL’s IntelliSense processing.
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).
SDI - 2024.05.1447
May 3, 2024

Visual Studio Integration

New Features

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 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.

Bug Fixes

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 fixed an issue that prevented colorization from being refreshed for code in an .IFDEF statement when the .IFDEF condition was modified.
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.
Casting an enumeration property to an integer no longer causes an error to occur when the compiled program is checked with PEVerify or ILVerify.
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. 
We resolved problems with IntelliSense showing unexpected errors/red squiggles on the wrong line when opening a file in the Visual Studio editor.
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 fixed the parser to properly report a lambda syntax error when the return type is incorrectly declared on a lambda.
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 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.
Synergy .NET Framework projects now support the PackageReferences NuGet package management format. 
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 prevented the debugger from breaking on breakpoints that precede a lambda in an ASYNC method.
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 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 sometimes caused the error "SynergyTasks.DBLinkT task failed unexpectedly" when building a solution.
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.
We fixed an issue that sometimes prevented IntelliSense from loading for Synergy .NET projects.