This is the concise history of ZPE: what made each version important, the new capabilities it introduced, and the performance or usability work worth knowing about. The ZPE milestones page follows the most important ideas across multiple releases. Routine maintenance remains in the complete changelog.
ZPE 1.13.9
31.08.2025
This release combined new language or runtime capabilities with worthwhile performance work.
Performance
- Reference functions are now fully static, thus improving performance
New capabilities
- Added new sandboxing to plugins to restrict their access to certain classes
- Added the dump reference method to the ZPEString
Important fixes
- Fixed an issue with records not being properly constructed
ZPE 1.13.8
27.07.2025
This release combined new language or runtime capabilities with worthwhile performance work.
Performance
- Updated the parser to version 5. ZenithParsingEngine version 5 offers approximately 24% higher performance than before due to caching of lookaheads.
New capabilities
- Added exception handling in the ZPEConsole if it doesn't not start the code
- Added new dark mode colours to the editor
- Added the Simple UI feature to switch to a standard UI
- Added the new YASSKeywordsSet to ZPEKit
- Added module to the list of symbols to the symbol to string method
- Added modules to YASSUnfold.
Notable improvements
- Changed the location of the ZPE properties and files needed to the Application Support (macOS) and AppData folder on Windows
- Changed the colours of highlights in the editor
- Improved the ZPEMacroInterface to now use the ZPEKit YASSKeywordsSet and improved the look of the ZPEMacroInterface
- Redesigned the menu layout within the GUI with a new Window menu
Important fixes
- Fixed an issue in which the Date object used parameters.size not contains when checking to see if a type had been specified
- Fixed the macOS menu bar feature (if the user is using the Mac menubar it will work properly again)
ZPE 1.13.7
06.05.2025
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added string_count_occurrences function to count the number of occurrences of a character or sequence of character, or multiple sequences of characters
- Added the search box
- Added search box suggestions
- Added many UI improvements from the latest version of BalfLaf, particularly the new Dark Mode look and feel.
- Added an optional parameter to the list_zpe_functions method that if set to true produces a map containing the name.
- Added new Dock positions to the editor
Important fixes
- Fixed an issue in which the Date object used parameters.size not contains when checking to see if a type had been specified
ZPE 1.13.6
29.04.2025
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added tooltips to some of the buttons across the interface
- Added UI improvements, mainly to the menubar
- Added a fix that fixes the problem that prevents ZPE from starting if running in the GUI
- Added a new purple theme to ZPE since ZPE's colour is purple.
- Added a new splash screen to the editor
ZPE 1.13.5
20.04.2025
Completed the initial module model with static access, scoped constants and main functions that execute separately from module ownership.
New capabilities
- Added support for scope based constants
- Added the immediate output window to the Macro Editor
Notable improvements
- Improved the means of accessing variables statically within modules
- Updated the ZPE Macro Interface editor so that it can accept multiple hook objects that can be used in programs
ZPE 1.13.4
11.04.2025
Introduced compiler and function support for modules, giving YASS a new organisational boundary for reusable code beyond its existing structures and libraries.
New capabilities
- Added compiler support for modules
- Added function support for accessing modules
Notable improvements
- Updated references to the Zenith Parsing Engine to v4
Important fixes
- Fixed an issue in which camel cased internal aliases didn't work due to trying to reference non-camel cased internal functions
ZPE 1.13.3
01.03.2025
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added support for concatenation within JBML
- Added support for properties within JBML
- Added concatenation between properties and other properties
Notable improvements
- Updated the copyright information
- Updated the JSON parser to now use the Zenith Parsing Engine v1.5. Other uses of the engine use v1.4.2.
- Updated the error message to be more thoughtful when the value data type does not match the array data type
Important fixes
- Fixed an issue in which ZPEArrays were incorrectly calling copyMe from the ZPEList
ZPE 1.13.2
08.02.2025
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added support for comments in JSON. These should be used with caution as other parsers might not support these.
- Added the JBML parser
- Added the jbml_decode function
- Added the new ALWAYS_BEAUTIFY_OUTPUT property that means output from the print function will always beautify the output first
Notable improvements
- Updated the JBML format to use the new changes brought to the format such as { x : y } rather than [ x => y ]
- Updated references to BalfML to JBML.
Important fixes
- Fixed a bug in TOML where a new line inside an array before a comma might cause an issue
- Fixed an issue in which the default value for ChatGPT was null and caused the program to fault.
ZPE 1.13.1
26.01.2025
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added support for ChatGPT.
- Added the AI Assistant to the editor
- Added the new pipe command that takes in a value and infinite function references and applies each of the functions to the value
- Added the new INIParser, currently with only the INI decode feature
- Added the ini_decode predefined function to ZPE
- Added the new TOML parser. It's similar to the INI parser, but works on the TOML language.
Important fixes
- Fixed an issue in which new lines inside an array would cause an error.
ZPE 1.12.12
21.12.2024
Introduced the ZPE Performance Enhanced Cache, or ZPEC, using hashes to track edits and avoid unnecessary work; by the end of the release it was active and delivering measurable performance gains.
Performance
- Added ZPE Performance Enhanced Cache (ZPEC)
- ZPEC is now running and does indeed improve performance
New capabilities
- Added the list_libraries command
Important fixes
- Fixed a serious bug that meant that unless the data used with not/! was a number it would always return null
- Fixed an issue with the syntax compilation of declare. E.g. declare x as string = "Hi" wouldn't work. This is likely down to the introduction of the new built-in typing system.
ZPE 1.12.11
26.10.2024
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added in the new function tooltips into the editor
- Added the new Pair object type
Notable improvements
- Redesigned the ZPE class to only contain core features, added the new ZPEMain class which is the main interface to running the application from the command line.
Important fixes
- Fixed an issue with the Calculator object due to the changes made to ZPE recently
- Fixed an issue in which exiting the interactive help in the interactive interpreter threw a warning.
ZPE 1.12.10
04.10.2024
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the ApacheHandler for the Apache Web Server.
- Added support for multiple returns from a function. E.g.
- Added autocomplete suggestions to the editor
- Added the new ZPEKit getTypeKeywords.
- Added the publicly accessible ZPEMacroInterface editor.
Notable improvements
- Updated the version number, date and name for the next version
- Changed the way multiple return values works when passing as a parameter so that it is converted to a ZPEList.
- Improved for loop structure
Important fixes
- Fixed the issue in which tuples returned null when a copy was made.
- Fixed a bug that meant that if case insensitive compile was enabled, function calls would be case insensitive
ZPE 1.12.9
01.09.2024
A foundational type-system release: values across ZPE Core and then the wider platform became ZPETypes, predefined functions returned ZPETypes, and native object methods accepted them directly. This unified the runtime model and created a much stronger base for later language features.
Performance
- Added the new TYPE keyword, identical to the TYPE function in syntax, with slightly higher performance
New capabilities
- The Do While statement now supports unbracketed conditions at the end if they are terminated with a semi-colon
- Added support for tuples e.g.
- Added safety features to prevent crashes if a tuple is incorrectly defined
- Added the REQUIRE_EXPLICIT_VARIABLE_DECLARATION property, which if set to true, ZPE requires variables to be typed and defined prior to use.
- Added the requires_explicit_declaration directive that does the same thing but can be set to on or off per script
Notable improvements
- Changed ZPEObjectNativeMethods to pass ZPEType parameters, further consolidating the ZPEType throughout the language.
- Changed the way that ELSE statements compile within an IF statement as this was causing issues within the transpilers.
- Improved the scrollbars in the GUI
Important fixes
- Fixed an issue in which the open command did not work on a SequentialFileObject as it was internally named open_file when it should just have been open.
- Fixed an issue that occurred because of the new data type requirements when loading data as JSON format.
ZPE 1.12.8
30.07.2024
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added simple support for namespaces in YASS and ZPE (this is the first new version of YASS in a while, known as YASS 24.7)
- Added a feature to ZPEKit to list all byte codes and their definition
- Added the bytes option to the -h ZAC to list all byte codes in ZPE
- Added the new ZPERandomizer for generating random numbers and the like
- Added a new logs folder in the main ZPE folder where old logs are kept
- Added support for the null value in a JSON file
Notable improvements
- Updated with the latest version of the Zenith Parsing Engine.
- Changed the ZPE -o so that if no ZAC value is provided it will list everything
- Updated and simplified the regexps in the byte codes
- Updated the ZPERuntimeException to be the basis of all runtime-based exceptions
Important fixes
- Fixed an issue in which ZPE would try to compile the standard library every time it starts up
- Fixed an issue in which the shell command would return a non-ZPE compliant data typed value.
ZPE 1.12.7
01.07.2024
Introduced proper breakpoint debugging: dedicated runtime halts, source breakpoints, a breakpoint watch window and debugger launch options arrived in both the editor and console.
New capabilities
- Added the iif function
- Added the import lib as name, e.g. import stdLib as lib, $l = new lib
- Added the new Breakpoint Watch window to the ZPE editor
- Added the new Run code with debugging on option to both the editor and the console
- Added support for unescaped strings using the @ sign in front of a string. E.g.
Important fixes
- Fixed an issue in which PERMISSION_LEVEL wasn't read correctly unless it was lowercase in the properties file
ZPE 1.12.6
01.06.2024
Brought transpilation into the built-in editor and continued formalising transpilers as named, first-class ZPE tools.
Performance
- Function traversal is now done in a static manner, meaning higher performance and lower memory footprints for function instantiation
New capabilities
- Added the ability to transpile code from the built-in editor
- Added the -n option to --update allowing the downloading of 'nightly' builds
- Added support for variables called $count, $length, $record, $default through a list of $-bound variable names that use keywords
- Added the ZPE_VERSION_BUILD constant.
Notable improvements
- Changed the plugin interface to use camel case on all exposed functions and to ensure that they begin with get. E.g. getParameters.
- Changed ZPE_MAJOR_VERSION, ZPE_MINOR_VERSION and ZPE_CLI_VERSION constants to be updated automatically with the version of ZPE they are bundled with.
Important fixes
- Fixed an issue in which internal aliases were not working. This might actually have existed for some time now as version 1.12.5 also has this bug.
ZPE 1.12.5
15.05.2024
Modernised the transpiler architecture by passing the complete syntax tree to transpilers, making new language targets considerably easier to implement.
New capabilities
- Added the const keyword, e.g. const x = 10
- Added support for $-unbound variables in for...each loops
- Added support for object iteration of public properties. For example,
- Added an additional challenge to check if AWT is installed before trying to launch the graphical editor. This stops installations such as native images trying to launch it.
Notable improvements
- Improved the transpiler system to make it easier to make transpilers
Important fixes
- Fixed an issue in the for...each loop that meant new changes didn't work
- Fixed an issue in which unbound typed parameters would not correctly be passed to the program
ZPE 1.12.4
11.04.2024
Refined LAME X2 for still better performance and readability while substantially improving the interactive interpreter.
Performance
- Made minor changes in LAME X2 that would improve readability of code and performance of LAME
- Further to the above, the NO_PARSE_MODE (aka, special functions) have been removed, which should increase performance
New capabilities
- Added the jLine tool to interactive interpreter to allow line history to be accessed within the interactive interpreter (no need for rlWrap)
- For...To now supports mathematical expressions in the maximum (e.g. for $i = 0 to $x + 3)
- New escape sequences \n, \r, \t are now supported in strings and inline documents
- New features have been added to the Help menu in the editor.
Notable improvements
- Improved the installer application on Linux and macOS.
Important fixes
- Fixed the aliases feature, e.g. function x aliases print
ZPE 1.12.3
16.03.2024
Made LAME X2 available, delivering one of the largest expression-evaluation performance improvements in ZPE's history.
Important fixes
- Fixed a bug in which ZPE would fail to start under certain circumstances down to a permission level setting not being set
ZPE 1.12.1
05.01.2024
This release refined ZPE with a focused collection of improvements and fixes.
Highlights
- The Undefined and UndefinedPath have been changed to static variables
- It was also noticed whilst testing this that the undefined function doesn't work due to undefined being a keyword, so the function was removed
- Creation of the new in-order LAME expression evaluator - this is not on live tracks yet
ZPE 1.11.12
30.12.2023
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the mixed type byte code to string conversion
- Added the string_compare function, which is useful for sorting strings
- Added the -h changes option to allow easy access to the changelog for ZPE
Important fixes
- Fixed an issue with undo not working in the editor, causing the program to crash
ZPE 1.11.11
15.11.2023
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the list reference functions LIST.map, LIST.filter and LIST.reduce based on the JavaScript functions
ZPE 1.11.10
17.10.2023
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the new YASS Unfold feature.
- Added the unfold static method to ZPEKit, allowing external access to YASS Unfold.
- Added support for exporting to HTML in YASS Unfold
ZPE 1.11.9
09.09.2023
This release combined new language or runtime capabilities with worthwhile performance work.
Performance
- Further improvements to static underlying methods mean that the ZPE takes less memory and starts faster
New capabilities
- Added the list_is_empty function to check if a list is empty (since removed)
- Added the empty keyword, which can be used to check if a list, map, string or object is empty (i.e contains no elements, keys, substrings or properties, respectively)
- Added the compiler directive prevent_auto_include.
- Added the -h log feature to access and view the ZPE Log.
Important fixes
- Fixed the list_insert_at_index function as it was incorrectly referenced as list_insert_at and would not run as a result
- Fixed an issue in which editors not run from the command line would have no function information
ZPE 1.11.8
30.08.2023
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the ALLOW_UNBOUND_VARIABLES property that allows the definition of unbound (e.g x = 10) inline variable declaration
Important fixes
- Fixed an issue in the manual that meant that internal functions would not display data about them at all. This came from the move to static predefined functions.
ZPE 1.11.6
03.06.2023
This release concentrated on making ZPE faster and more efficient.
Performance
- Huge performance improvements that make loading much faster due to the use of static code and reflection
ZPE 1.11.4
30.04.2023
This release combined new language or runtime capabilities with worthwhile performance work.
Performance
- Added a new startup option called SHOW_COMPILE_COMPLETE_MESSAGE which shows a message when compilation is done with the -r ZAC
New capabilities
- Added the new inline iteration feature, e.g.
- Added support for count in mathematical expressions e.g.
- Added union return types
- Added a minor fix to prevent double undo in the editor (removed accelerators from the menu items)
Important fixes
- Fixed an issue in which reference functions worked on a copy of a variable
ZPE 1.11.1
22.01.2023
This release refined ZPE with a focused collection of improvements and fixes.
Highlights
- The first major update of the year brings type casting. Currently the main use for this is when a value needs to be stored in a typed variable: e.g.
- string $x = "10"
- integer $y = 20
- $y = cast($x, number)
- jANSI library bumped up to 2.1.0
ZPE 1.10.12
29.11.2022
This release combined new language or runtime capabilities with worthwhile performance work.
Performance
- Global variables now use the global keyword, rather than the function, leading to better performance
New capabilities
- Added the AutoGUI object
Important fixes
- Fixed the issue in which Windows users had a bad looking editor
ZPE 1.10.11
20.11.2022
This release combined new language or runtime capabilities with worthwhile performance work.
Performance
- Minor performance improvements using the FOR_TO byte-code instead of compiling into a FOR loop (requires re-compilation)
New capabilities
- Added the new Socket object, which allows for easy server socket and client socket communication
- Added the http_download function
- Added the int function as an alias to the value function
- Added support for short expressions in if statements e.g.
Important fixes
- Fixed an deprecation in which the ZPE compiler referred to itself as ZEN
- Fixed a weird issue in which a string containing a number would type as a number
ZPE 1.10.10
15.10.2022
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the new MQTT object which will allow MQTT publish and subscribe functionality
- Added the publish functionality to the MQTT object
- Added the UI builder object back into the ZPE Core
Notable improvements
- Improved the MQTT object
ZPE 1.10.9
16.09.2022
This release refined ZPE with a focused collection of improvements and fixes.
Notable improvements
- Changed the way in which the ZPE environment detects the install path
Important fixes
- Fixed the evaluate function for the new syntax requirements
ZPE 1.10.8
25.08.2022
This release combined new language or runtime capabilities with worthwhile performance work.
Performance
- Minor performance improvements
New capabilities
- Added return types to functions, e.g.
- Added the option_base_1 property allowing array access to start at 1
Important fixes
- Fixed an issue in which ZPENumber typed values would not correctly return a result
- Fixed an issue in which objects would be downcast. For example from ZPEDateObject to a standard Object without properties
ZPE 1.10.7
18.07.2022
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the is_symlink function to check if a file is indeed some form of junction or link
- Added the replace_symlink function to do a direct replacement of a symlink
- Added the create_symlink function to create a symlink
- Added the run_in function
- Added the XEN mode to ZPE, which will be used in the future for cron jobs
- Added whether or not a function can be overwritten into the manual
ZPE 1.10.6
19.06.2022
This release combined new language or runtime capabilities with worthwhile performance work.
Performance
- The std_out function now only takes one parameter but works faster than the print function by asking the value to output itself
New capabilities
- Added the timeout parameter to the ping function
- Added the get_hostname function
ZPE 1.10.5
05.05.2022
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the -o ZAC that allows downloading from the ZPE Online public repository by it's public hash ID
- Added in the new record structure, see https://www.jamiebalfour.scot/projects/zpe/documentation/data-types/record/
Important fixes
- Fixed an issue with when-is statements that prevented them from compiling multiple statements
ZPE 1.10.4
21.04.2022
This release combined new language or runtime capabilities with worthwhile performance work.
Performance
- Made an improvement to by value performance
New capabilities
- Added the --version ZAC
Notable improvements
- Changed all associative array functions to map functions, including internal documentation
Important fixes
- Fixed an issue in which a ZEN Client would crash if the server responded that a command was not supported
ZPE 1.10.3
21.02.2022
Turned the new Swing editor into a stronger development environment with syntax highlighting, dark mode, code outlines, function-building tools, repository downloads and an integrated changelog.
New capabilities
- Added the new dark mode to the editor
- Added the option to view the changelog from the editor
- New 'function machine' creator in the GUI editor
- Added the ability to download files from the ZPE Online Public Repository from the editor
- Added the ability to GetFunctionNames to ZPEKit which compiles and returns all functions in a program
- Added the Create code outline feature to the GUI
Important fixes
- Fixed an issue in which the compiler did not accept a function call in a for...to loop. e.g. for ($i = 0 to len($str))
- Fixed an issue in which Fn keys (amongst others) would be picked up by the editor console
ZPE 1.10.2
18.02.2022
A major GUI turning point: ZPE retired its JavaFX editor, moved entirely to Swing, gained the ability to stop running code and substantially expanded the editor interface.
Performance
- The beep function is now faster and more responsive
New capabilities
- Added the OpenJDK/JFX requirements to the class path
- New additions to the UI
Important fixes
- Fixed an issue in the JSON encoder that now makes it more flexible
ZPE 1.10.1
15.01.2022
This release combined new language or runtime capabilities with worthwhile performance work.
Performance
- Small performance improvements using cached files (not yet released)
New capabilities
- Added the ZPE Online includes feature. Simply type: includes online {code} where {code} is the online code
- Added the list_compose function, which can help with quickly generating a list
Important fixes
- Fixed an issue which would close the socket after a put command in the ZENClient
ZPE 1.9.13
28.12.2021
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the new Map data type which supersedes the list data type for Maps
- Added the file_touch function to 'touch' a file and set its modification time
- Added the list_contains_all function which checks if list1 contains everything list2 contains
- Added the string_to_list function to split the string into a list of characters
- Added the copy_of function to make a pure copy of a value
- Added the rainbow effect to the format_string function
Notable improvements
- Changed the way that the exit function works in GUI mode
- Changed the way in which the write function works in the GUI editor console
- Changed the way that documentation is 'bound' to fASTs
Important fixes
- Fixed an issue that prevented strings from being iterated correctly
- Fixed an issue in the ZENServer that meant that when a file was put it disconnected from the client
ZPE 1.9.12
12.12.2021
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the sign function which determines if a value is positive or negative
Notable improvements
- Updated the counter function manual to reflect that it works on more than just strings
Important fixes
- Fixed the write function
ZPE 1.9.11
10.11.2021
This release combined new language or runtime capabilities with worthwhile performance work.
Performance
- Further improved the GUI console performance and text input
New capabilities
- Added the options to visit the ZPE Online website and public ZPE Online repository
- New GUI console allows text input
ZPE 1.9.10
01.11.2021
This release combined new language or runtime capabilities with worthwhile performance work.
Performance
- Fixed an issue in which setting a boolean or numeric value to null would cause a memory exception
New capabilities
- Added the .copy method to ZPELists
- Added the list_remove_all function
- Added the optional decimal_places parameter to the round function
Notable improvements
- Changed the way in which ZPEStrings are assigned from variable to variable so that they copy the value and do not reference it. E.g. $a = "Hello" $a = $b
- Changed the null value works underneath the surface
Important fixes
- Fixed an issue in which the get_type function wouldn't return a comparable string
- Fixed an issue in which http_post did not return a string correctly
ZPE 1.9.9
22.09.2021
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the format_string function
- Updated the supports function to check all aliases as well as parent functions for support
Important fixes
- Fixed an issue in which the get_definition function would return an incomparable string
ZPE 1.9.8
09.08.2021
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Re-added support for internal/local structures within a function
- Added more information about why a login hasn't worked for ZPE Online
- Added the help program to the interactive interpreter
- Added the new in_range predefined function
Important fixes
- Fixed a long standing issue with modular arithmetic
ZPE 1.9.7
01.07.2021
Introduced the second generation of TYPO: strong typing was redesigned from the ground up, completed across YASS and extended to typed structure properties.
Important fixes
- Fixed an issue within the Zenith Parsing Engine that prevented double values with an exponent from evaluating correctly
- Fixed a long standing issue in which FAST values weren't copied correctly
ZPE 1.9.6
28.06.2021
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the be keyword, e.g. let x be 10
Important fixes
- Fixed an issue in which increment assignment and decrement assignment values would not work
ZPE 1.9.5
26.06.2021
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the new PHP 8 style match statement e.g.
- Added the DoNothing object
- Added the ScheduledCommand object that can now allow a thread to execute a command the future to be interrupted
- Re-added the not keyword, this works identically to the ! except it requires a bracketed expression e.g. print(not(true))
- Added the set_id to all UI objects
- Added the get_remote_ip_address command to retrieve the IP address on the public Internet
Notable improvements
- Changed the way in which the time thread works which makes them more reliable
Important fixes
- Fixed an issue that prevented strings from being serialised, and in turn any data type containing strings
ZPE 1.9.4
15.04.2021
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added a new data type, the record structure: e.g.
- Added the new log predefined function
Important fixes
- Fixed a major issue with else if statements. They can now only be written as elseif again
ZPE 1.9.3
11.04.2021
This release combined new language or runtime capabilities with worthwhile performance work.
Performance
- Minor performance improvements
New capabilities
- Added the new optional let keyword, e.g. let $x = 10
- Added in a new syntax for declaring variables without a dollar in front i.e. let x = 10
- Added support for new variables with lambda functions, e.g. let x = function(y) print(y) end function x("Hello")
- Added the var keyword which can be used in place of let
Notable improvements
- Improved the quality of the output when a native object function cannot be run due to permission levels required
Important fixes
- Fixed an issue that meant that fixed loops didn't work correctly on an initial value (e.g. for (-2 to 10) would start on 0)
ZPE 1.9.2
23.03.2021
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the get_unique_id predefined function
- Added the generate_random_string predefined function
- Added the *=, /= and ^= operators
Notable improvements
- Updated the increment/decrement operators to use long values rather than integer
ZPE 1.9.1
09.02.2021
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added support for empty associative arrays to JSON parser
- Added the match statement, similar to the case statement
- Added the else option in the match statement
Important fixes
- Fixed empty lists in the ZenithJSONParser
- Fixed an issue that caused parameters to always be set even if they weren't
ZPE 1.8.13
04.12.2020
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the ZENClient object that allows the client to run in pure YASS code
Important fixes
- Fixed an issue with the ZPEString used as a key in an associative array
- Fixed an issue with assertion and comparing strings
ZPE 1.8.12
07.11.2020
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the create_variable command to create local variables on the fly
- Added the -flush command to interactive interpreter to clear all global variables
- Added the say command to ZENServer/ZENClient
- Added the ZPEString data type replacing the standard string
ZPE 1.8.11
21.10.2020
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added infinite parameters to functions
Important fixes
- Fixed an issue that threw infinite errors in the -a mode when there was a compile issue
- Fixed an issue where an empty file list in compilation would cause an error and crash the compiler
ZPE 1.8.10
04.09.2020
Made debugging substantially more useful by turning debug mode into a watch-style tool that reported variable changes, including changes inside private functions.
New capabilities
- Added the file_encrypt and file_decrypt functions
- Added the file_get_path function which will obtain the absolute path of a file or directory
- Added the file_get_parent_path function will obtain the absolute path of the parent directory of a file or directory
- Added several SSH-like commands ls, cd, pwd and cat to the ZENServer and ZENClient
- Added real Unix style file paths using my own version of the .. in a path to the ZENServer
- Added the mkdir and rm commands to ZENServer and ZENClient
Notable improvements
- Changed the logo in the command line
Important fixes
- Fixed an issue in which compiled applications given a -level argument could not be given arguments
- Fixed a few issues with the installer package to make it work more in a more seamless way
ZPE 1.8.9
05.08.2020
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the command documentation feature to the GUI editor
- Added the require keyword as an alternative for import
- Added the list_compress function which compresses a list, for example: list_compress([11, 22, 33, 44, 55, 66, 77], 3) returns [11, 22, 33]
- New Recent Cloud Files option in GUI
- Added the ability to run a ZENServer from the GUI
- Added the ONLINE_PATH and ZULE_PATH properties to the properties file
Important fixes
- Fixed the issue with http_post and ZPE Online and made POST requests function correctly again
- Fixed the broken tray icon in GUI
ZPE 1.8.8
22.07.2020
This release combined new language or runtime capabilities with worthwhile performance work.
Performance
- Fixed an issue and improved performance of the new send> command within the ZENClient and ZENServer
New capabilities
- Added in a simple send> command to the ZENClient that allows the sending of files via the client to the ZENServer
Important fixes
- Fixed a few bugs that seemed to occur within the GUI mode
ZPE 1.8.7
10.07.2020
Introduced ZPEKit as the supported public gateway to the compiler and ZPE internals, creating a cleaner and safer embedding API for other applications.
New capabilities
- Added the list_plugins function which returns all active plugin functions
- Added the get_function_information function which returns information from the function manual (see --man for more information)
- Added the ZPECalculator object, which contains an expression compiler used to evaluate an expression
- Added the list_combine function which can combine a list into a string very quickly
Notable improvements
- Improved the way in which replacements are done in the graphical editor
- Improved the to_binary function which can now accept a string of characters which will be converted to their binary equivalent
Important fixes
- Fixed an issue with the --man command and mixed types being displayed as an object
ZPE 1.8.6
10.06.2020
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the extends keyword as an alternative to inherits for inheritance of classes or structures
- Added the option to create a constructor with the name of the class, like C or Java, e.g class Animal { function Animal() { } }
- Added index ranges e.g. $x[1:3] similar to Python
- Added in negative index support, e.g. $x[-1] which will work in reverse, again similar to Python
- Added the list_drives function which lists all root drives
- Added support for the Velocity Web Server through the Velocity Module
ZPE 1.8.5
23.05.2020
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the file_get_bytes function
- Added the play_audio function which plays an audio stream
Notable improvements
- Changed the play_audio function to open_audio_stream which returns a ZPEAudioStream object
Important fixes
- Fixed an issue in which object comparison through the _compare method didn't work
ZPE 1.8.4
26.04.2020
This release refined ZPE with a focused collection of improvements and fixes.
Notable improvements
- Improved the in-line document syntax by supporting variables
- Changed the domain for the installer to jamiebalfour.scot
- Improved the way objects, associative arrays, lists etc are iterated and made it more flexible
Important fixes
- Fixed an issue in which the list_parameters function required at least one parameter
ZPE 1.8.3
25.03.2020
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the list_count_occurrences function
- Added the list_count_if function
- Added support for null values in the JSON parser.
- Added the inline documents syntax
- Added the say alias for the speak function
Important fixes
- Fixed an issue that meant that ZPEObject values would sometimes not save correctly when cached.
- Fixed an issue in which imported libraries were not accessible in all cases
ZPE 1.8.2
15.02.2020
Made -i the dedicated interactive-interpreter mode and improved its responsiveness, turning immediate, stateful experimentation into a clearly defined part of ZPE.
New capabilities
- Added the list_object_properties function which lists all properties of a given object
- Added the get_object_property function which will get a value from an object property
- Added the is_function function
- Added the list_zpe_functions function which will create an ordered associative array of functions
- Added the list_structures function which will create an array of structures
- Added the -j option to the main ZPE package for JSON commands (more information coming soon)
Notable improvements
- Changed the way in which the JSON parser deals with ordered associative arrays, ensuring order is maintained
Important fixes
- Fixed an issue in which functions were not evaluated in concatenation
ZPE 1.8.1
06.01.2020
Established ZEN Client and ZEN Server from the earlier ZPE client/server tools, greatly improving stability and communication while adding public/private-key encryption between them.
New capabilities
- Added a new option to the shutdown command that allows a time to be specified from the current time to shutdown at
- Added the time function which gets the current number of milliseconds since 1st January 1970 (epoch time)
- Added the run_at command, which runs a background daemon thread until a certain time arrives and executes that function using it's handle
ZPE 1.7.13
30.12.2019
This release combined new language or runtime capabilities with worthwhile performance work.
Performance
- Minor performance improvements
New capabilities
- Added create_list to the ZPEUI object
- Added the wake_on_lan function
ZPE 1.7.12
05.12.2019
This release concentrated on making ZPE faster and more efficient.
Performance
- Improved performance of When-Is statement by using a hash map to store values
- Library imports are no longer done by the interpreter on startup but are now done with import command, thus taking away some of the startup time
- Minor performance updates
Important fixes
- Fixed an issue in which quotes were removed from a string if used inside another string
ZPE 1.7.11
29.09.2019
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the write function
- Added the ZenithParser object
- Added the alternative value syntax, e.g.
Important fixes
- Fixed a long standing bug that caused objects to not update when a reference was updated when no main function was provided
ZPE 1.7.10
02.08.2019
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added type checking on array data types
- Added the array_get_data_type function, which will return the data type of all elements within the array
- Added the tkmenu library to give macOS editors the macOS menu bar instead of the in window version
- Added a button to stop a running web server in the GUI
Important fixes
- Fixed an issue with quotes in quotes when escaping them
ZPE 1.7.9
14.07.2019
This release combined new language or runtime capabilities with worthwhile performance work.
Performance
- Added the count keyword. E.g. count ($v). This is not a function and takes advantage of compiler speed
- Performance improvements
- Added for loop compiler optimisations
New capabilities
- Added the string_text_compare function
- Added the run_in_thread function, this can also run lambda functions in a thread.
Important fixes
- Fixed an issue where some whitespace characters were ignored by the parser (e.g. ASCII 160)
- Fixed an issue with public declared values in a structure
ZPE 1.7.8
29.06.2019
This release combined new language or runtime capabilities with worthwhile performance work.
Performance
- New compiler optimisations mean that compiled programs run even faster
New capabilities
- Added the list_find_duplicates function
- Added the self keyword which has the same functionality as the this keyword
- Added the ZPEHTMLBuilder object
Important fixes
- Fixed an issue with functions declared on anonymous objects being inaccessible
ZPE 1.7.7
05.05.2019
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the EXACTLY EQUAL === comparison
- Added the --json option to the -v (version) ZAC
- Added the boolean comparison that 0 == false is true
Important fixes
- Fixed an issue that meant that short circuit evaluation only happened if it was true
ZPE 1.7.6
21.04.2019
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the new console window for output for the GUI mode.
- Added support for larger numbers
- Added the list_process function
- Added the array_to_list function
- Added the list_to_array function
- Added the list_auto_populate function
Notable improvements
- Changed the file_open function to use the ZPESequentialFile object
Important fixes
- Fixed an issue in which the floor and ceiling functions returned a double instead of an integer
- Fixed an issue that prevented functions being declared without a main function
ZPE 1.7.5
08.04.2019
This release concentrated on making ZPE faster and more efficient.
Performance
- General performance improvements
Important fixes
- Fixed an issue with the date conversion in which the month and minute were muddle up
ZPE 1.7.4
23.03.2019
Launched ZPE Online, codenamed Munro Top, giving ZPE registration and cloud storage for programs while also expanding the editor and object system.
New capabilities
- Added short circuit evaluation of logic
- Added type checking option to the GUI
- Added the web server option to the GUI
- Added the implies and iff functions
- Added the nor function
- Added the http_post method, allowing requests to be made to any URL
Important fixes
- Fixed an issue with the is_set function not correctly accessing indexes
- Fixed an issue within lambda functions due to a hack that was put in
ZPE 1.7.3
08.03.2019
Continued the LAME performance work while adding ordered and fixed-size collection types and several important data functions.
Performance
- Further improvements to LAME performance
- Minor performance tweaks that help stabilise LAME
New capabilities
- Added the get_password_input function
- New data types ZPEOrderedAssociativeArray and ZPEArray which replace the older is_ordered and is_fixed_size methods on their super classes
- Added the input_validate function
- Added the list_populate function
- Added the csv_encode function
- Added more @ documentation features
Notable improvements
- Changed the way binary, hex and octal values are inserted.
Important fixes
- Fixed a bug in concatenation that prevented the concatenation of integer values
- Fixed an issue with index access in an evaluation
ZPE 1.7.2
14.02.2019
Built on LAME and the compiler/runtime split, moved constants into the compiler for better execution performance, and made the newer GFX editor the main -g graphical environment.
Performance
- Compiler constants are now moved to the compiler away from the interpreter. This offers better performance.
New capabilities
- Added the list_to_associative_array function
Notable improvements
- Updated the GFX editor which will soon replace the GUI editor
Important fixes
- Fixed a flaw which prevented concatenation of doubles or integers (LAME only)
- Fixed a flaw which prevented access to variables defined using strong typing
ZPE 1.7.1
30.01.2019
A major architectural and performance release that separated the compiler from the runtime, accelerated ZenithParser and replaced LAMP with the much faster and more accurate LAME evaluator.
Performance
- A huge overhaul to the design and performance of ZPE both in the interpreter and the compiler
- Major improvement to ZenithParser which makes it perform 10% faster than before.
- Improved performance
- Better memory usage within the runtime interpreter
New capabilities
- Added support for by reference variable assignment, e.g. &$y = 10 will change the original $y
- Added the ZPEWebServer that can act as a basic web server and can serve ZPE-HTML pages (zhtml)
- Added the index.zhtml handler to the ZPEWebServer so that if no file is specified but an index file exist it will read this
- Added the bound word exception to the ZenithEngine. E.g. $ must be bound to a name, so the parser will not accept when it is written as $ x = 10 but will accept $x = 10
ZPE 1.7.0
09.01.2019
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added assertion tools for unit testing. Assertion can be true or false
- Added by reference variables, list_set_at_index already implements this
Important fixes
- Fixed a long standing issue with concatenation
- Fixed an issue which would result in the string_get_length function returning a string value
ZPE 1.6.8.1
28.12.2018
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the built-in internal update program. Just running the --update ZAC will update ZPE
ZPE 1.6.8
25.12.2018
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the associative_array_create_ordered method which generates a new ordered associative array
- New feature to -r ZAC, functions are now retained after being defined
ZPE 1.6.7
19.10.2018
Introduced TYPO, bringing practical runtime type checking to YASS and beginning a type-system lineage that would be redesigned twice in later releases.
Performance
- Minor performance improvements through a hopeful trial
New capabilities
- Added the new alternative lambda function syntax that uses the fat arrow syntax: $v = () => print("Hello") end function and $v = () { print("Hello") }
- Added the new alternative syntax to the for each loop similar to 'for each ($v) print ($pos++) end for'
- Added the sublist method to the list type
- Added the new --typed argument that forces type checking in assignment
- New Python inspired fixed arrays defined as
- Added support for else if as well as elseif in if statements
Important fixes
- Fixed an issue with dotted (reference) expressions
ZPE 1.6.6
19.09.2018
This release combined new language or runtime capabilities with worthwhile performance work.
Performance
- Small performance improvement with the LAMP parser
New capabilities
- Added the circumflex syntax for power e.g.
- Added the variable mode to the -r ZAC. This mode is like single line mode except that variables and their values are persisted.
- Added binary parsing into the compiler e.g. $v = 0b0101. Binary values always start with a 0b
- Added the to_decimal method to convert a string of binary, octal or hexadecimal characters to an integer
- Added object inheritance
- New if statement optional syntax using the THEN keyword: $x = 10 if $x == 11 then print("Yes") end if
Notable improvements
- Improved the way in which negative values are evaluated
Important fixes
- Fixed an issue with for loops
- Fixed with comments in the Zenith Parser
ZPE 1.6.5
02.09.2018
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the FOR EACH IN loop to complement the FOR EACH AS loop (it works the reverse to this)
Important fixes
- Fixed an issue in the CSV parser where single line CSV files parsed incorrectly
- Fixed an issue in the feedback command that prevented it from sending when given just one argument
ZPE 1.6.4
13.08.2018
This release combined new language or runtime capabilities with worthwhile performance work.
Performance
- Fixed performance of parser
- Small performance improvements in compilation
New capabilities
- New undefined() function returns an undefined value
- Added a fix that allows objects to contain non-prefixed variables, e.g.
Notable improvements
- Improved the ZenithParser's method of finding multiline comments
Important fixes
- Fixed the problem occurring with constant definition
- Fixed downloading in ZULE
ZPE 1.6.3
03.08.2018
This release combined new language or runtime capabilities with worthwhile performance work.
Performance
- Major update and complete rewrite of the way objects and structures work, making them faster and more efficient than before
New capabilities
- Added the variable index to ACCESSOR e.g.
Notable improvements
- Improved the way that a break call bubbles
- Improved the way in which chained (.) functions work. E.g. $v = [44, 55] $x = $v.get(0)
ZPE 1.6.2
30.07.2018
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added a padding of nulls when an item is inserted at an index that doesn't exist
Important fixes
- Fixed concatenation (small bug causing a huge problem)
- Fixed an issue in which adding an escape \ before a quote would be ignored.
ZPE 1.6.1
24.07.2018
This release concentrated on making ZPE faster and more efficient.
Performance
- Fixed a LAMP issue in which less than was improperly parsed, causing a memory leak and eventually a stack overflow
Important fixes
- Fixed an issue in which the parse_json function would only return an associative array, never a list
- Fixed an issue when comparing integers, double and strings that looked similar e.g. 1 == "1" would be true.
ZPE 1.6.0
31.05.2018
Introduced the -w web parser, allowing pages to combine web content with executable YASS and beginning the path that later became YWP.
New capabilities
- Added the --colour option
- Added the force_colour option
- Added the new -w web parser mode to parse web pages
Important fixes
- Fixed an issue in which the get_median function was actually using the same code as the get_range function
ZPE 1.5.4
04.10.2017
This release combined new language or runtime capabilities with worthwhile performance work.
Performance
- Fixed a performance issue
New capabilities
- Added the new object declaration format similar to JSON or JavaScript: $v = {first_name : "Jamie", surname : "Balfour"}
- Added a fix to concatenation that will need to reviewed ASAP
- Added the switch statement, a rewrite of when-is statements
Notable improvements
- Improved the parser to support any third-party subsequent character array
Important fixes
- Fixed the issue with accessors and objects, making them stable again
ZPE 1.5.3
30.03.2017
The release where performance became a defining concern: the parser was separated from the compiler as the powerful reusable ZenithParser, immediately became the basis of JBSON, and accompanied major advances in objects and accessors.
Performance
- Minor performance improvements and further refactoring
- Improved the way the compiler works, improving performance
New capabilities
- Added the get_object_definition function, designed to identify which structure this object inherits it's format from
- Added the wait method which waits a specified number of milliseconds
- Added a new feature that allows function declaration within objects. $x => f = function() print("Test") end function
- Added the _output core method to objects. Any object declaring an _output method will call this when cast to a string
- Introduced the new ZenithParser, the underlying parser that powers the whole ZPE.
- Added JBSON, my own JSON parser.
Notable improvements
- Improved server stability
- Improved the shell command to now return the return value of the command
Important fixes
- Fixed an issue in which foo = function() { print("bar") } would be a valid function
- Fixed an issue within the compiler, whereby all inner compiled strings would be case insensitive.
ZPE 1.5.2
14.02.2017
Strengthened ZPE's extensibility and object model with custom keyword plugins, object serialisation and structure constructors.
New capabilities
- Added custom keyword plugin feature. This allows custom parsing of symbols and words
- Added the serialise and deserialise functions to object $v = object() $v => $x = 10 $v.serialise("Test")
Notable improvements
- Improved the serialise and deserialise functions to now support functions, objects within objects, lists and associative arrays
Important fixes
- Fixed an issue where objects within objects could not be used.
ZPE 1.5.1
31.01.2017
A broad integration release that improved Java embedding and plugins while adding includes, for-to loops, do-while loops and faster compiled applications.
Performance
- Improved performance and fixed a flaw in which plugins could not be executed
- Added compiler improvements that make compiled applications run faster
New capabilities
- Added the includes statement. This will include non-compiled code before compilation. E.g. include "file.txt". This code will execute as though it were in the main program
- Added the publicly available PublicMethods class and the built in ExternalMethods variable to access it which allows access to a bunch of useful functions to access internals of ZPE
- Added the for-to loop e.g. for($i = 0 to 10). Works the same way underneath
- Added do while loops
Notable improvements
- Changed the plugin interface slightly, it now sends a 'parent' ZenithEngine object to the MainMethod of an interface
Important fixes
- Fixed an issue with concatenation
ZPE 1.5.0.1
11.01.2017
Made the early server capable of executing submitted scripts and introduced threaded lambda functions, expanding both networked and concurrent execution.
New capabilities
- Added the string_cut function that cuts a string from start to finish
- Added the string_divide function to split a string multiple times
- Added threaded lambda functions. $v = threaded function() { for ($i = 0; $i < 100000; $i++) print($i) end for }
Important fixes
- Fixed an issue in which lambda calls were not called in a LAMP expression
- Fixed an issue in which the global #SCRIPT constant is not defined a associative array properly
ZPE 1.5.0
07.01.2017
The beginning of ZPE's JSON era, initially using Gson, alongside interpreter warnings, improved parser memory use and the first substantial client/server communication work.
Performance
- LAMP parser memory consumption improved considerably
New capabilities
- Added the Google GSON library to parse JSON
- Added json_to_map function
- Added interpreter warnings
- Added the 'this' keyword for pointers. E.g. $x => $y = function(){ print (this => $z) }
- Added the aes_encrypt and aes_decrypt functions
Notable improvements
- Improved server and client communication and functionality
Important fixes
- Fixed an issue with the LAMP compiler
- Fixed an issue with the LAMP interpreter
ZPE 1.4.4.0
14.08.2016
Opened ZPE to external language converters, laying the earliest foundations for the transpiler system that would later operate on the full syntax tree.
New capabilities
- Added the list_get_at_random_index and the generate_alphabet methods
Important fixes
- Fixed an issue with the += and -= increment and decrement values that only allowed numbers to be used
- Fixed an issue with the += and -= increment and decrement values that meant that values were rounded to integers not left as reals
ZPE 1.4.3.40
06.08.2016
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the sha1, sha256 and md5 hashing algorithms
- Added the try and catch clause to catch errors
- Added the plus equals (+=) and the minus equals (-=) increment and decrement operators
- Added the concatenation operator, & and deprecated the string_concatenate command
Important fixes
- Fixed an issue with lambda functions that prevented them from being evaluated when given parameters on declaration
- Fixed an issue with variables and increment and decrement values
ZPE 1.4.3.10
01.08.2016
This release combined new language or runtime capabilities with worthwhile performance work.
Performance
- Reduced possibility of a memory leak in some functions
- Changed the way in which the interpreter functions (less recursion) - leading to better performance and memory usage
New capabilities
- Added the break function
- Added scopes (private, public and friendly) support to variables
- Added the scopes to constants as well
Notable improvements
- Improved the security of certain functions
- Improved the efficiency of the compiler
Important fixes
- Fixed issues with structures that prevented them from functioning
- Fixed an issue with boolean variables in a logical statement
ZPE 1.4.3
21.07.2016
Began one of ZPE's biggest rewrites by unifying mathematical and logical parsing in LAMP, with a new evaluator that made larger expressions around three times faster.
New capabilities
- Added a compiler failure on the ternary operator on mathematical expressions
- Added the improved evaluator for comparison. This works around 3 times as efficiently as the previous one on larger statements
Notable improvements
- Improved the LAMP compiler
Important fixes
- Fixed an issue whereby the compiler seeing a comparator (==, > etc.) would force it to read only one symbol ahead
- Fixed an issue where comparison and mathematics mixed together, e.g. 5 > 2 + 1, would crash the interpreter
ZPE 1.4.2
01.07.2016
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added compiler type checking when using the typed system
- Added the string, integer, boolean, structure, lambda, object and image types
- Added an increment parameter to range function, e.g. range(99, 1000, 0.3)
- Added the new list_pop and list_dequeue functions
- Added lazy evaluation to condition evaluation
- Added the config option to the -h mode to display all the user's configurations (or properties)
Notable improvements
- Improved efficiency with structure variable assignment
- Updated manual command for get_type
- Updated website information to jamiebalfour.scot/projects/zpe/
Important fixes
- Fixed a flaw with the random_number function that added the minimum as a string
- Fixed a flaw in which functions compiled under the case insensitive compile option would not function correctly
ZPE 1.4.1
15.12.2015
Introduced objects and member access, significantly expanded lambda scoping and added function chaining, making YASS programs far more expressive.
Performance
- Memory usage lowered slightly
New capabilities
- Added the range function to generate a list of numbers in a range
- Added the counter function to generate an associative array of counts of items in a list
- Added the object function to generate a new Object
- Added the dotted expressions. $x.$y = 10 and print($x.$y)
- Added publicly accessible isFunction and isObject methods to the JAR as requested
- Added lambda functions to variables in structures
Notable improvements
- Improved modularity of ZPE
Important fixes
- Fixed a bug with the is_set command which would always return false
- Fixed a bug that stopped the return function working
ZPE 1.4.0.83
12.09.2015
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added compare_dates function to compare two dates
ZPE 1.4.0
30.08.2015
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the echo alias
- Re-added the round command
ZPE 1.3.7.100
27.08.2015
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added logical comparison evaluation to parameter checker
Important fixes
- Fixed a flaw in which lambda functions would not function if they were the first parameter
- Fixed an issue with returning lambda functions
ZPE 1.3.7.89
20.08.2015
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added lambda functions to for each loops
- Added lambda functions to for loops
- Added the Function type to the get_type command
- Added the list_local_variables function
- Added the list_parameters function
- Added the list_global_variables function
Notable improvements
- Changed the type:$language requirement on the -c mode to $language.
Important fixes
- Fixed a flaw with variable storage
- Fixed a minor flaw with lambda calls
ZPE 1.3.7.44
04.08.2015
A defining language release: lambda functions made functions assignable values and laid the foundations for callbacks, higher-order operations and many later YASS features.
New capabilities
- Added lambda functions that can be assigned to variables: e.g. $foo = function($bar){return $bar * $bar}
- Added pointer support to evaluation
- Added pointer support to function parameter evaluation
Important fixes
- Fixed a flaw that stopped increment and decrement working
ZPE 1.3.7.25
27.07.2015
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added library support
- Added support for semi-colons in for loops as well as commas
- Added the list_is_a_set function
- Added the associative_array_flip function
- Added the string_is_uppercase function
- Added the string_is_lowercase function
Important fixes
- Fixed a flaw in which variables would be incorrectly updated
- Fixed an issue with substitution of variables and associative arrays
ZPE 1.3.7.0
22.07.2015
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added handle_of function to obtain a function handle from the function name
ZPE 1.3.6.0
15.07.2015
Introduced structures, structure properties and structure methods, establishing the foundations of ZPE's later object system.
New capabilities
- Added structures
- Added structure variables
- Added structure functions
- Added structure variable assignment
- Added structure variable access methods
- Added pointer evaluation to parameters, conditions and function calls
Important fixes
- Fixed a flaw in which parameters of more than length 1 would not function
- Fixed an issue with associative arrays
ZPE 1.3.5.190
09.07.2015
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the unset function for removing variables after use
- Added the file_save_image function for saving images
Important fixes
- Fixed an issue that prevented using global variables that used lists, associative arrays, structure and so on
ZPE 1.3.5.90
07.07.2015
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added increment and decrement values to math evaluation
- Added the -math mode for mathematical evaluation
- Added mathematical evaluation to associative arrays and lists
- Added the conversion option. It currently only supports very basic conversion to Java.
Notable improvements
- Updated the start up information with the new -c mode as well as the -doc mode.
Important fixes
- Fixed a bug with pre-increment and pre-decrement
- Fixed an issue with subtraction in mathematical evaluation
ZPE 1.3.5.68
01.07.2015
Expanded and stabilised Real Math Mode with modulo, constants, repeated evaluation and substantial evaluator fixes.
New capabilities
- Added modulo calculations to mathematical expressions
- Added backtracking requirement for mathematical evaluation
- Added support for constants into mathematical evaluation
Important fixes
- Fixed another flaw in the mathematical evaluation
- Fixed several more flaws in mathematical evaluation
ZPE 1.3.5.63
30.06.2015
A major step beyond arithmetic functions: Real Math Mode introduced ZPE's first mathematical expression parser, allowing natural calculations instead of add(), subtract() and similar function calls.
New capabilities
- Added recursion support again
- Added image_transform_greyscale function
- Added image_transform_sepia function
- Added Real Math Mode mathematical evaluation
- Added mathematical evaluation to conditional statements
- Added run_command function to run commands on the fly
Notable improvements
- Changed the way increment and decrement work under the hood
Important fixes
- Fixed a problem with heap space
- Fixed a flaw in which substitution did not take place
ZPE 1.3.5.32
28.06.2015
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added support for numbers with exponents, symbolised by an E
- Added file_open_image function
- Added limit_real function
Important fixes
- Fixed a flaw in which post decrement and post increment did not function as expected
ZPE 1.3.5
19.06.2015
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the file_get_size function
Notable improvements
- Improved constants. Constants can also be defined if they are not already defined, but they cannot be overwritten.
Important fixes
- Fixed a flaw in which doubles could not be incremented
- Fixed a flaw in which conditions and parameters would not work correctly with post increments and post decrements
ZPE 1.3.4.90
15.06.2015
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added the list_update_at_index function
- Added the equals_any function
- Added the to_binary function
- Added the to_octal function
- Added the to_hexadecimal function
- Added pre-increment tools
Notable improvements
- Changed the greater_than function to the greater_than_all function
- Changed the less_than function to the less_than_all function
ZPE 1.3.4
13.06.2015
This release refined ZPE with a focused collection of improvements and fixes.
Important fixes
- Fixed an issue with constants not being recognised
- Fixed the arguments system
ZPE 1.3.3
11.06.2015
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added internal local functions (functions defined within functions)
- Added string_ends_with function
- Added string_starts_with function
- Added string_matches function
- Added associative arrays
- Added associative_array_get function
Notable improvements
- Changed the way scripts compile
Important fixes
- Fixed the problem occurring with adding arguments to programs
- Fixed an issue with boolean expressions given to functions
ZPE 1.3.2
05.06.2015
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added is_numeric function
- Added string_split function
- Added string_find_occurrences function
- Added string_get_substring function
- Added get_os_name function
- Added string_to_lowercase function
Notable improvements
- Changed the output of errors to stderr rather than stdout
Important fixes
- Fixed a flaw with when statements that caused strings to evaluate incorrectly
ZPE 1.3.1
21.05.2015
Established the early interactive and runtime workflows, with the -i and -r modes gaining configurable permission levels as the language rapidly expanded.
New capabilities
- Added get_type function
- Added set_intersection function
- Added set_union function
- Added list_add function
- Added list_remove function
- Added list_contains function
Important fixes
- Fixed a flaw in which empty sets cannot be defined
- Fixed a problem in which an empty string cannot be represented
ZPE 1.3.0
14.05.2015
This release combined new language or runtime capabilities with worthwhile performance work.
Performance
- Improved parsing speed
- Interpreter speed improved
- Faster substitution
- Better unix_execute function speed
New capabilities
- New and improved while statements
- Logic (if and while) now supports nested functions
- Logic supports bracketed expressions within if and while statements
- Added parameter passing to functions
- Re-added file_open function
- Added file_exists function
Notable improvements
- Improved speed of condition testing
Important fixes
- Fixed a flaw in subtract which lead to the first number being removed twice
- Fixed a flaw in which conditional statements failed if a variable name is used
ZPE 1.2.01
18.03.2015
The beginning of ZPE as an environment rather than only an evaluator: user-defined functions and function calls arrived, alongside the first experimental graphical mode.
Performance
- Faster access to variables in Zenith Engine
- Improved performance of conditional statements
- Improved the speed of the interpreter
New capabilities
- Added CLI support to BRS
- Added support for reading code in Zenith Engine
- Added file read support to BRS
- Added GUI mode [experimental] to BRS
- Added help command to BRS
- Added type output options
Notable improvements
- Improved substitution of variables
Important fixes
- Fixed an issue with if statements
- Fixed an issue with strings
ZPE 1.2.0
19.02.2015
This release expanded what programs could do with new language, runtime or library capabilities.
New capabilities
- Added basic print support using if return statement
- Added support for variables from the command line
Notable improvements
- Rewrote BlackRabbit Script using a new parser called the Zenith Engine
ZPE 1.x
31.12.2012
This release refined ZPE with a focused collection of improvements and fixes.
Highlights
- Complete rewrite of BlackRabbit Script
- Stopped developing BlackRabbit Script

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