ZPE has changed enormously since its beginnings. This page tells the story of its major release generations: the ideas that defined each one and the ways they changed ZPE and YASS.
For individual release highlights, visit What's new in ZPE. The milestones page follows important ideas across versions, while the complete changelog preserves every recorded change.
Before ZPE: Foghorn and BlackRabbit
ZPE's lineage begins with the project originally codenamed Foghorn. BlackRabbit and its BBMSIL-based scripting system were designed to add readable macros and commands to applications including Painter Pro, Cobweb and Wonderword. The scripts were interpreted into operations carried out through C# and the .NET Framework.
BlackRabbit already had an editor that could create, run and debug scripts. It contained at least 50 commands and address lines by May 2011, and its July 2011 Platform Preview became my first major software milestone. By July 2012 it had reached 100 commands and was being tested by a wider group of users.
BlackRabbit Script was the first programming language I worked on, when I was around 16 or 17. Its focus on readable, application-hosted scripting survived into YASS, even though ZPE would later replace its Windows-centred .NET implementation with a faster Java architecture.
Version 1.7
ZPE 1.7 was one of the great architectural and performance releases. The compiler and runtime were separated, ZenithParser became faster, and LAME replaced LAMP with a much faster and more accurate logical and mathematical evaluator. Short-circuit logic and compiler-side constants brought further performance improvements.
The release also developed by-reference assignment, introduced a new JavaFX-powered GFX editor and added the ZPE web server that eventually helped inspire Velocity Web Server.
ZPE 1.7.4 launched ZPE Online, codenamed Munro Top, providing registration and cloud storage for programs. ZPE 1.7.5 then moved built-in data such as images towards language objects, strengthening the modern object model.
Version 1.8
Version 1.8 greatly expanded ZPE as a complete platform. The earlier client and server tools became ZEN Client and ZEN Server, gaining more reliable communication, encryption, interactive and threaded execution, file transfer and familiar Unix-like commands.
The -i option became the dedicated interactive
interpreter, indexed ranges and negative indexes arrived, and
Velocity Web Server support expanded ZPE's web capabilities.
ZPEKit became the supported public interface to the compiler and ZPE internals. This generation also developed reference types, deepened ZPE Online integration, improved protected compiled programs and made substantial performance gains.
Version 1.9
ZPE 1.9 began with additions such as the match statement and the
compound *=, /= and ^=
operators, but its defining work centred on variables and typing.
The let syntax made variables without a
leading $ practical. Later releases expanded
unbound-variable support and made strings fully chainable reference
values.
TYPO was redesigned from the ground up in ZPE 1.9.7. This second generation completed strong typing across YASS and allowed structures to declare typed properties, providing a much stronger foundation for later type-system work.
Version 1.10
ZPE 1.10 arrived in 2022 with online includes, better updating, records, by-reference values and parameters, and continued work on the interactive interpreter and public APIs.
Its most visible change was the editor. JavaFX was removed and ZPE moved to a new Swing interface that could stop running code and offered a more useful console. Syntax highlighting, line numbers, dark mode, code outlines, function-building tools, repository access and an integrated changelog quickly followed.
Later 1.10 releases expanded function return typing, typed parameters and ZPEKit, while continuing the separation of interactive execution and runtime responsibilities.
Version 1.11
The first ZPE 1.11 release arrived on 22 January 2023 and introduced type casting. Static reference methods subsequently made common value operations considerably faster.
Unbound variables matured so assignments such as
x = 10 no longer required let. The
empty keyword and functional list
operations such as map, filter and reduce made everyday programs more
expressive.
ZPE 1.11.10 introduced YASS Unfold, which explains the structure of a program and can export its explanation as HTML. The 1.11 generation also continued improving performance, compilation and the separation of the independently maintained Zenith Parsing Engine.
Version 1.12
ZPE 1.12 was one of the most significant generations in the project's history. LAME X2 delivered one of ZPE's largest expression-evaluation performance improvements, while the interactive interpreter gained persistent line history.
Compiler keywords replaced slower special functions, object-property iteration arrived and the transpiler system was redesigned around the complete syntax tree. Editor transpilation and the early ZenPy work made that system accessible in practice.
ZPE 1.12.7 introduced proper breakpoint debugging with runtime halts, source breakpoints and a breakpoint watch window. Namespaces, destructuring and multiple return values expanded the language.
The most fundamental change came in ZPE 1.12.9: values across ZPE Core
and then the wider platform became ZPEType values.
Predefined functions, native methods and maps moved onto this unified
runtime model. ZPEC later added a hash-based performance cache.
Version 1.13
ZPE 1.13 built on the unified runtime with new data formats, faster lookup structures and a broader development environment. INI, TOML and JBML parsing joined the existing parser family, while binary search trees improved access to functions, variables, properties, objects and parameters.
Modules were the generation's defining language feature. Compiler and runtime support established them as reusable code boundaries, followed by static member access, scoped constants and main functions that run separately from module ownership.
The editor underwent another major redesign using BalfLaf, adding a more integrated interface, themes, search, layout controls and deeper macro tooling. The Zenith Parsing Engine also advanced to a faster generation with cached lookaheads.
Version 1.14
ZPE 1.14 made massive performance improvements across the compiler, runtime and the wider application. It also continued turning ZPE into a stronger environment for building complete applications. ZPE 1.14.7 was a particularly important performance milestone and delivered the third major generation of TYPO alongside faster language and object operations.
ZPE 1.14.8 pushed this substantially further with major compiler, runtime and startup optimisations, reducing the cost of both launching ZPE and executing programs. It also introduced ordered maps, Storage, stronger program analysis and broader encoding support.
ZPE 1.14.9, Spurriergate, introduced ZEQL, native database
drivers and prepared statements, ZPE PM, project compilation, web
routing and a major overhaul of object inheritance. It also added
static structure methods and super->method() for calling
inherited implementations.

There are no comments on this page.
Comments are welcome and encouraged, including disagreement and critique. However, this is not a space for abuse. Disagreement is welcome; personal attacks, harassment, or hate will be removed instantly. This site reflects personal opinions, not universal truths. If you can’t distinguish between the two, this probably isn’t the place for you. The system temporarily stores IP addresses and browser user agents for the purposes of spam prevention, moderation, and safeguarding. This data is automatically removed after fourteen days. Your email address is stored so that replies can be sent to your email address.
Comments powered by BalfComment