The version numbers that disappeared, came back, and changed names twice tell the ownership history as precisely as any press release.
From Numbers to Years to Numbers Again
Delphi 7 shipped in 2002 under Borland Software Corporation, and for a brief moment the product looked stable. Then Borland pivoted toward enterprise software tooling, and the Delphi releases that followed bore the scars of that indecision in their very names.

A parts store rather than a code library, but the same premise — take a standard piece off the shelf instead of making one.
Photo: Charlie Merrow / Pexels
Delphi 8, released in 2003, was the first to target the .NET framework exclusively — it could not produce native Win32 executables at all, a decision that alienated the existing installed base almost immediately. The following year Delphi 2005 introduced the year-based naming convention that would persist for several cycles, abandoning the integer sequence that had run cleanly from 1 through 7. The reasoning was broadly commercial: year-stamped names signalled currency in the same way Microsoft Office and Adobe products did. Delphi 2005 also reunited .NET and Win32 development in a single IDE, addressing the most visible complaint about Delphi 8.
Delphi 2006 and Delphi 2007 continued the year-name pattern, with Delphi 2007 arriving under a transitional arrangement: Borland had already announced its intention to spin out its IDE division, and CodeGear operated as a semi-independent unit within Borland before the sale to Embarcadero Technologies completed in 2008. Delphi 2007 was therefore simultaneously the last Borland-branded release and the first to carry CodeGear's imprint on the splash screen, depending on the precise build and marketing collateral.

The CRT is the era's one constant: everything in this section happened on a screen this shape.
Photo: cottonbro studio / Pexels
Embarcadero restored integer version identifiers — internally, at least. Delphi 2009, which introduced UnicodeString as the default string type and broke compatibility with a generation of AnsiString-dependent code, was version 12 in the internal numbering. Delphi 2010 followed as version 14. Then the year names stopped: Delphi XE arrived in 2010, Delphi XE2 in 2011, and the XE suffix iterated through XE8 by 2015. Each XE release carried an Embarcadero vendor announcement ↗ marking specific additions — 64-bit compilation arrived in XE2, for instance, alongside the FireMonkey framework.
After XE8, Embarcadero shifted again, this time to the "Seattle", "Berlin", "Tokyo", "Rio", "Sydney" and "Alexandria" city-name convention, documented in Embarcadero's own release history ↗. Each city release maps to an internal version number in the 23–36 range. The naming logic mirrors product-line fashion more than technical architecture, but the underlying compiler continued to develop: generics, mobile targets, Linux server support, and ARM compilation all arrived during this stretch.
Counted across the Embarcadero era alone, more distinct Delphi releases shipped after Delphi 7 than before it — a fact the naming instability somewhat obscures.
More in Versions
