Canonical Delphi compiler version mapping based on official VER###
symbols.
This repository defines the authoritative data model used by Continuous Delphi tooling to resolve, normalize, and compare Delphi compiler versions.
Most users only need these ready-to-download generated artifacts:
DELPHI_COMPILER_VERSIONS.incDelphiCompilerVersions.pas
You can download these manually in Releases
For scripted updates use curl:
curl -L -O https://github.com/continuous-delphi/delphi-compiler-versions/releases/download/v1.1.0/DELPHI_COMPILER_VERSIONS.incor PowerShell:
Invoke-WebRequest -Uri "https://github.com/continuous-delphi/delphi-compiler-versions/releases/download/v1.1.0/DELPHI_COMPILER_VERSIONS.inc" -OutFile "DELPHI_COMPILER_VERSIONS.inc"For projects using Git, submodule integration is the recommended approach as updates are a single command and the generated files are always available without downloading manually.
git submodule add https://github.com/continuous-delphi/delphi-compiler-versions \
vendor/delphi-compiler-versionsThen add the desired files from vendor/delphi-compiler-versions/generated to your project.
(Typically the DELPHI_COMPILER_VERSIONS.inc file) The tooling and tests found in the
rest of the repository can be ignored.
To update to a new version of the generated files:
git submodule update --remote vendor/delphi-compiler-versions- Dataset covers Delphi versions 2 and above (starts at
VER90) - Excludes C++Builder and .NET-only entries
- Includes registry metadata required for toolchain discovery
- Includes supported Build Systems and Target Platforms per version
This repository is data-first. The JSON file under data/ is the single
source of truth. All Continuous Delphi generated code and downstream
tooling derive from that dataset.
data/
delphi-compiler-versions.json # current dataset (Delphi 2+)
generated/ # Files generated from delphi-compiler-versions.json
DELPHI_COMPILER_VERSIONS.inc # for: {$IFDEF CD_DELPHI_FLORENCE_OR_LATER}
DelphiCompilerVersions.pas # for: TDelphiPlatform, DelphiVersions array...
PlatformSupport.md # visual platform support matrix
schemas/
delphi-compiler-versions.schema.json # JSON Schema for the dataset
tools/
generate-delphi-compiler-versions-inc.ps1
generate-delphi-compiler-versions-pas.ps1
generate-platform-support-md.ps1
tag-release.ps1
tests/
pwsh/
.github/workflows/release.yml # automated releases
- The generated include file and source file are generated and never manually edited.
- Tests enforce deterministic output and drift protection.
- GitHub Action workflow enforces passing tests, regenerates artifacts, and populates
release notes from
CHANGELOG.md
Canonical schema $id:
https://continuous-delphi.github.io/delphi-compiler-versions/schemas/delphi-compiler-versions.schema.json
GitHub Pages is enabled on the repository to serve the schema file.
The dataset file contains two independent version fields:
schemaVersion-- identifies the schema contract the dataset conforms to.dataVersion-- tracks the dataset contents under semantic versioning.
Primary file:
data/delphi-compiler-versions.json
schemaVersion-- schema contract version (e.g."1.0.0")dataVersion-- dataset content version (e.g."1.0.0")meta-- metadata object; see belowversions-- ordered array of version entries
generatedUtcDate-- UTC date the file was last updated (YYYY-MM-DD)scope-- inclusion/exclusion rules (informational)registryResolutionNotes-- guidance on hive-agnostic registry discoveryplatformNotes-- policy notes forsupportedPlatformsinterpretation
verDefine-- canonicalVER###symbol (primary identifier)compilerVersion-- string preserving the exactCompilerVersionvalue (e.g."37.0")productName-- commonly used product namepackageVersion-- package version identifier (nullable)regKeyRelativePath-- relative registry key path beneath HKCU or HKLM (nullable)supportedBuildSystems-- build systems supported by this version family; see belowsupportedPlatforms-- target platforms supported by this version family; see belowaliases-- additional commonly used identifiers that resolve to this entrynotes-- clarifications, historical remarks, or sub-version platform introductions
Install paths are intentionally excluded from the specification.
Tooling should resolve installation directories via the registry RootDir value.
An array of one or more of the following values:
| Value | Meaning |
|---|---|
DCC |
Direct command-line compiler invocation via dcc32.exe / dcc64.exe |
MSBuild |
.dproj-based builds via MSBuild (introduced in Delphi 2007) |
Entries prior to Delphi 2007 (VER180 and earlier) support DCC only. Delphi 2007
(VER185) and later support both.
An array of platform identifiers representing the union of all platforms supported across
all point releases within the version family. Where a platform was introduced in a sub-version
point release (rather than the initial release of the version family), this is noted in the
entry's notes array.
Valid platform values: Win32, Win64, macOS32, macOS64, macOSARM64,
Linux64, iOS, iOSSimulator, Android32, Android64.
The generated file:
generated/DELPHI_COMPILER_VERSIONS.inc
provides Delphi projects with standardized compiler version and capability defines derived directly from the canonical dataset.
It emits:
CD_DELPHI_<MarketingName>tokensCD_DELPHI_<Version>_OR_LATERconvenience tokensCD_DELPHI_COMPILER_VERSION_<major>tokensCD_DELPHI_PACKAGE_VERSION_<value>tokensCD_DELPHI_SUPPORTS_MSBUILDCD_DELPHI_SUPPORTS_PLATFORM_<Platform>tokens
This include file is:
- Canonical
- Data-driven
- MIT-licensed
- Deterministically generated
- Protected by automated tests
The generated file:
generated/DelphiCompilerVersions.pas
provides Delphi projects with a strongly-typed Pascal unit derived directly from the canonical dataset. It is compatible with Delphi 2 and all later versions.
It provides:
TDelphiPlatformenumeration with suffix-named members (e.g.Win32Target,Win64Target,MacOS32Target)TDelphiBuildSystemenumeration with suffix-named members (e.g.DCCSystem,MSBuildSystem)TDelphiVersionrecord with fields for all dataset properties, including anAliasesCsvfield for alias resolutionPDelphiVersionpointer typeDelphiVersionstyped constant array, sorted chronologicallyCD_SCHEMA_VERSIONandCD_DATA_VERSIONstring constantsGetLatestDelphiVersion-- returns the most recent entry in the arrayCurrentDelphiCompilerVersionandIsCurrentDelphiCompilerVersionKnown-- vars populated at unit initialization via{$IFDEF VERxxx}chains;IsCurrentDelphiCompilerVersionKnownisFalseif the compiler is not recognized in the datasetTryGetDelphiVersionByVerDefine,TryGetDelphiVersionByProductName,TryGetDelphiVersionByAlias-- lookup functions
The generated unit is intentionally written using a conservative subset of Object Pascal:
varparameters are used instead ofoutExitis used without a return value expressionusesitems leverage$IFDEF UNICODEfor implementing unit scoped names- functionality is exposed through simple procedures and functions rather than static classes.
These choices are deliberate to be able to use this unit from Delphi 2+
This Pascal unit is:
- Canonical
- Data-driven
- MIT-licensed
- Deterministically generated
- Protected by automated tests
tools/generate-delphi-compiler-versions-inc.ps1
tools/generate-delphi-compiler-versions-pas.ps1
Each generator transforms the canonical dataset into its respective generated artifact. Both share the same properties:
- Deterministic output
- Fully reproducible from JSON
- Safe to run in CI
- No manual editing of the generated files required
The test suite ensures:
- Correct token emission (
.inc) and correct Pascal output (.pas) - Historical compatibility is preserved (including
VER180/VER185) - Capability ranges are computed correctly
- CRLF line endings on all generated files
- ASCII-only content (UTF-8 encoding without BOM)
- Golden-file tests for both artifacts to prevent drift
This specification ensures that:
- Toolchain discovery is deterministic
- CI build machines can be validated reliably
- Compiler capabilities can be reasoned about programmatically
- Alias resolution is centralized
- Version detection logic is consistent across all tools
This repository is currently incubator. It will graduate to stable
once:
- The schema is considered frozen at
1.x - CI validation is in place
- At least one downstream tool consumes the dataset
- No breaking schema changes are anticipated
Until graduation, breaking changes may occur.
This repository follows the Continuous Delphi organization taxonomy. See cd-meta-org for navigation and governance.
docs/org-taxonomy.md-- naming and tagging conventionsdocs/versioning-policy.md-- release and versioning rulesdocs/repo-lifecycle.md-- lifecycle states and graduation criteria