Changes in .3071 since .3059
Core
- E27587: Android Templates: VS asks to choose Target Framework, which is not applicable
- E27535: Android: Fix Android Sample Projects for build and deployment issues
- E27569: C#: inconsistent initialization for
out vars in Cocoa vs .NET
- E27556: CC: DisplayText had changed to include the namespace, leading to duplicate info
- E27558: CM: NRE in GetShortName for method having array result
- E27326: Cocoa: InstanceType-inferred variable cannot be reassigned
- E27577: Debugger/.NET: support for boolean operators
- E27602: Debugger/Echoes: BreakpointID isn't set correctly in x86 mode
- E27575: file-scoped must symbols use different mangling on Java (
$ not <>)
- E27269: HI: don't emit default namespace for each type, for
codegen option
- E27450: Island/Delphi: duplicate symbol:
__unnamed_1 at building island/Delphi app -- Use InternalLinkage for the delphi type name in GenerateTypeInfoFor
- E27574: NRE in Go to Definition
- E27571: NRE when trying to Go to Definition inside a directive
- E27520: Raw strings: line numbersfor errros sometimes were off
- E27367: Refactor: doesn't find all vars
- E27513: Reloading references fails after they were rebuilt
- E27596: Weird 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: bundletool updated to 18.3
- Android: Fixed "obsolete" warning in the Android’s Tabs app template
- Android: New Wear OS project templates
- Android: Set Android min SDK in the project settings
- CC regression: Insert text include "in " when namespace is inserted
- 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:
experimental added
- 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: Support
{$IF Declared(X)} in legacy preprocessor
- Delphi Compatibility: Warn if enum and label names shadow/duplicate)
- Delphi import: cleaner exception type
- Delphi Package Import: Windows/arm64 (wip)
- Installer: Reset files association to defaults after Elements deinstallation
- Internal: Adjustments to “E27569: C#: inconsistent initialization for out vars in Cocoa vs .NET”
- Island/Delphi: Support for Windows/arm64 prep-work (wip)
- Merged CodeGen4
- Merged EBuild
- Merged InternetPack
- Merged IslandDelphi
- Merged IslandRTL
- Merged ROCodeGen
- Merged RTL2
- Merged Samples
- 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')"
Fire & Water
- E27599: Show hints in jumpbar drop-down list
- E27581: Water: CTRL+D window is sometimes too small (regression)
- E27576: Water: missings in jumpbar
- E27578: Water: show full file path via hint
- E27488: 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: new
replaceSymbol function
- 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:
experimental keyword for Oxygene (DCM only)
- 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 DelphiSupport
- 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)