RAD Studio 10.4 Sydney was a large release and I was certainly excited to get my hands on it. Unfortunately, the release process was a bit messy and some initial cleanup was required (see my previous blog post for some of the details.) After using the new version for a few weeks, it became quite apparent that there were some major problems with the LSP-based CodeInsight feature which was one of the hallmarks of the release. I reluctantly disabled this new feature as it became a distraction due to some errant functionality.
The second patch for 10.4 Sydney has been released and the excitement is somewhat rekindled due to the list of 50+ customer reported fixes being included. There are also some internal issues corrected within the IDE and VCL Styles as discussed in David Millington’s blog post. It’s a rather large patch (nearly 200 MiB) but once again the install process isn’t automated as you should use GetIt to download the patch and then manually apply it. David has another blog post full of screenshots to act as an install guide for patch #2. (Note that there was a report of a corrupted download via GetIt so if you have similar problems you can download patch #2 directly from my.embarcadero.com but also note that the Welcome page may not recognize that you have installed Patch #2 as seen in RSP-30098.)
There are some issues with Patch #2, with a regression posted by Stefan Glienke: RSP-30078. (Temporary workaround is removing record constraint as Dalija Prasnikar notes in RSP-30126.) Here is the detailed description from RSP-30078:
With Patch 2 probably in order to fix RSP-28761 the record constraint now disallows any record with managed fields.
In context of allowing a generic record to be a variant record it makes sense to not allow T to be a managed type because that can cause some severe defects with the variant record.
Up until before 10.4 patch 2 it was possible to put a record with a managed field into such a variant record and the compiler properly called initialization and finalization code for the variant record - however as soon as the data in the variant record was not for the record with managed field things could blow up (which is why non generic variant records don’t allow managed types in them).
So there were conflicting specs here at work:
* a generic record can be a variant record
* the record constraint allows records with managed types (and probably should allow also the new custom managed records to be consistent)
There is one thing that should be fixed though which worked before:
Putting any managed type into a generic variant record like in the before mentioned RSP-28761 without messing with the record constraint.
A regular generic type with the record constraint should allow all kinds of records and other value types but a generic variant record (which is only possible with the record constraint) should only allow non managed types.
On a positive side, Stefan did add a comment in a Praxis thread that “Spring4D is not negatively affected by Patch2” (But note a potential IDE failure from a Spring4D user that is documented in RSP-30092.)
According to a comment by David yesterday on his installation guide blog post, Patch #3 will be released soon with further critical fixes for 10.4 Sydney. The next patch or two should really solidify 10.4 and then we can really look forward to the eventual release of 10.4.1 Foraker. (I’m hoping that a fix for RSP-30088 will be in the next patch. This particular issue should prompt some further discussion on always running your tests in Debug and Release modes if you aren’t already doing that today!)
Given the release cadence for 10.3 Rio, I am guessing that 10.4 Sydney Update 1 will be released around the first week of September. The last roadmap was from August 2019 and I’m also guessing (hoping) that a new one will be published before 10.4.1 is released. The next roadmap will be very interesting to see where Delphi and C++ Builder are headed!