LLVM-based Delphi Compilers

From RAD Studio
Jump to: navigation, search

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.

Topics

See Also