Thesis / report · 2026
Design Concepts of the J% Programming Language (Revised Edition)
Vassilios Karakoidas
A 2026 revision of the design chapter of the PhD thesis, rewritten alongside the j-mod compiler so that the language's rules are precise enough to test and the claims are ones the rest of the thesis can actually establish.
- Published in
- 2026 update of Chapter 3 of the PhD thesis, revised alongside the j-mod compiler reimplementation
- Citations
- Not indexed by Google Scholar.
- Cite as
- KARA26
The idea
The 2015 chapter asked how domain-specific languages can be embedded in general-purpose ones efficiently, conceded that efficiency is hard to define, and then never defined it. The revision decomposes that into three questions the thesis can answer with evidence: whether embedded DSL programs can be validated at compile time and which classes of fault move there as a result; whether the data flowing across the language boundary can be made type-safe and relative to which assumptions; and whether a new DSL can be supported without modifying the host compiler, at what cost to the programmer who merely uses it.
What changed
- Informal claims are replaced by a stated module contract and a safety theorem. The 2015 text promised that exchanged values would be “proper” — a value-level property no static check can deliver — and that promise is withdrawn rather than restated.
- Requirements are written so a later chapter can check them, and each is traced to the design element that realises it.
- A new requirement on diagnostic attribution: every error reported against source the programmer actually wrote, every boundary failure identifying its responsible party. The chapter says plainly that this is where the design is weakest.
- An analysis of validation oracles — what “checked” means depends on the grammar or engine that defines well-formedness — and of the environmental oracles the original walked past.
- The extensibility claim is sharpened. J% is coupled to Java, so host-independence was never the differentiator; module-pluggability at low buy-in cost is.
Every change is itemised in the chapter's own §3.8, and notes marked [Retrospective] flag the places where it reasons about systems built after 2015.
Where it sits
The compiler it was revised alongside is J%; the original chapter is part of the 2015 thesis.
Written from the paper itself — the PDF linked above, which this site hosts.