Languages Platforms IDEs | Download Pricing |

What's New in Elements

Elements ships weekly new builds, which always bring a continuous stream of fixes, improvements, and new features big and small.

This page provides the highlights for each build; please also check each week's change log for a detailed list of all fixes and enhancements.

New in Q3/2023

  • New Island/Delphi platform for using Embarcadero Delphi libraries and creating Delphi object-model classes.
  • Oxygene: Support for using the colon operator on indexers
  • Oxygene: Required properties
  • Oxygene: Simplified custom operator declarations

New in Q2/2023

New in Q1/2023

  • Yet once again more Delphi Compatibility improvements in Oxygene
  • Support for .NET Core 8 (Preview)
  • C# 11 Language Features
    • main attribute prefix
    • Lambda default parameters
    • newline in string interpolation
    • file level type visibility
    • Lambda default parameters
    • nameOf(parameter)

New in Q4/2022

  • Fire/Water:
    • Git integration
    • Dim inactive code sections
    • UI for per-Target project settings

New in Q3/2022

  • Yet more Delphi Compatibility improvements in Oxygene
  • Island/Linux: COM Interop
  • Enhancements to DateTime and Double in Elements RTL
  • Allow "InstanceType" to be used in operator definitions
  • New “Default Uses Prefixes" setting
  • Expose .fx codegen via EBuild's --dump parameter
  • Toolchain support for Grpc and Google ProtoBuffer .proto files
  • New/enhanced project upgrade/migration logic using CPS in Visual Studio
  • Cross-platform support for Index and Range types
  • Fire/Water:
    • Debugger: support for instruction-level StepInto/Over in Disassembly
    • Debugger: support for registers in Debug Inspector
    • Debugger: Option to turn off "stop on (any) Exceptions" from the Exception Sheet in Fire
    • Debugger: Option to use breakpoints from all open Solutions in Fire
    • Remoting SDK and Data Abstract integration improvements
    • Support for recursive **.pas wildcards
  • Support for running Water on .NET Core 6, including natively on Windows/arm
  • Support for running EBuild and compiler on .NET Core 6, including natively on Windows/arm
  • Support for Xcode 14.0 GM SDKs
  • Support for older v2 NuGet repositories

New in Q2/2022

  • More Delphi Compatibility improvements in Oxygene
  • Oxidizer: new Keyword Escaper for escaping non-Delphi Oxygene keywords in a .pas file.
  • Debugging Rosetta apps in Fire
  • Fire/Water:
    • Debugging a specific architecture for Island/Windows and Linux projects
    • Replace in Selection
  • Support for .NET Core 7 (Preview)
  • New Cirrus API for creating Extension Classes
  • Support for "safecall" methods on Island
  • Support for the Xcode 14 beta SDKs

New in Q1/2022

New in Q4/2021

  • Official support for .NET Core 6.0 and Visual Studio 2022
  • C# 10.0
    • Enhanced line directives
    • Extended property patterns
    • Lambda improvements
    • Global using directives
    • Record structs (all languages)
    • Caller Argument Expressions
    • Constant Interpolated Strings
    • File-scoped Namespaces
    • Generic Attributes
  • C# 7.2
    • Compile time enforcement of safety for ref-like types
  • Mercury
  • Oxygene
    • allow "async main" with begin/end.
    • Allow for/to loop variables to be inferred, just like for each.
  • New literal() CMF
  • WebAssembly: allow external method syntax to define strongly-typed Eval() wrapper
  • Optional Exception support in WebAssembly
  • Compiler now uses Island SDK imports for all Cocoa projects
  • Smaller download sizes by off-loading Go library

