RemObjects Elements v12.0.0.3071

Released: Apr 4, 2026

v12.0.0.3071 中的更新

特性

  • Core
    • Debugger/.NET: Added support for boolean operators.
    • Android: B0undle tool updated to 18.3.
    • Android: Added new Wear OS project templates.
    • Delphi Compatibility: Added support for {$IF Declared(X)} in legacy preprocessor.
  • Fire & Water
    • CodeBot: Added a new replaceSymbol function.

修補程式

  • Core
    • Android Templates: Visual Studio asks to choose Target Framework, which is not applicable.
    • Android: Fixed Android Sample Projects for build and deployment issues.
    • Cocoa: InstanceType-inferred variable cannot be reassigned.
    • Debugger/Echoes: BreakpointID isn't set correctly in x86 mode.
    • NRE when trying to Go to Definition inside a directive.
    • Raw strings: line 'numbersfor' errors sometimes were off.
    • Refactor: doesn't find all vars.
    • File-scoped must symbols use different mangling on Java ($ not <>).
    • Reloading references fails after they were rebuilt.
    • N13 “Method CreateFromFile exists, is there a semicolon missing?” error with linebreaks in method call.
    • E26513: Wrong error code (E271 custom error) for missing type in method declaration.
    • Android: Fixed "obsolete" warning in the Android’s Tabs app template.
    • Android: Set Android min SDK in the project settings.
    • CC regression: Insert text include "in " when namespace is inserted.
    • HI: don't emit default namespace for each type, for codegen option.
    • Island/Delphi: duplicate symbol: __unnamed_1 at building island/Delphi app -- Use InternalLinkage for the delphi type name in GenerateTypeInfoFor.
    • CC: DisplayText had changed to include the namespace, leading to duplicate info.
    • CM: NRE in GetShortName for method having array result.
    • NRE in Go to Definition.
    • Change nested type name separator to "+" (to match ToString).
    • Confusing error locations for prematurely terminated raw string.
    • Debugger/Island: Get Locals fix.
    • Debugger: CLR: Error when trying to call a non-static member on TypeValue self.
    • Debugger: CLR: fixes for indexer evaluations.
    • Debugger: Island/Darwin Release build doesn't break on exceptions.
    • Debugger: Log exceptions raised when reading debug files.
    • Debugger: NRE when evaluate anonymous method (not supported for now though).
    • Delphi Compatibility: $ZEROBASEDSTRINGS directive is now ignored for OFF, and errors for ON.
    • Delphi Compatibility: const Empty: TEmpty = () recognised as empty named-field record init.
    • Delphi Compatibility: const Lambda: Func<Integer> = () -> 99.
    • Delphi Compatibility: deprecated directive’s message was ignored.
    • Delphi Compatibility: Allow 'label' section after 'var' section (while still allowing 'label' as a variable name).
    • Delphi Compatibility: Fix for include search path being tied to legacy preprocessor; allow relative include search path.
    • Delphi Compatibility: Handle goto label inside case statement.
    • Delphi Compatibility: Ignore additional preprocessor directives: INLINE, LEGACYIFEND, DEFINITIONINFO, J+/J-, O+/O-, T+/T-, X+/X-, A1-A16.
    • Delphi Compatibility: Warn if enum and label names shadow/duplicate).
    • Delphi import: cleaner exception type.
    • Installer: Reset files association to defaults after Elements deinstallation.
    • Internal: Adjustments to “E27569: C#: inconsistent initialization for out vars in Cocoa vs .NET”.
    • NRE fix (ExactBefore and ExactAfter could be nil).
    • Oxygene Delphi Compatibility: absolute keyword (Island, Echoes, Toffee; not implemented for JVM).
    • Oxygene Delphi Compatibility: label keyword recognised after var/const (was interpreted as var/const name).
    • Oxygene Delphi Compatibility: weak keyword/type disambiguation.
    • Oxygene Delphi Compatibility: adjust DCM-gated keywords: Oxygene allows initialization/finalization, cdecl/stdcall (supported for external methods), overload (doc-ed as ignored). 'packed' is DCM, use [Packed].
    • Oxygene Delphi Compatibility: Allow accessing @TType.InstanceMethod (static type, not an instance) as a method pointer.
    • Oxygene Delphi Compatibility: Allow cast from method pointer to pointer and back (requires DCM; unsafe in Echoes).
    • Oxygene Delphi Compatibility: Function name can mean function address in DCM mode (missing @).
    • Oxygene Delphi Compatibility: Legacy Preprocessor: avoid mutating types.
    • Oxygene Delphi Compatibility: Legacy Preprocessor: can resolve sizeof() for compiler inbuilt (e.g., Integer, Pointer) and referenced types (e.g., TMethod).
    • Oxygene Delphi Compatibility: Legacy Preprocessor: Support SizeOf(pointer).
    • Oxygene Delphi Compatibility: Pointers to functions implicitly convert to untyped Pointer in DCM mode.
    • Oxygene Delphi Compatibility: Support $MESSAGE directive (and ignore the $WARNINGS and HINTS directives).
    • Oxygene Delphi Compatibility: support (field: @func) const init syntax in DCM.
    • Oxygene Delphi Compatibility: Support self-referential typed constants (@ConstName.Field in own initializer).
    • Oxygene Delphi Compatibility: Tweaks for generic and non-generic types of the same name.
    • Oxygene: packed is back as a normal keyword (used often).
    • Oxygene: bad reformat.
    • Oxygene: parser fixes for Delphi compatibility.
    • Templates: New Android Tabs-based App added.
    • VS: Internal error when evaluating "x.Where(b-> b = 'a')".
    • C#: inconsistent initialization for out vars in Cocoa vs .NET.
  • Fire & Water
    • Show hints in jumpbar drop-down list.
    • Water: CTRL+D window is sometimes too small (regression).
    • Water: show full file path via hint.
    • Water: when Water is in maximize state, an auto-hidden taskbar cannot be shown.
    • Auto-fix is applied several times for files in shared project.
    • CodeBot: Analysis for selection didn’t use proper line numbers.
    • CodeBot: Minor tweaks for issues identified by Codex.
    • CodeBot: re-format code inserted by CodeBot.
    • CodeBot: run some editor-AI in the background and not the main chat.
    • CodeBot: Some internal cleanup & better prompt for file analysys.
    • Context menu cleanup..
    • Context menu option to open “Intermediate Folder”.
    • Context menu “Copy Path" on References only copied the name.
    • Debugger console: thread frame.
    • Debugger console: option to collapse single-letter commands (efg tfl for thread frame list).
    • Debugger: handle/highlight which thread is “current” dynamically, based on the current stack frame.
    • Editor: packed should be a regular keyword, not DCM.
    • Editor: Allow CC popup to grow further to the left, when invoking CC near the right edge.
    • Editor: CC error messages parsed badly when the filename/path contained parentheses.
    • Editor: CC: types from unused namespaces showed the namespace twice.
    • Editor: Color fix for Strings in white theme.
    • Editor: Detect DelphiCompatibility for highlighting if file has no active target but the setting is set project-wide.
    • Editor: highlight current type too, if available.
    • Editor: NRE proofing for the current block detection code.
    • Editor: Regression: cannot copy message popup with Cmd-C.
    • Editor: Shortcuts/menus to copy current type/block/member.
    • Exception logging proofing.
    • Extended Option-Cmd-Up/Down message navigation to build log.
    • Fire: CC popup is one pixel too small, causing scrolling/jitter.
    • Fire: Menu cleanup.
    • Fire: Restructured the Debug menu to match previous changes to Water.
    • Fire: Show message navigation commands in the menu (Water already did). Also added proper validation to them.
    • Generate Code from .RODL could hang in some cases.
    • Hide "empty" folders in the project tree, if all their files are in other virtual folders (regression: don't hide empty folders that didn't have virtual files.
    • If a project/target has more than one output, show the “Reveal Output _Folder" menu, instead of disabling it.
    • Island/Delphi: allow specifying just "Delphi" w/o number to target the latest available version.
    • Logging for Certificate filtering (for Jeremy ;).
    • Made the per-target target “Manage References" sheet easier to get to in multi-target projects, if the current node is associated with one of the targets.
    • NRE fix in desiredDefaultArchitectureForConfiguration.
    • Project Settings: Crash regression for Toffee/iOS.
    • Project Settings: Don't show unsupported architectures in picker for Island/Delphi (i.e. Windows/arm64 for Delphi 12 and below).
    • Project Settings: Don't use unsupported local device architecture as the default/desired architecture for Island/Delphi.
    • Project Settings: Settings tweaks/cleanjup for Delphi Compatibility.
    • Project Settings: Sort architectures properly and consistently (best first).
    • Regression: Island/Android defaulted to wrong (local computer) architecture.
    • RO/DA: Connect button should enable as soon as a valid URL is typed.
    • RO/DA: Don't generate _Invk for .remoteRODL files, even if the project uses Server.dll.
    • RO/DA: Don't generate ServerAccess file when using local RODL file.
    • RO/DA: Fix the Connect button and Browse dialog in Connect To Remoting SDK Server.
    • RO/DA: Newly generated _Intf files were (sometimes?) creating an implicit Target.
    • Show nested types in the types tree.
    • The type member dropdown was not always sorted consistently.
    • Water: allow filter/search in Exceptions Manager.
    • Water: avoid Internal exception when the webview for Codebot was accessed before being fully initialized.
    • Water: can't open .elements/.sln if it was specified w/o full path in the command line.
    • Water: CodeCompletion message "no match" has the wrong size.
    • Water: CTRL+D window is sometimes too small.
    • Water: don’t capture image for exception sheet, as that hangs (sometimes?).
    • Water: Dropdown list for project creation style fixed.
    • Water: Fixed a duplicate separator in the Target context menu.
    • Water: hide "Open in Service Builder" button for .remoteRODL files.
    • Water: Improved color for tree view disclosure triangles.
    • Water: NRE closing/switching to another project while the current project is debugging.
    • Water: Problems with syntax highlight in XML files.
    • Water: show full file path in treeview hint.
    • Water: some missing icons in the jumpbar.
  • EBuild
    • Android: bundletool updated to 18.3.
    • Delphi Project Import: avoid empty architecture in settings.
    • Delphi Project Import: reference Vcl or Fmx automatically if needed.
    • Delphi Project Import: Set better default uses prefixes for Windows.
    • Delphi Project Import: Set generic "Delphi" SDK version to always use latest.
    • Delphi Project Import: Support for Windows/arm64.
    • Delphi Project Import: Tweaks; enable Island/Delphi mode only for supported platforms.
    • Expose OutputFolder to FinalOutput.xml.
    • Ignore "empty" architectures resulting from a leading or trailing semicolon in the setting.
    • Island/Delphi: Allow specifying just "Delphi" w/o number to target the latest available version.
    • Island/Delphi: More clear errors when trying to build for a platform not supported for Delphi.
    • Island/Delphi: Support for importing Windows/arm64.
    • Island/Delphi: support for importing Windows/arm64 if present (wip, disabled).
    • Island: fixes for renamed debug symbol cache files in macOS 26.4.
    • Provide IntermediateFolder in FinalOutput.xml.
    • Set UseLegacyPreprocessor to true when importing Delphi & Lazarus projects.
    • Sort supported architectures properly and consistently (worst to best/newest).
  • Island Delphi Support
    • DelphiExtended80: Added ToString method and updated Exponent, Fraction, and Sign properties for improved clarity.
    • Implicit casts from integers, floats and TDateTime to Extended.
    • Keywords: change 'packed' (Delphi compatibility keyword) to '[Packed]' attribute.
    • Made all Extended casts implicit.
    • Operators for concatenating char+string.
    • Support for Windows/arm64.
  • Elements RTL
    • Add a constructor withCapacity to the Queue class.
    • Use CallingConvention attribute instead of stdcall directive.
  • Island RTL
    • Don't optimize Island RTL for Windows, until we fix the index out of range issue.
    • IslandRTL: change 'packed' keyword to '[Packed]' attribute (packed is DCM-only).