Jamie Balfour

Welcome to my personal website.

Find out more about me, my personal projects, reviews, courses and much more here.

Official ZPE/YASS documentationWhat's New in ZPE?

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
Comments

There are no comments on this page.

New comment

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

Feedback 👍
Comments are sent via email to me.