RemObjects Elements 9.2

Released: Aug 18, 2017

Updates in 9.2

Features

  • New language: Iodine (Java) for all four platforms
    • Iodine brings the Java Language over to new platforms. With Iodine you can use your existing knowledge of the Java programming language to write code for .NET, iOS, macOS and, yes, the JVM and and Android. You can also share a lot of non-UI code between platforms. For example, if you're an Android developer you can create a native iOS version of your app, using the language you know, and potentially reusing/sharing a lot of your existing apps code and logic.
    • Iodine is a full super-set of Java 8, and adds additional improvements and enhancements, on top. All your existing Android or Java SE code should compile right away – so you can move your project over to Iodine seamlessly, and then start planning to cover more platforms – natively.
  • Other Major new Features in Elements 9.2
    • Island: New "JNIExport" aspect for Android/NDK
    • Island: New Android NDK Extension templates
    • Island: New native Windows debugger
    • Island: Task/async support
    • MacPack: leverage fast file copying on APFS
    • New "Dependency Property" aspect for WPF
    • Swift: Full support for init? on all platforms
    • Swift 4: SE-0168 Multi-Line String Literals (also SE-0182)
  • Smaller Enhancements in Core Elements
    • Android: detect ADS running and emit a warning/error for debugger
    • Better error when a namespace from the default uses does not exist
    • Better error when assigning to a record property's field
    • Island: [JNIExport] Attribute should add [DllExport] as well
    • Island: Add shlobj.h to imported headers for Island Windows runtime
    • Island: allow [Used] attribute to be inherited
    • Island: Auto-select CB for Island project (Linux and Windows)
    • Island: Import WinHttp* functions for Island Windows
    • Swift: cleaner error for unsupported operator types
    • Swift: drop "W50 ++/-- is deprecated" warnings because, why not
    • Swift: pointers should not need ? to be nil
    • Variable inferred with explicit "as not nullable" should be considered non-nullable
    • Allow await on any type with a single await method
    • Android: Better errors from aapt
  • Features in Fire
    • New language support for Iodine (Java) for all four platforms
    • Debugger: New Disassembly View
    • Editor: Auto-complete XML closing tags when typing </
    • Editor: Draw inline messages on a separate line if they'd otherwise cover text on the current cursor line
    • Editor: Highlighting oil surrounding/matching XML element tags
    • Editor: Infrastructure for XML CC, and concrete support for CC in .plist files
    • Editor: Visually highlighting of the “current scope" around the cursor
    • New "Convert to LF" options, per file and per project
    • New “Show Debug Console on break" option
    • Search: History, via Cursor Up/Down in Search Pane
    • Search: New embedded Search Pane
    • Search: New Filter box at the bottom of the sidebar tree views
  • Smaller Enhancements in Fire
    • Debugger: Enable full LLDB debug console for MI
    • Debugger: Ignore .NET exceptions for missing AWSSDK.XmlSerializers
    • Debugger: Ignore CLR exceptions for missing *.resources.dlls
    • Debugger: ignore common internal "androidgetaddrinfo failed: EAINONAME (hostname nor servname provided, or not known)" exception on Android
    • Debugger: Show process name in "Process started" message
    • Editor: Improvements to how popups are placed/resized, when editor space is constrained
    • Editor: preselect the item with matching case in CC dropdown, if there's multiple variants
    • Editor: syntax highlighting for Swift 4 escaped line breaks in strings
    • Editor: syntax highlighting for Swift 4 multi-line strings
    • Editor: Syntax-coloring for compiler magic functions
    • Editor: Unofficial "CodeEditorUseBold" option, can be used w/ custom fonts
    • Improved UI for update checking/notification
    • Island: Better handling if a CrossBox 2 server's password is missing from Keychain
    • MacPack: leverage fast file copying on APFS
    • Nesting of .xaml files under their matching *Controller source files
    • New “Collapse all" context menu option in Solution Tree
    • Startup performance improvements
    • Updated to to using newer Mono 4.8.1.0 (5 April 2017) internally

