ZPE has grown through a series of changes that altered what the language could express, how the engine worked, or how people could build with it. This page records those turning points rather than every individual addition and fix. The What's new page provides release-by-release highlights, while the complete changelog preserves the detailed history.
Origins
Foghorn and BlackRabbit Script
2011–2012 · The predecessor to ZPE and YASS
ZPE's lineage begins with the project originally codenamed Foghorn. BlackRabbit and its BBMSIL-based scripting system allowed readable macro commands to control applications such as Painter Pro, Cobweb and Wonderword through C# and the .NET Framework. The BlackRabbit 2011 Editor could create, execute and debug scripts, and its July 2011 Platform Preview became Jamie Balfour's first major software milestone. The language grew from at least 50 commands and address lines in May 2011 to 100 by July 2012.
Functions and the first GUI
ZPE 1.2.01 · February 2015
User-defined functions and function calls changed the early engine from a sequence evaluator into a language capable of reusable behaviour. The same release also contained the first experimental graphical mode, beginning a second way of working with ZPE beyond the command line.
The Zenith Parsing Engine
ZPE 1.3.0 · May 2015
A complete redesign introduced the Zenith Parsing Engine, nested function calls, assignment from function calls, parameter passing and compilation. This was the point at which parsing became central to ZPE's identity.
The interactive interpreter
The early -i workflow made it possible to try YASS immediately
without first building a complete script. It later became ZPE's dedicated
interactive-interpreter mode in ZPE
1.8.2, retaining declarations and evolving into a much more capable REPL.
Language milestones
Real Math Mode, LAMP, LAME and LAME X2
1.3.5.63 · 1.4.3 · 1.7.1 · 1.12.3
Real Math Mode replaced arithmetic expressed through functions such as
add() and subtract() with natural expressions. LAMP
later unified mathematics and logic; LAME replaced it with a faster and more
accurate evaluator; and LAME X2 delivered another major performance leap.
Structures, lambdas and objects
Structures introduced grouped state and behaviour. Lambdas then made functions assignable values, enabling callbacks and higher-order programming. Objects, member access, improved scoping and function chaining built on both ideas and permanently changed the way larger YASS programs were designed.
TYPO: three generations of typing
TYPO · 1.6.7 · TYPO 2 · 1.9.7 · TYPO 3 · 1.14.7
TYPO first brought runtime type checking to YASS. Its second generation was a ground-up redesign that completed strong typing and extended it throughout declarations and structures. TYPO 3 modernised the system again as part of ZPE 1.14.7's wider language and performance work.
Modules
Modules gave YASS a dedicated boundary for organising reusable code. Static access, scoped constants and main functions separated from module ownership then completed the first version of the model.
Architecture and performance
Parser and compiler separation
ZPE 1.5.3 · February 2017
The parser was separated from the compiler and became the reusable ZenithParser project. It immediately became the basis of ZPE's own JSON implementation and established parsing as a powerful component in its own right. This release also marked the point at which performance became a defining, continuously measured concern.
Compiler and runtime separation
ZPE 1.7.1 · January 2019
Separating the compiler from the runtime clarified their responsibilities and made compilation substantially more efficient. Together with the arrival of LAME and a faster ZenithParser, it was one of ZPE's largest architectural and performance overhauls.
Everything becomes a ZPEType
ZPE 1.12.9 · August 2024
Values throughout ZPE Core and then the wider platform were unified as
ZPEType values. Predefined functions returned them, native object
methods accepted them and maps required them. This removed a major divide
between Java-level values and the ZPE runtime model.
ZPEC
ZPE 1.12.12 · December 2024
The ZPE Performance Enhanced Cache used hashes to track edits and avoid unnecessary work. It became an active part of execution during the release and established another important layer of ZPE's performance architecture.
Development tools
The graphical editor grows up
GFX editor · 1.7.2 · Swing editor · 1.10.2 · Editor tools · 1.10.3
The GFX editor replaced the original Swing interface before ZPE later moved away from JavaFX and returned to a completely new Swing editor. Syntax highlighting, dark mode, code outlines, function tools, repository access and controllable execution turned it into a genuine development environment.
Debugging and breakpoints
Variable watching · 1.8.10 · Breakpoint debugger · 1.12.7
Debug mode first became a useful watch tool that reported variable changes, including changes in private functions. The later breakpoint system added runtime halts, source breakpoints, a watch window and dedicated debugger launch options in both the editor and console.
Transpilers
Language converters · 1.4.4.0 · AST transpilers · 1.12.5 · Editor integration · 1.12.6
Early support for external language converters eventually became a structured transpiler system. Passing the complete abstract syntax tree made new targets easier to build, and editor integration made transpilation directly accessible.
Platform and ecosystem
The web parser
ZPE 1.6.0 · May 2018
The -w web parser allowed web pages to contain executable YASS.
Shared variables across page chunks, ZPE-HTML and the later YWP format grew
from this first step into web-oriented execution.
ZEN Client and ZEN Server
Early client/server · 1.5.0 · ZEN platform · 1.8.1
The first client/server work made remote script execution possible. It later matured into ZEN Client and ZEN Server with a more stable protocol and public/private-key encryption, before gaining interactive, threaded and SSH-like file-management capabilities.
ZPE Online
ZPE 1.7.4 · March 2019
ZPE Online, codenamed Munro Top, introduced registration and cloud storage for ZPE programs. Public repositories, online includes and editor integration subsequently made sharing and retrieving code part of the platform.
ZPEKit
ZPE 1.8.7 · June 2020
ZPEKit became the supported public gateway to the compiler and other ZPE internals. It replaced ad-hoc public access with a deliberate embedding API that could evolve while protecting the runtime implementation.
ZPE PM and project compilation
ZPE 1.14.9 · September 2026
ZPE PM and project compilation moved ZPE towards complete application and project workflows, complementing modules, libraries and ZPE Online with a more coherent way to organise and build larger programs.
ZEQL and native database access
ZPE 1.14.9 · September 2026
ZEQL introduced a query language designed for ZPE, while native database drivers, prepared statements and database objects made data-backed YASS applications possible without relying on an external integration layer.

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