With this week's Stable release of Elements, build .2627, we've increased the major version number from 10 to 11 (insert a Spın̈al Tap joke here). This is to celebrate the newest addition to our language family, Mercury, but also the range of amazing progress Elements has made since we went to our weekly shipping schedule, back in — wow — late 2017. Three and a half years of innovation, we thought, deserve a new version number.
Let's look at some of the things that are new or recently enhanced.
Mercury
Mercury it the most significant feature we're shipping this week, so much that it deserves its own blog post that goes into more detail. The TL;DR: Mercury is the Visual Basic.NET language, on steroids and for all Elements platforms.
C# 9.0
Version 9.0 has been a major milestone for the C# language, with many exciting enhancements. With Elements 11, RemObjects C# now supports all the major enhancements introduced by Microsoft for this round, and we will be finishing off the few remaining smaller changes, over the coming weeks.
Exciting enhancements in C# 9.0 include support Swift-like main()
entry points, static anonymous functions (also now in Oxygene), init-only properties, the new record
-style classes, and target-type inference on new
.
Delphi Compatibility
Another area that has received a tremendous amount of attention of the past year or so is backwards-compatibility of the Oxygene language with legacy Delphi code. The two languages have always been very similar, with Oxygene being a (very large) super-set of Delphi, but there have been differences.
We have been working closely with a number of customer teams that have ported large Delphi code bases over to Oxygene (targeting either .NET or – closer to Delphi's home turf – Island/Windows), and great effort has been put into allowing Oxygene to compile all but the most corner-case Delphi idiosyncrasies, when Delphi Compatibility Mode (DCM) is turned on. Delphi RTL has also been extended and refined, in the process.
We expect 99.9% of Delphi-syntax code will now compile with Oxygene, in DCM ??. This makes it it only easier to port code, but also to share it between Delphi and Oxygene.
Go
Gold, our implementation of the Go programming language, first shipped around this time last year, to great success, and has made it possible for Elements users to access a vast eco-system of existing open source libraries from their .NET and Island projects. Over the past months, the team has been working on many under-the-hood enhancements to our Go support, which improve how reference types work, further enhance performance, and bring a new Memory<T>
type for a GC aware pointer in Elements.
These changes have been rolled into the main branch for Elements 11, and will, among other things, allow the import and use of even more existing Go libraries.
WebAssembly
WebAssembly development with Elements has taken a big leap forward this week, with the introduction of our new CodeBehind support for HTML. With this new feature, you will be able to access the named elements on your HTML file from WebAssembly in a strongly typed fashion. Much like with XAML on .NET, a second code part is generated at compile time that makes your controls and other elements available to your WebAssembly code automatically. And new templates have been added to make stating a new project with this feature easy:
And So Much More
And as always, these are just some a few major highlights. The entire Elements tool chain, with its now six languages, three IDEs, EBuild, libraries and other tools and components continues to get better every week, with features and enhancements to all aspects of the product. Make sure to check out out Whats New page, and the weekly build logs, to find all changes and improvements.
What's Next
Aside form the number, not much will change with how Elements ships. Today's build .2627 is "just" an incremental update over the week prior's build, and we will continue the same development model — which we think has proven very successful — of a new build every Friday.