Languages Platforms IDEs | Download Pricing |

What's New in Elements

Starting with Elements 10, we're changing how Elements ships, moving away from monolithic releases to weekly new builds.

In addition to some forward-facing work we're not quite ready to share yet, our work for Q4 largely focuses on documentation and quality improvements. For this reason, a smaller than usual amount of new features will be listed here. Please check each week's change log for a detailed list of all fixes and enhancements.

New in.2349, November 30, 2018

  • Very Sneak Preview for Go support in Fire and Water
  • Major documentation overhaul (work in progress)

New in.2347, November 23, 2018

  • Oxygene: New mapped constructor Syntax
  • < and > Operators for Sets
  • Fire & Water Editor:
    • Improvements to smart-enter
    • Smart keyword expansion when pressing Space
    • Smart-for Oxygene

New in.2343, November 9, 2018

  • Fire/Water: Improvements to how CC works in shared projects when being invoked within "wrong" defines.
  • Oxygene: error recovery improvements
  • Debugging and RTL improvements for Island

New in Q3/2018 (2305 -.2331)

  • 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
    • 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
  • 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…