
The new version of ZPE will be released on Friday, marking one of the most exciting updates to date. Spanning three months rather than the usual one, it brings a slew of new features and changes designed to improve performance, add functionality, tighten the syntax, and enhance the UI.
It contains several significant changes, including the headline feature: a new parser, the Zenith Parsing Engine version 1.5, which offers up to 24% faster parsing speed by reducing backtracking in the parser.
Constructs
Labels and GoTo have been added to YASS. This is something I have tried to implement in the past, but have always disliked the way I've done it. I also think that, given YASS is meant to be object-oriented and unprocedural, it's not something that fits in with the standard, but it is here anyway.
$i = 0 label openloop print($i++) if ($i < 10) goto openloop end if print("Done")
Assertion has seen a massive change to make it more like other languages:
assert($a == [5, 8, 13, 21, 34])
Not only that, but the error identification is so much better than before when using assertions.
Bugs
Many bugs have been fixed, including:
- All properties of anonymous objects are now always accessible.
- Fixed a bug in the list_zpe_properties function to ensure it always returns all functions
- Added a new and more effective means of determining whether the program is run from a command line/headless
- Fixed the JSON parser to ensure it no longer double-checks every string for quote marks
Functions
Several new functions have been added:
- get_environment_variables
- get_percentile
- base64_encode
- base64_decode
- histogram
The beep function has also been significantly improved with more accurate frequencies.
Objects
Added two new objects:
- Colour
- Point
GUI
The GUI has been updated considerably:
- The rogue white line at the bottom has finally been removed!
- The curved UI has been improved further, as has the menu.
- The macOS icons are now manually rendered rather than relying on PNGs (this was always temporary)
- There's now support for BalfLaf Themes (blt) files
- There's now a property editor dialog for changing properties of ZPE
- There's now a lockdown option that can be set on individual installations of ZPE
- Symbols are no longer highlighted as part of the keyword set in the editor
- Built-in objects and imported objects are now highlighted
- New, clean and straightforward white icons are used at the top right of the GUI instead of the multi-coloured ones
- There is now an option to run ZPE Native if it is found in the correct place
- There's no longer an option to run code locally, and without running it through a separate ZPE process, which makes it easier to work with and prevents the GUI from crashing. The 'local' option is only used as a fallback.
The Quick Fire Command Window (-q) has also undergone significant improvements in both form and functionality.
ZPE Macro Interface Editor
There's a lot to discuss here, but in short, the macro editor has improved significantly over the last few months to the point that it's now become a key part of my other software. It has always been able to act on an object provided to it, but now it can give information on functions provided in the object, it can be used to not only make simple code and execute it, but also provide code back to the calling program that can be used call a macro when a button is clicked for example. See eTraxion for more information on how this is used.
Other changes
ZPE now stores data in a new folder on the system. For macOS, this is the Library/Application Support folder; for Windows, it is AppData; and for Linux and other operating systems, it remains the home directory.
Mathematical functions have been split into two separate categories: Numerical and Arithmetic, and Scientific Mathematics. This is because the Mathematics category was getting too large.
New ZPEKit methods have been added to provide more comprehensive access to the ZPE Core.
That's just been a quick overview of the main new features coming to ZPE in version 1.13.8, which will be released on Friday. I'm exceedingly excited!