KOL and MCK

A reference on Object Pascal, the Delphi line and the libraries built on it.

After Borland

Oxygene and the Branch That Went to .NET

KOL and MCKAfter Borland

Two computer monitors displaying lines of code in a dimly lit room at night

Object Pascal syntax on a managed runtime: the same language with a different machine underneath it.

A Pascal Compiler That Chose a Different Runtime

RemObjects Software's Oxygene occupies an unusual position in the Object Pascal family tree: it compiles a recognisably Pascal-derived language, but targets managed runtimes — primarily the .NET Common Language Runtime and, in later iterations, the Java Virtual Machine — rather than the native code that Delphi and Free Pascal and Lazarus produce. The compiler ships from RemObjects as a commercial product, integrated into Visual Studio rather than any Pascal-lineage IDE.

The language Oxygene compiles descends directly from the Chrome compiler that RemObjects first released in the mid-2000s. Chrome was an Object Pascal dialect shaped explicitly for .NET — adopting reference semantics, garbage collection and the BCL (Base Class Library) in place of the VCL and manual memory management. When RemObjects rebranded Chrome as Oxygene in 2008, the name change signalled an ambition beyond a niche tool: the product positioned itself as a first-class .NET language with Pascal syntax. Anders Hejlsberg's work at Microsoft had demonstrated that a language designed for managed runtimes could carry enormous commercial weight; Oxygene was, in part, a wager that Pascal syntax could compete in that space.

A conference room at a Delphi-era developer event, projector displaying a code slide, adult audience members seated, speaker at the front

Delphi-era developer conferences were where version changes got argued out in front of the people who had to migrate.

Photo: Matheus Bertelli / Pexels

Delphi 1 retail box, CD and printed manual set arranged on a desk, 1995 Borland packaging and logo legible, warm tungsten light

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

The distance from Delphi's own Object Pascal is real and significant. Oxygene dropped several constructs central to Delphi — units as conventionally structured, the published property mechanism and RTTI-driven form streaming — and introduced syntax for .NET concepts such as namespaces, nullable types and lambda expressions that have no direct equivalent in the Embarcadero compiler. The Delphi 2009 Unicode migration demonstrated how difficult compatibility breaks can be even within a single product line; Oxygene accepted a far cleaner break, treating Pascal as an aesthetic starting point rather than a compatibility obligation.

What Oxygene illustrates is the tension inherent in any language fork toward a managed runtime. The host platform's type system, memory model and deployment conventions exert gravitational pull on every design decision; over successive releases, the compiler's Pascal heritage becomes progressively harder to see beneath the .NET Common Language Infrastructure specification ↗ that shapes its output. The language remains Pascal in its block structure, its begin/end pairs, its explicit typing — the markers Niklaus Wirth fixed when he published the original specification at ETH Zürich in 1970. Whether that constitutes continuity or appropriation is a question the Pascal community has never quite settled about Oxygene.

More in After Borland

All of After Borland