LLVM-based Delphi Compilers
Go Up to Delphi Toolchains
The latest branch of Delphi compilers, also known as "next generation", is based on a ground-up implementation of a compiler front end, tied to LLVM as the compiler backend.
LLVM-based Delphi compilers are DCCIOSARM (32-bit iOS), DCCIOSARM64 (64-bit iOS), DCCAARM (Android), and DCCLINUX64 (Linux).
- Note: DCCLINUX64 uses one-based strings by default instead of zero-based strings (NEXTGEN), to ensure DCC64 compatibility. You can modify this with
{$ZEROBASEDSTRINGS ON/OFF}
.
New Language Features in LLVM-based Delphi Compilers
LLVM-based Delphi compilers introduce some significant new features in the Delphi language.
Following are the major language differences between LLVM-based Delphi compilers and other Delphi compilers:
- Automatic reference counting (ARC) for classes is supported by LLVM-based Delphi compilers.
- Note: All Delphi compilers (based or not on LLVM) support ARC for interfaces and dynamic arrays.
- Strings are 0-based (instead of 1-based) and are likely to become immutable (constant) in LLVM-based Delphi compilers.
- The following string types are NOT supported by LLVM-based Delphi compilers (but they do support UnicodeString, the default string type):
- WideString
- AnsiString and ShortString
- AnsiChar
- PAnsiChar and PWideChar
- OpenString
- Use of pointers is not supported by LLVM-based Delphi compilers.
For more information about writing code for LLVM-based Delphi compilers, see Migrating Delphi Code to Mobile from Desktop.