What's New in Elements 10

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

Each week (with few exceptiond for holidays or other team availability), we will ship a new build that will start out in the "Experimental" or "Preview" channel. These builds will include bugfixes and new features.

Elements 10

New in .2307 - July 13, 2018

  • available() now also implies defined()
  • Swift: Syntax for declaring implicit and explicit cast operators
  • Cocoa: support for SIMD types
  • Delphi VCL Preview

New in .2305 - July 9, 2018

  • C# 7.2: Readonly references
  • Oxygene: Support for "locking" as expression
  • Improved Welcome experience in Fire and Water

New in June 2018 (.2291 - .2301)

  • .NET Core Toolchain enhancements

    • Debugging (in Visual Studio and Water; Fire coming next week)
    • Run w/o debugging (Fire and Water)
    • generate .runtimeinfo.json and /deps.json files
    • New project settings for picking desired Core SDK and Runtime
  • 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

  • Build Chain

    • EBuild: 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
  • Island/Darwin (Native macOS) Preview

  • Fire

    • Support for Dark Mode for Fire on macOS Mojave
    • New Auto-Updater for Fire (experimental)

EBuild is now the default/only toolchain for Cocoa, Java & Island, everywhere.

New in April/May (.2283 - .2289)

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

    • Fire and Water are now EBuild-exclusive
  • 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
  • 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
    • Incrememntal 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 discards (similar to (C#)(https://github.com/dotnet/roslyn/blob/master/docs/features/discards.md))
    • 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…