New in Q3/2021

  • Await support for dynamic in WebAssemnbly
  • Proper EBuild-style NuGet support in Visual Studio
  • Island Debugger now honors Just My Code setting in Visual Studio
  • New "ActiveX Library" project template (C#), and related Aspect
  • Oxygene: support for multiple uses clauses
  • Combined Interfaces in Oxygene
  • (Experimental) support for Visual Studio 2022 Preview
  • Oxygene: Support for params with sequence types
  • C# 9: [ModuleInitializer] attribute (all languages and platforms)
  • C# 9: Pattern matching enhancements
  • C# 8: async streams
  • C# 7.3 Stackalloc array initializers.
  • C# 7.3: Pattern-based fixed statement
  • C# 7: task types

New in Q2/2021

  • Official "1.0" release of Mercury
  • Property Wrappers
  • Swift 5.5: async/await
  • Breakpoint Actions in Fire and Wateer
  • New Code-Behind development model and templates for WebAssembly
  • Go language improvements and new Memory<T> type
  • Decimal type support on all platforms (previously .NET only)
  • C# 9.0
    • Top Level Statements
    • Attributes on Local Functions (all languages)
    • target-type conditional expressions (all languages)
    • Static anonymous functions (C# and Oxygene)

New Q1/2021

  • C# 9.0
    • Record types (all languages, native keyword for C# and Mercury)
    • "x with {}" in LINQ (C# only)
    • Allow GetEnumerator to be implemented in Extensions (all languages, .NET)
    • Co-variant returns (all languages)
    • Lambda discard parameters (all languages that have discards)
  • Mercury
  • Languages
    • Allow "locking on nil" to be a no-op
    • Support for subclassing records/structs (all languages)
    • Oxygene: allow initializer on a property that has e.g."read private write" delegate-declarations)
  • Fire and Water:
    • Allow building/running individual non-active projects from the context menu
    • Support for converting all .vbproj/.csproj projects in a solution in one go, updating all project references
    • Support for dragging `.xcframeworks into Fire to create an Import Project and project reference
    • Expose settings for upper-casing Oxygene keywords/directives
    • Option to build "missing" project references, if the project file can be resolved (--build-missing-projects)
    • Option to hide hints and warnings from remote references & missing projects
    • Oxygene: convert keywords to upper-case after space, if that option is set
    • Water: expose "Help|Generate Report for Code Completion" menu
    • Option to Import or Convert Delphi (.bdsproj) and Lazarus (.lpr) projects.
  • Tool Chain
    • New "Island Debugger" is now the default for Cocoa, replacing LLDB
    • Support for importing .xcframeworks
    • EBuild: Detect and cleanly fail on recursive (even indirect) project dependencies
  • Other
    • Option to not install support for all platforms, to save disk space
    • Improved Reflection API in Elements RTL
    • New conditional define, ELEMENTS+current build number (eg ELEMENTS2599)

New in 2020

  • Fire (and the entire compiler tool chain) nor run natively as Arm code on Apple Silicon Macs

Languages

  • Oxygene: while matching for Oxygene (https://docs.elementscompiler.com/Oxygene/Delphi/DelphiCompatibilitySettings/), and to allow more unsupported syntaxes in code that is IFDEF'ed out
  • Oxygene: Support for using the in operator on Arrays and Collections
  • Vast collection of Mercury improvements, as we ready for RTM
  • C# 9.0: init properties
  • C# 9.0: omitting the type in new() expressions

Note: C# 9 language features in RemObjects C# will be available for all platforms and all .NET versions, not limited to the .NET Core-based .NET 5.0.

Delphi Compatibility:

Platforms

  • Apple Silicon Support
    • Building Mac apps for arm64 aka "Apple Silicon"
    • Support for automatically signing arm64 binaries as needed to run locally, on Apple Silicon
    • Support for arm64 for the iOS, tvOS and watchOS Simulators, on Apple Silicon
    • Building Mac Catalyst apps for arm64 aka "Apple Silicon"
  • Support for iOS, iPadOS and tvOS 14, watchOS 7 and macOS 11 SDKs
  • Improved support for the official final release of .NET Core 5.0

Tool Chain

  • Tentative support for Water and certain tool chains on Windows/ARM
  • Support for running .resx/.settings Generator tools as part of the build, instead of manually in the IDE
  • New and improved "Island" debug engine will now be used as default for Cocoa apps, on Big Sur and later
  • Android: Manifests file merging: support for uses-feature
  • Android Debug Hosts
  • Android tool chain improvements: merge Manifests from packages & other tweaks
  • Improved My class support
  • Debugger improvements for Cocoa, .NET Core and WebAssembly
  • New AllowUnsafeCodeImplicitly setting to mark all code in a project to use "unsafe" code on .NET
  • EBuild can now automatically download older or newer versions of Island and Cocoa SDKs not installed locally
  • New Oxidizer.exe command line tool
  • Support for the new D8 dexer for Android
  • Improved Code Completion for uses/using/import clauses

APIs

  • More exposed APIs in Go Base Library
  • New caseInsensitive() String API in Elements RTL
  • Improvements to Browser DOM classes for WebAssembly
  • Improvements to Delphi RTL
  • Strongly typed interfaces for Browser and DOM, in WebAssembly
  • New [Module] aspect to achieve VB-like module behavior in all languages
  • Go Base Library has been updated to Go 1.13.5
  • new Observer class for working with Property Notifications in a platform-agnostic way.
  • New visual test activity for EUnit on Android

Fire and Water

  • Support for "Refactor: Rename"
  • Support for showing all code references to the current identifier
  • Support for disabling individual breakpoints w/o removing them (via context menu or Command-Click)
  • New backtrace all/bt all command in Debug Console
  • Support for launchSettings.json in ASP.NET Core propject and launching the Browser on first start
  • Better handling for "Reveal/Open output folder in..." For multi-target projects
  • Do fewer redundant builds when building and then running/testing
  • Support for managing references per target, in multi-target projects
  • More granular navigation stack, when navigating within the same file with Go to Definition and the like
  • Option to explicitly find and list all search occurrences in a single or all files
  • Oxidizer for Mercury
  • Improved folder refresh in Fire/Water for Website Projects
  • New "Messages" tab in the navigation pane
  • Option to set/toggle Copy To Output flag on content files
  • New "Go to Type Definition" command
  • Support for surrounding the selection when typing (, " or similar characters

  • Fire now runs on the Hardened Runtime on macOS Catalina

  • Fire: UI tweaks for macOS 11 Big Sur's new look and feel
  • Fire: UI sounds when builds and debug sessions succeed/fail
  • Fire: Various improvements for running on Apple Silicon Macs
  • Fire: support for deploying/debugging on iOS devices via WiFi, w/o USB connection
  • Fire: Support for running/debugging iOS apps locally outside a simulator, on Apple Silicon
  • Fire: Support for running/debugging macOS apps as x86_64 under Rosetta 2 explicitly, on Apple Silicon

New in 2019

Languages

Platforms

  • Support fore arm64_32 and improvements to the watchOS tool chain
  • Support for optionally filtering/selecting profiles and certificates by "Teams" in Fire/Water, for Cocoa projects
  • Project Templates for Remoting SDK for .NET Core in Fire
  • ASP.NET Core project templates for all four languages
  • Support for Node.js in WebAssembly, including new Templates
  • Support for ASP.NET Core and Razor
  • Support for the iOS 13.2 Beta SDK
  • Mixed mode debugging for Android NDK Extensions inside an Android SDK App
  • Support for 64-bit ARM Linux (aarch64)
  • Support for building UIKit for Mac apps
  • Support for deploying and launching standalone watchOS 6.0 apps to the Simulator
  • Support for macOS 10.15, iOS 13, tvOS 13 and watchOS 6.0 Beta
  • Support for building Cocoa .frameworks
  • Native COM support for Island

Tool Chain

Fire/Water:

Support for Visual Studio 2019

Enhancements to EUnit

New in Q3 and Q4/2018

  • Major documentation overhaul (work in progress)

  • Very Sneak Preview for Go support in Fire and Water

  • Toolchain Improvements

    • Further steps towards maturing Island/Darwin platform
    • Support for iOS, tvOS and watchOS
    • Support for mixing Cocoa and native class types
    • Support for architecture merging, app bundle creation and other Toffee toolchain phases
    • .NET Core tool chain improvements
    • .NET Core debugging on macOS
    • Debugging and RTL improvements for Island
    • EBuild is now the default build chain for plain Echoes projects, in Visual Studio

EBuild is now the default/only toolchain for everything except Silverlight and Universal Windows/WinRT projects, across all IDEs.

  • IDE Improvements

    • Official first release Water of Water
    • Improved Welcome experience in Fire
    • Support for creating XAML event handlers via CC
    • Fire & Water Editor:
    • Improvements to smart-enter
    • Smart keyword expansion when pressing Space
    • Smart-for Oxygene
    • Improvements to how CC works in shared projects when being invoked within "wrong" defines.
  • Language Improvements

  • Other Enhancements

    • Cirrus improvements
    • Cocoa: support for SIMD types
    • Delphi VCL Preview

New in Q2/2018 (.2283 - .2301)

  • Core

    • Iodine: support for auto-release pools on Cocoa
    • Improved Flow Control logic and hints
    • Oxygene: Interpolated Strings
    • Island/Windows: .res file support
    • Blocks defined inside an if #available should inherit that deployment warnings are hidden
    • Vast CC improvements
    • String to HSTRING (Island/Windows)
    • CC Stability improvements
    • Swift: SE-0043: Declare variables in 'case' labels with multiple patterns
    • Automatically hide CPW warnings inside per-platform defines
  • More C# 7.2 and 7.3 feature parity:

    • C# 7.3: field: attribute on prop fields
    • C# 7.3: Infer tuple names (aka. tuple projection initializers)
    • C# 7.3: Ref Local Reassignment
    • C# 7.3: Support for == and != on tuple types (all languages)
    • C# 7.3: System.Enum, System.Delegate and unmanaged constraints
    • C# 7.2: conditional ref
    • C# 7.2: Non-trailing named arguments
    • C# 7.2: Reference semantics with value types
  • Iodine: __event declaration support

  • Oxygene Editor: automatically correct <=, >=, != to =, =, ?
  • CC: Improvements when same type name exists in two (used) namespaces

  • .NET Core Toolchain enhancements

    • Debugging (in Visual Studio, Fire and Water)
    • Run w/o debugging (Fire and Water)
    • generate .runtimeinfo.json and /deps.json files
    • New project settings for picking desired Core SDK and Runtime
  • Island/Darwin (Native macOS) Preview

  • Build Chain

    • Fire and Water are now EBuild-exclusive
    • Significant Build speed improvements for PrepareToffee and for copying .app bundle to output
    • Visual Studio now uses CrossBox 2 for debugging Cocoa projects
    • Visual Studio now uses EBuild for building Cocoa projects
    • New Debug API, shared with Fire, Water and Visual Studio and across all platforms, with more consistent boot/upload/deploy/launch infrastructure.
    • Support for pre-compiling .metal shader files on Cocoa
    • Support for building for the 'Hardened Runtime" for macOS Mojave
    • Support for iOS 12 and macOS 10.14 Mojave Beta SDKs
    • Support for SiriKit Intents and extensions (iOS 12 Beta, wip)
    • New compiler-internal obfuscation support, all platforms
  • Fire and Water

    • Setting for choosing radix for debug evaluations
    • Option to convert legacy .gradle files
    • Support for Detaching from debugger, in Cocoa
    • New "Exception Manager" to configure ignored exceptions
    • New "Breakpoint Manager"
    • Editor: Improvements for typing Tab in CC to forward to next PascalCase upper character
    • Editor: Smart closing } in Fire and Water
    • History for debug console commands
  • Fire

    • Fully embrace macOS dark theme when editor theme is black
    • Filtering in Arguments Manager
    • Support for Dark Mode for Fire on macOS Mojave
    • New Auto-Updater for Fire (experimental)
  • Water:

    • massive UI improvements to tree views
    • Debug Inspector is now usable
    • Vast CLR Debugger improvements
    • Debugger: "Add breakpoint" sheet (by location or symbol)
    • Debugger: "Attach to Process" (32-bit CLR; 64-bit CLR and Island coming next week)
    • Paste & Split in Arguments Manager
    • Preferences: Paths page
    • Editor: Shift-click to extend selection, alt-drag to select rectangular
    • Editor: Support for underscore and tab in CC, matching Fire
    • Editor: Support for search tokens and Tab to jump to them
    • Data Abstract and Remoting SDK: "Connect to ROSDK Server"
    • Data Abstract and Remoting SDK file actions are now available in Water
    • Project Settings view (fully functional)
  • Visual Studio

    • Island, Cooper and Gotham now always use EBuild
    • Support for parsing //TODO tags

New in Q1/2018 (.2239 - .2269)

  • Core

    • Improved DllImport/DllExport
    • Incremental compile for Cocoa and Island
    • first bits of Swift 5 features
    • "Back-mapped methods" in mapped types
    • Class Contracts for C#, Swift and Java
    • Show require/ensures in CC and enforced some at compile time
    • Default interface implementations
    • Speed improvements in Cocoa .fx files with many extensions (such as Foundation)
    • async in main() – all languages, .NET
    • Support for static arrays for C#
    • Support for WebAssembly as new sub-platform in Island
    • is and case/when pattern matching in C#
    • InstanceType is now supported on all platforms
    • New cross-platform Instrumenting Profiler
  • EBuild

    • Support for building Toffee apps from Windows via CrossBox 2
    • XAML/WPF Support in EBuild, including building WPF on Mac
    • EBuild is now the default tool chain in Water
    • Support for Cirrus references for all platforms in Fire/Water and EBuild
  • Fire and Water:

    • XAML Code Completion
    • Smarter “Comment/Uncomment Selection (Cmd+/)” for partial lines
    • Integrated Help for core Elements docs & platforms
  • Fire:

    • Support for Symbolic breakpoints
    • Better Breakpoint UI
    • Exception Manager
    • Support for FXGen Framework import
    • Exposed more Refactorings
  • Water

    • Project Settings view (preview)
    • Cocoa/Mac debugging via CrossBox 2
    • Support for Code Snippets
  • Visual Studio:

    • "Sort methods" refactoring for Silver and Iodine

New in Q4/2017 (.2215 - .2231)

  • Core

    • support for multiple properties in [Notify]
    • [Notify] support for Island
    • Java Compatibility: Catching Multiple Exceptions
    • Java Compatibility: Rethrowing with Improved Type Checking
    • Java Compatibility: try-with-resources Statements
    • WebAssembly support in Island
    • C#: Syntax for defining (non-local) type aliases
    • Iodine: Support for array literals and NSArray via {…}
    • Tuple operators
    • Oxygene Discardables (similar to (C#)
    • Swift supports #defined(x) now, for symetry
    • C#7 discards
    • C#7 deconstruction
    • C#7 and Oxygene default literals
    • C#7 tuples and tuple element names
    • C#: Type Aliases
    • C# and Oxygene: throw/raise as expression
    • C# 7.0 and Oxygene: out var declarations
    • Silver: Support for case - let - as in switch
    • Support for Portable PDB on .NET
    • Support for Codeview debug symbols on Island/Windows
  • EBuild

    • Massive improvements on many fronts, large parts of the binaries we ship as part of Elements are now built with EBuild, including Fire itself.
    • Support for watchOS and iOS Extensions via project references
    • Support for .ipa generation on Toffee
    • EBuild is now the default build engine in Fire for all platforms.
    • Support for Java 9 JDK and jmod files (EBuild-only)
  • Fire and Water

    • Show resolve log for referencess view
    • Show (and persist) failed build task and project in status bar
  • Fire

    • show error message for non-text files (such as .xcasset, .xib)
    • Performance improvements
    • Non-text file viewes siuch as .xcasset now can also show build messages
    • FXGen is now integrated (SDK import only in this build)
    • Show build/debug status in tab, on High Sierra and later
  • Water

    • Open Quickly sheet has been ported
    • Many small improvements
    • Debugger UI improvements

New in .2213 — First Elements 10 Preview, November 4, 2017

Major highlight for this build is the new defined() compiler magic function, which lets you wrap #ifdef logic into actual langage flow structures, instead (we'll have an upcoming blog post about this, next week).

  • Support for if defined()
  • C# Improvements:
    • C# 7.2 private protected visibility
    • C# 7 Local Functions
    • C# 7 Tuple support
  • Oxygene Improvements
    • Full support for local/nested functions, same as C# and Swift.
    • Oxygene: support for type to make type alias incompatible
    • New static; syntax for static members w/o class
  • Iodine Improvements:
    • Property support
    • Block/delegate syntax (__block)
    • Java Compatibility: Type Inference for Generic Instance Creationsr
    • __weak/__strong/__unretained keywords
    • __selector syntax
    • default()
    • Syntax to force a non-nullable (!, like in C#)
    • Java 9 compatible lambda syntax (->)
    • Syntax for mapped class
  • Other Compiler Improvements
    • Variable inferred with explicit "as not nullable" should be considered non-nullable
    • Advanced assignment operators for Island/Toffee Records
    • Allow . for pointers to do an implicit dereference
  • Fire improvements
    • streamlined memory footprint and processing overhead for shared files in the managed projectsystem.
  • Misc
    • Finally renamed all RemObjects.Oxygene dlls to RemObjects.Elements

Check out the complete change logs with each build, for more details.

See also what was new in Version 9.3 and earlier…