Fixes

  • Fixes in Core Elements
    • 78230: "Clean" for Island is incomplete
    • 78141: "Object reference not set to an instance of an object" during compile
    • 77890: "With Shell" installed does not upper to integrate with VS2017, if VS2015 is not yet installed
    • 77910: (E0) Internal error: Object reference not set to an instance of an object
    • 78159: 0 = nil should only work for native external consts
    • 77905: Android: "Architectures" list is empty
    • 77944: Android: can't assign RTL2 string to overloaded text property
    • 78298: Android: Edit interface in Android Studio fails
    • 77916: Bad caption and two missing subitems
    • 77895: Bug with include files
    • 78041: Build Events page missing
    • 77850: C#: CC does not show const keyword
    • 76749: C#: Pressing Enter after property definition inserts wrong brackets
    • 76748: C#: Pressing Enter in the enum definition adds extra brackets
    • 76757: C#: Pressing Enter in the Interface definition adds extra brackets
    • 77994: Can't init struct, error E110
    • 78363: Cannot add a new class to a Swift/Cooper project
    • 78102: Cant use WPF designer in Shared Project
    • 77366: CC for #ifdef could be uppercase or preserve case
    • 76866: CC for Swift contains extra keywords
    • 77647: CC problems with named loops
    • 77329: CC shows too much stuff in Swift enum
    • 78009: Compiler error with Elements 9.1
    • 77884: Compiler fails with internal error 'Attempted to access an element as a type incompatible with the array.'
    • 77886: Cooper: Internal error compiling InternetPack
    • 78021: Create test-cases for switch to unified/classic syntax
    • 77766: Echoes: confusing error calling extension method w/ wrong parameter
    • 78190: Echoes: exit vs. result with await
    • 78294: Echoes: IE in Class Contracts sample
    • 77882: Echoes: Problem with writing FX signature
    • 78152: Elements command line problems
    • 78182: ElementsCC.exe --assembly switch is not respected with a single file
    • 78005: Empty iterator causes (E0) Internal error
    • 77863: Error in Calculator sample
    • 77691: Files in shared project also show VC# errors
    • 78405: Fix casing gives NRE
    • 77896: Go to Definition doesn't show if a type is a pointer TO a struct
    • 77739: Hide "Manage NuGet Packages" for non-echoes projects
    • 77906: IDE crashes in Clear References
    • 78064: Inline method generates internal error GOUNKEX170
    • 77836: Island and Cooper: error when running w/o debugger (Ctrl+F5)
    • 78233: Island and pointers: Generic parameter cannot be an unsafe type
    • 77870: Island app with a main() w/o result will have a random exit code
    • 78209: Island Core references should get hint path
    • 77630: Island internal error
    • 77945: Island/Android: crashes when trying to "new" an Object (when the GC loads)
    • 78043: Island/Linux: Linker error
    • 78221: Island/Windows: can't debug x86_64 apps
    • 78153: Island/Windows: Debugger problems
    • 78382: Island/Windows: hangs on raising exception
    • 78151: Island: "Internal error: Invalid record" with Task/async
    • 78116: Island: 2 CrossBox bugs
    • 78177: Island: Can not compile Delphi RTL tests for Island (Windows and Linux)
    • 77901: Island: Can't build dynamic lib for armeabi-v7a
    • 77902: Island: can't load NDK binary in Android app
    • 78232: Island: cant' use writeln() or _androidlog in NDK
    • 78408: Island: Disable x86 for Android/NDK
    • 77942: Island: dynamic library doesn't emit .fx file
    • 77978: Island: Internal Error with RTL2
    • 78082: Island: problem calling Linux shared libraries
    • 78106: Island: Two problems with NDK support
    • 78225: Island: Windows debugging: GetMembers not implemented
    • 78028: Keyword "implementation" is added twice after Switch To Classic
    • 78381: Missing files in templates
    • 78333: Mono Class library template has some missing files.
    • 78030: No project file conversion
    • 78000: NRE in CompleteClass
    • 78008: NRE in RenameClass in particular test-case
    • 77934: Overload issue
    • 77225: Oxidizer C#->Oxygene crash
    • 77679: Oxidizer C#: cant handle multi-part .ctor calls
    • 78156: Oxidizer lost the round brackets
    • 78414: Oxidizer: Import "Language" to "Language" is shown only for Echoes projects
    • 77374: Oxidizer: problem with if_msghdr
    • 74557: Oxidizer: Unchecked/Checked keyword
    • 77428: Oxidizer: UnknownType in particular test-case
    • 77371: Oxidizer: Wrong if condition
    • 78351: Oxygene: 'Interface' item template should use unified syntax
    • 78350: Parameter type for anonymous method seems wrong
    • 78054: PeekAtDef show class name as Error
    • 78066: PeekAtDef shows methods as abstract in interface
    • 78029: Pressing F1 does... nothing!
    • 77846: Problem generating .fx
    • 78396: PropertyPage: DeploymentTargetSDK versions missed latest values
    • 77868: Recoverable error when create iOS project without close the current project
    • 77842: Refactoring RO C#: Wrong Indent and missing namespace after Move Type
    • 77983: Reference is removed after reloading shared project
    • 77439: RO/C#-compiled Code.dll throws IE building Echoes.dll
    • 77796: Selecting more than one method and selecting Refactor --> switch to unified syntax only move one method
    • 77743: Swift Extract method always add the method on top of the file Fix
    • 77744: Swift Extract method fails using Mandelbrot sample fix, test-case
    • 78313: Swift/Cooper: Compiler NRE with let c = a ?? b
    • 78339: Swift/WPF: Event handlers code is not added
    • 78345: Swift: After renaming a component, designer fails to generate default event handler
    • 78346: Swift: Can rename a control with '_' but then I can not modify and can not build
    • 77924: Swift: closure rejected as parameter unless its trailing
    • 78271: Swift: CollectionViewController template broken
    • 78125: Swift: confusing error when using a non-simple/non-constant default value for a parameter
    • 77957: Swift: Enums Issues
    • 77968: Swift: need to be able to skip named parameters in the middle, if they have defaults
    • 78132: Swift: new Codable.swift code file causes other SBL parts to break
    • 76704: Some files aren't uninstalled
    • 78052: Some properties of dependency assemblies are missing
    • 77787: Some samples have wrong Properties icon
    • 77833: Swift methods with prefix should not sync prefix-less to Xcode
    • 78359: Swift: toString() not called properly on enums
    • 78196: Swift: Can't use return nil in failable init?.
    • 77469: Switched over to EBuild.CodeGen4.dll
    • 78191: Toffee debugger: when breaking on signal, exception message contains \0 chars
    • 77622: Toffee: self parameter on record methods is corrupted is some circumstances
    • 78371: Toffee: capture errors/warnings from actool & co
    • 77334: Toffee: HI does not import NSLocalizedString
    • 77956: Toffee: HI import fails on Xcode 9 SDKs
    • 78127: Toffee: NRE Compiler regression, crash when accessing Url fields
    • 77993: Toffee: Two Internal errors with nullable structs in FCE
    • 77999: Toffee: W8 warning with [ToString]
    • 78080: Use Code Snippets from CC
    • 78006: Visibility rules differ across platforms
    • 78149: VS 2017: Find All References does not work
    • 77767: VS 2017: Installer doesn't register .elements, .pas, and .swift file types
    • 78108: VS 2017: There is no menu item "Add new class..."
    • 77837: VS 2017: Unable to add Solution project reference
    • 77979: VS15: Data should be saved property group without condition
    • 78079: VS17: Class View does not show icons for items in tree
    • 77949: VS17: Copy Local isn't false, it's empty
    • 77696: VS17: packages.config has "file not found" icon
    • 77883: VS17: setting a working dir in the user column doesn't do anything
    • 78289: VS2015 Cocoa saves "Clear Settings" as string into setting for some properties
    • 78286: VS2015 Swift: WCF Service App doesn't compile
    • 78255: VS2015 WinPhone8.1 Share Target item designer error
    • 78247: VS2015 WinRT project - no simple class or interface item templates in Add new item
    • 78012: VS2017: "Use folder name in namespace for new file templates" is not taken into account
    • 78362: VS2017: $rootnamespace$ in templates gets replaced with empty string
    • 77666: VS2017: Add default BuildAction for android-xml file (AndroidResource)
    • 78356: VS2017: Adding an event and removing from properties and cursor never will go to the event anymore (part 1)
    • 78301: VS2017: Adding new EUnit TestClass item to the project fails on dupe EUnit reference
    • 77831: VS2017: Adding new EUnit TestClass item to the project fails to replace $lowerprojectname$
    • 78256: VS2017: App manifest item fails to compile
    • 77801: VS2017: Bad smart-indent in C# file
    • 78022: VS2017: BuildAction does not contain all items for WPF project
    • 78347: VS2017: Can not display WinForms designer
    • 77893: VS2017: CB does not show servers in Nougat project
    • 77894: VS2017: CB shows local server for Toffee projects
    • 77799: VS2017: Errors (from shared projects?) don't show in the list
    • 77745: VS2017: Find All references does not work
    • 77991: VS2017: Increased memory when switching configuration
    • 77965: VS2017: Manage NuGet Packages shows Unsupported project error
    • 77768: VS2017: No Everwood Welcome Screen after installation
    • 77797: VS2017: Oxidizer import menu is missing in solution explorer
    • 78329: VS2017: Oxidizer: Import as does nothing
    • 77867: VS2017: Oxygene: add Settings.bundle to an iOS project show recoverable error
    • 77783: VS2017: problem with showing properties of shared project
    • 78103: VS2017: Shared project doesn't show Page .xaml files
    • 77995: VS2017: Some options are missing
    • 77642: VS2017: Support cirrus reference node (show empty cirrus node in the project)
    • 77998: Vs2017: Templates don't work unless .net is selected
    • 78410: VS2017: Update 3 stops showing content of dependencies
    • 78410: VS2017: Update 3 stops showing content of dependencies (showing content of dependencies)
    • 77515: VS2017: UWP support (added project capability)
    • 77515: VS2017: UWP support (changes into templates - TargetFramework and TargetFrameworks)
    • 78096: VS2017: wrong icons for .xaml and nested .xaml.cs files
    • 77742: VS: C# editor cannot handle interpolated stings
    • 77755: VS: No icon in project switcher for island projects
    • 77765: VS: Toffee debugging: unicode chars come thru to console as surrogate pairs
    • 78069: VS: Wrong icon for nested source files
    • 78402: VS: Wrong item's menu name in Option-Project and Solution
    • 78245: WinForms project doesn't compile
    • 78340: WinForms: C#: adding event handlers causes formatting issues
    • 77972: Wrong Tuple declaration
    • 78095: XAML Events get inserted badly
    • Better error when android VM dies before connect
    • Cleaned XML for all .vstemplates
    • Cleanup of all template files *tabs, consistent line breaks, trimmed lines
    • Conflict between Elements.exe and Elements.dll (Renamed to ElementsCC.exe)
    • Error parsing C#, Java and Swift \x strings
    • Fix for array alignment
    • Fix for debugger crash
    • Gradle: also consider $androidHome/extras/m2repository/
    • HI: Xcode 9 (Beta) support
    • MakeSwifty tweak for not matching the cut off portion of a param to existing members
    • Merged DelphiRTL
    • Merged EBuild
    • Merged EUnit
    • Merged Everwood5
    • Merged IslandRTL
    • Merged libToffee
    • Merged Marzipan
    • Merged RTL2
    • Merged Samples
    • Merged SwiftBaseLibrary
    • New AppIcon set in Templates, part 2
    • Ship Xcode 9 SDKs (Beta 5)
    • SSH: workaround for Mono/H2 codegen bug?
    • Toffee: New/complete AppIcon set in iOS Templates
  • Fixes in Fire
    • Adjustment for GetDefinitionText
    • Auto-upgrade ToolsVersion to 4.0 in project load
    • Better layout for license text in Project view
    • Better maintain proper selection in Search Tree, as term changes and current file leaves and re-enters the list
    • Better tabbing in Search Pane
    • Caption in Types tree should show "Loading..." or "(Disabled)" if there are no types (yet)
    • Catch exceptions that happen while discovering Android devices
    • CC dropdown would sometimes jitter horizontally.
    • Could drag files out of Fire to all locations (e.g. Finder)
    • Crash in CC with related ranges due to missing workaround for MZ reference counting bug
    • CrossBox 2 registration dialog did not allow login w/ password, if key file didn't exist at all. Also, don't pass key file name to debugger if it doesn't exist
    • Debug Console did not show for CLR debugger (Water) and new non-MI Island debugger (Water and Fire)
    • Debugger: Disable debug panel tool bar buttons more granularly (pause vs continue, etc)
    • Debugger: fixes for exception messages (better handle empty type; escape #0 chars in message)
    • Debugger: Log debug engine exceptions to console
    • Debugger: Show LLDB console exceptions as stdout.
    • Debugger: “Error getting locals" message could not be copied to pasteboard
    • Don't exit full screen when Cmd-. or Escape is pressed outside of the code editor
    • Don't try to apply fix-its if the file does not exist (workaround for 78077: Building Water generates FixIts for (non-existent) XAML files in /obj)
    • EBuild: Don't do a full EBuild re-resolve when merely reacting to reference file changes
    • EBuild: Newly added references would not resolve until project reload
    • EBuild: pass --clean and --rebuildflags to EBuild properly
    • EBuild: Pass internal Toffee SDK and References to EBuild (for build, and for resolve)
    • Editor: after typing a character with shift key, shift+cursor to select would skip that char.
    • Editor: Cleanup/nil checks in dead key code
    • Editor: Comments didn't not highlight as such in XML files
    • Editor: did not show properly, if a file had #0 characters
    • Editor: Don't draw message location rects to overlap with inline message text
    • Editor: Don't draw search rects to overlap with inline message text
    • Editor: Fixed NRE in XML/getHoverInfoForExpression
    • Editor: Inline error messages should only ever draw their first/single line.
    • Editor: Page-Up/Down (to scroll w/o moving cursor) did not work
    • Editor: Shift+Cursor selection would only work with up/down/left/right combos, not with Home/End&Co
    • Editor: XML reformatting should use new "preserve line breaks for attributes" option
    • Error when opening Add References sheet with shared references in project
    • Files in Search tree should not show as expandable, since they won't show their children
    • Fix for getOrGoToLocationOfDefinition calling back to editor on wrong thread
    • Fix for how Arguments Manager migrated old-style arguments
    • Fix for how project references got added via drag/drop
    • Fix for solutionAsksToShowExceptionDetails crash caused by enforcing wrong tread
    • Fixed default architectures for Island/NDK
    • Fixed potential deadlock in DebugSession
    • Fixes for “Run w/o Debugging”
    • Handle .scnassets files as Xcode files
    • Island references should expose CopyLocal flag, if they are .dll or .so
    • Island: don't assume to use default key file, if it doesn't exist
    • Island: Proper error message when key file does nit exist
    • More granular check for projects that can debug but not run w/o debugging
    • Moved XBuilder logger from FireManagedHelper into the core Elements.dll
    • NRE fix in executionPointsPerLine
    • NRE fix in getLocals
    • NRE proofing in DebugStackFrame
    • NRE proofing in executionPointsPerLine
    • NRE-proofing in DebugStackFrame during debug session shutdown
    • Potential fix for crash in TouchBar code for canDeploy check
    • Pressing “Escape" should not exit full screen the pressed in an empty filter text field.
    • Proper default build action for .xaml files
    • Regression in 9.1: Android Debug Activity dropdown was empty
    • Regression in 9.1: Backspace with active CC would accept CC, then delete last char
    • Regression in 9.1: Could not select all valid build actions
    • Regression in 9.1: Per-file types would not show in jump bar
    • Regression in 9.1: Tab would not accept non-incremental CC
    • Regression in 9.1: Xcode file submenus were broken; “Reveal in Finder” menu did not work
    • Regression in 9.2: Crash reports did not work anymore
    • Search tree root node should not show as expandable if there are no results
    • Search: Don't allow "replace" on read-only or console-mode text editors
    • Search: Don't allow search term with line-breaks from global search pasteboard
    • Search: Enable/disable search panel buttons, depending whether the current view can search and/or replace
    • Search: Search Pane buttons didn't work for log view
    • Settings view didn't show actual Android devices in CrossBox dropdown
    • Show "None" in active project popup, if no project is selectable
    • Some preventive locking in DebugSession to potentially fix random crashes on "break"
    • Some speed improvements in Add References with Gradle
    • Sort per-line build messages properly, so the main/first one always shows first
    • Special editor handling for closing curly brace, semicolon, etc did only work properly on US(-like) keyboard layouts
    • Switched Project View over to auto-layout, finally
    • The "All Namespaces" list has inconsistent casing
    • The "Show Auto-FixIt Notifications" setting was not honored/used
    • The “Open Quickly" dialog would draw text that overlapped between columns
    • Two fixes for build goal logic (wrong case in output type; non-Elements projects)
    • Unnecessary high CPU load when building, due to how the build log updated its syntax coloring
    • Xml files: proper support/check for "Page" build action
  • Fixes and Improvements to Elements RTL
    • String.IndexIgnoringCase
    • Added Convert.ToBase64String, Base64StringToByteArray
    • Added GetComputerName function for all platforms
    • Added a new Url constructor
    • Added GetDesktopFolder for Island/Windows
    • Added TextStream and BinaryStream
    • Better error for StringFormatter.FormatString
    • Better error message for invalid URI in XML namespace
    • BroadcastManagerSubscription.object should not be weak (old/forgotten commit)
    • Enable IndexOfAny(array of chars), LastIndexOf and `Trim(chars)1 for Island
    • Enable `String.CompareToIgnoreCase1 for Island
    • Fix for changed NSUUID API in Xcode 9 SDKs
    • Fix for Environment.macOS.GetIsHighSierraOrAbove for non-Echoes
    • Fix for nil XmlElement.Value
    • Fix: String.PadEnd would cut off the string, on Cocoa, as thats how stringByPaddingToLength works.
    • Fixes for GetFilesAndFolders on Island
    • fixes for HTTP Island/Linux
    • Generate BitCode for iOS, tvOS and watchOS release versions
    • HTTP for Island/Linux
    • HTTP for Island/Windows
    • Implicit cast from String to CharSequence on Java
    • Island HTTP, added async
    • Make Url.TryUrlWithString work w/o internal exception
    • More flexible URN parsing
    • New Folder.GetFilesAndFolders, and changed some Folder APIs to return Immutable lists
    • New TryUrlWithString
    • New Uri.Equal/NotEqual operators
    • Ported Random over from Sugar, made it used shared native implementation for all for platforms
    • Proper exception when a Url can't be cast to NSURL (say because its bad)
    • Regression: XmlDocument.FromString didn't capture exception properly
    • Support for APFS copyfile() in Echoes/macOS and Toffee
    • Url.UrlWithString should not add additional percent encodings
    • Url: fixed Equals to work with NSURL/Uri
    • Url: getting FilePath must remove percent encoding while Path must not.
    • XML reformatting: missing line break after comment
    • XML: ChildIndex property for element added
    • XML: Common list for attributes and namespaces added
    • XML: CursorPosition out parameter added in NearestOpenTag; working with Errors (WIP)
    • XML: ErrorInfo member added
    • XML: prefix processing added
    • XML: Return ErrorInfo instead of raising exception added
    • XML: support for XML CC Engine
    • XML: Use TryUriWithString instead of UriWithString
    • XmlDocument.FromString fix
    • XmlDocument: Use URI for namespaces, not URL
  • Fixes and Improvements to Delphi RTL
    • Added DateToStr, TimeToStr, DateTimeToStr Island/Windows
    • Added DelphiString.Join(sequence)
    • Added System.Registry
    • Added TFormatSettings initialization for Island/Windows
    • Fix typo on x64 TOSVersion code
    • Fixed GetKeyNames
    • Fixes for DateTimeToString for Cooper
    • Fixes for String.setchar for Cocoa
    • Fixing DateXXXToStr bugs
    • Improved DateTimeToString
    • Improved TFormatSettings