To use this website fully, you first need to accept the use of cookies. By agreeing to the use of cookies you consent to the use of functional cookies. For more information read this page.

Official ZPE/YASS documentationZPE Changelog

Since version 1.2.01, there have been 1013 changes recorded in this changelog. From this page you can read about any version number and the changes it brought to ZPE. Click on a zone below to find out more:

Version 1.x

Version 1.x (2 updates)
  1. Complete rewrite of BlackRabbit Script
  1. Stopped developing BlackRabbit Script

Version 1.2

Version 1.2.0 (3 updates)
  1. Rewrote BlackRabbit Script using a new parser called the Zenith Parsing Engine
  2. Added basic print support support using if return statement
  3. Added support for variables from the command line
Version 1.2.01 (56 updates)
  1. Added CLI support to BRS
  2. Added support for reading code in Zenith Engine
  3. Added file read support to BRS
  4. Translation process added
  5. Variable assignment added
  6. Print function added
  1. Evaluate function added
  2. String support added
  3. Added GUI mode [experimental] to BRS
  1. Global variables added
  2. Faster access to variables in Zenith Engine
  3. Custom commands added
  4. Functions added
  5. Call function added
  1. Added help command to BRS
  2. Added type output options
  3. Added return output options
  1. Added conditional statements
  2. Added if statements
  3. Added else statements
  1. Added add, subtract, multiply and divide functions
  2. Added modulo function
  3. Added sin, cos and tan functions
  1. Added variable reassignment
  2. Improved performance of conditional statements
  1. Added while loops
  2. Fixed an issue with if statements
  3. Added escape characters
  1. Added sqrt function
  1. Added the ability to overwrite Zenith Engine functions
  2. Added get_char_at function
  3. Added get_string_length function
  4. Added unix_runtime function
  1. Added get_constant function
  1. Added power function
  2. Added greater_than function
  3. Added less_than function
  1. Added comments
  2. Added set type
  3. Added set_contains function
  4. Added set_add_elements function
  5. Added set_get_length function
  6. Added set_union function
  7. Added set_intersection function
  8. Added set_difference function
  1. While loop improvements added
  1. Improved the speed of the interpreter
  2. Fixed an issue with strings
  1. Added a function line for running a single function
  1. Improved substitution of variables
  1. Added format_number
  1. Constants are now signified with an asterisk *
  2. Fixed a flaw in the substitution that prevented a variable being substituted if it was the last in a parameter string
  3. Added increment and decrement
  4. Added mode, median, mean, max, min and range
  5. The mode, median, max, min and range also work on both sets and numbers

Version 1.3

Version 1.3.0 (82 updates)
  1. Complete redesign of core and the introduction of the Zenith Parsing Engine
  2. Improved parsing speed
  3. Redesign improves ease of creating new functionalities
  4. New and improved while statements
  5. Functions can now be nested in calls such as add(add(1, 1), 2)
  6. Variables can be assigned to function calls
  7. Interpreter speed improved
  8. Faster substitution
  9. Better unix_execute function speed
  1. Improved speed of condition testing
  2. Assignment of functions
  3. Tree parser added
  4. Compile feature added
  1. Logic (if and while) now supports nested functions
  2. Logic supports bracketed expressions within if and while statements
  3. Variables can now be assigned to each other: e.g. $j = $v
  4. Added parameter passing to functions
  1. Fixed a flaw in subtract which lead to the first number being removed twice
  2. Fixed a flaw in which conditional statements failed if a variable name is used
  3. Re-added file_open function
  4. Added file_exists function
  5. Re-added random_number function
  6. It is no longer necessary to specify an output file in compilation. If there is no output specified it defaults to out.brs.
  7. While loops can be ended by either end while or end loop
  1. Variables can be assigned to logical evaluations, such as $v = (true || false). All expressions must be bracketed.
  2. Comments can be included after code on the same line (all programs need recompiled)
  3. Added multi line comments with the /* */ representation
  4. Added absolute_value function
  1. Added string_contains
  2. Sets are now working as definitions and as parameters
  3. Fixed a flaw when compiling without an output file
  4. There is no longer the requirement of spaces between variable declarations and comparisons
  5. Added elseif statements to if statements
  6. Added recursion restriction on functions
  7. Program is more friendly to files not found
  1. Added get_type function
  2. Added set_intersection function
  3. Added set_union function
  4. Added list_add function
  5. Added list_remove function
  6. Added list_contains function
  7. Added set_from_list function
  8. Added list_get_index_at function
  9. Added list_get_length function
  10. Fixed a flaw in which empty sets cannot be defined
  11. Conditional statements now support comparison of sets
  12. Added get_minimum function
  13. Added get_maximum function
  14. Added get_range function
  15. Added get_mean function
  16. Added greater_than function
  17. Added less_than function
  18. Fixed a problem in which an empty string cannot be represented
  19. Added get_mode function
  20. Fixed a flaw in which a string would be added as a name to a function
  21. Another flaw fixed with return function
  22. Another flaw fixed on the return function to exit functions
  23. Fixed a problem in which numeric values were surrounded by quotes within sets
  24. Fixed an issue with the list_remove function which would only remove numbers equal to the position to remove from
  25. Added list_insert_at_index
  26. Language checks now check for accidental semicolons at the end of lines
  1. Added for loops for($i = 1, $i < 10, 1)
  2. Added char_to_int to convert a character to an integer
  3. Added int_to_char to convert an integer to a character
  1. Added permission mode. Levels can be defined using arguments on the -i and -r modes.
  2. Added is_file function
  3. Added is_directory function
  4. Added directory_exists function
  5. Fixed an issue where parameters would be read over local variables
  6. For can now be assigned to another variable e.g. for($i = $j, $i < 10, 1)
  7. For now deletes variables after the for loop
  1. Added do until loops
  2. Added the round function
  3. Added the factorial function
  4. Added -m multiple line interpreter mode
  5. Added get_median function
  6. Added list_sort function
  7. Added list_reverse function
  8. Added list_swap_elements function
  9. If statements and loops can have empty bodies
  10. Minor fixes that make it easier to develop small empty statements
  11. Added select-when statements
Version 1.3.2 (12 updates)
  1. Pass parameters from function line to program
  2. Added is_numeric function
  3. Added string_split function
  4. Added string_find_occurrences function
  5. Added string_get_substring function
  6. Added get_os_name function
  7. Added string_to_lowercase function
  8. Added string_to_uppercase function
  1. Added a simple graphical user interface to the engine
  1. Changed the output of errors to stderr rather than stdout
  2. Added the std_error function
  3. Fixed a flaw with when statements that caused strings to evaluate incorrectly
Version 1.3.3 (17 updates)
  1. Added internal local functions (functions defined within functions)
  2. Due to minor changes, the constant character is no longer * but #
  3. Added string_ends_with function
  4. Added string_starts_with function
  5. Added string_matches function
  1. Added associative arrays
  2. Added associative_array_get function
  3. Added associative_array_put function
  4. Added associative_array_contains function
  5. Fixed the problem occurring with adding arguments to programs
  1. Added the import function to import compiled scripts
  2. Changed the way scripts compile
  3. Boolean expressions can now be assigned to variables without bracketing
  4. Logical expressions can now be passed to functions
  1. Fixed an issue with boolean expressions given to functions
  2. Added the invert_value function
  3. Fixed a flaw in which negative numbers were some times discarded as not being integers
Version 1.3.4 (4 updates)
  1. Error messages are more useful with the compiler and interpreter
  2. ZPE automatically adds all scripts found in the "libs" folder
  3. Fixed an issue with constants not being recognised
  1. Fixed the arguments system
Version (12 updates)
  1. Added the list_update_at_index function
  2. Changed the greater_than function to the greater_than_all function
  3. Changed the less_than function to the less_than_all function
  4. Added the equals_any function
  5. Added the to_binary function
  6. Added the to_octal function
  7. Added the to_hexadecimal function
  8. Added pre-increment tools
  9. Added pre-decrement tools
  10. Added post-increment tools
  11. Added post-decrement tools
  12. Certain functions cannot be overridden. More at
Version 1.3.5 (5 updates)
  1. Modified the increment and decrement tools syntaxes
  2. Added the file_get_size function
  3. Fixed a flaw in which doubles could not be incremented
  1. Fixed a flaw in which conditions and parameters would not work correctly with post increments and post decrements
  2. Improved constants. Constants can also be defined if they are not already defined, but they cannot be overwritten.
Version (4 updates)
  1. Added support for numbers with exponents, symbolised by an E
  2. Fixed a flaw in which post decrement and post increment did not function as expected
  1. Added file_open_image function
  2. Added limit_real function
Version (15 updates)
  1. Fixed a problem with heap space
  2. Added recursion support again
  3. Added image_transform_greyscale function
  4. Added image_transform_sepia function
  5. Added Real Math Mode mathematical evaluation
  1. Negative numbers can be included in mathematical expressions
  2. Fixed a flaw in which substitution did not take place
  3. Fixed a flaw in which variables could not be assigned to an incrementing or decrementing value
  4. Changed the way increment and decrement work under the hood
  5. Added mathematical evaluation to conditional statements
  6. Fixed a minor flaw that affected condition checking
  7. Added run_command function to run commands on the fly
  8. Fixed an issue with permission levels
  9. Added bracketed mathematical expressions
  10. Fixed a flaw in the bracketed expression evaluation
Version (10 updates)
  1. Added modulo calculations to mathematical expressions
  2. Fixed another flaw in the mathematical evaluation
  3. Added backtracking requirement for mathematical evaluation
  4. Removed backtracking requirement previously added
  5. Fixed several more flaws in mathematical evaluation
  6. Fixed an issue in which numbers with decimal places would cause a crash when incremented or decremented
  1. Added support for constants into mathematical evaluation
  2. Fixed a flaw in which mathematical evaluation could only be done once
  3. Fixed an issue with subtraction
  4. Cleared up a lot of bugs in the RMM evaluator.
Version (9 updates)
  1. Fixed a bug with pre-increment and pre-decrement
  2. Added increment and decrement values to math evaluation
  3. Fixed an issue with subtraction in mathematical evaluation
  4. Added the -math mode for mathematical evaluation
  5. Added mathematical evaluation to associative arrays and lists
  6. Fixed a bug with the exit function in the -math mode
  1. Added the conversion option. It currently only supports very basic conversion to Java.
  2. Fixed an issue with mathematical evaluation
  3. Updated the start up information with the new -c mode as well as the -doc mode.
Version (3 updates)
  1. Added the unset function for removing variables after use
  1. Added the file_save_image function for saving images
  2. Fixed an issue that prevented using global variables that used lists, associative arrays, structure and so on
Version (17 updates)
  1. Added structures
  2. Added structure variables
  3. Added structure functions
  1. Added structure variable assignment
  2. Added structure variable access methods
  3. Removed increment function
  4. Removed decrement function
  5. Added pointer evaluation to parameters, conditions and function calls
  6. Fixed a flaw in which parameters of more than length 1 would not function
  7. Fixed an issue with associative arrays
  1. Fixed an issue with for loops in which assignment caused a crash if the assignment was evaluated
  2. Added the image_transform_resize function
  1. Added the image_transform_invert_colour function
  2. Added the image_transform_rotate function
  3. Fixed an issue with the is_set command evaluating incorrectly
  4. Fixed an issue with structure
  5. Added the start function (identical to the main function)
Version (8 updates)
  1. Plugin system is functioning now, Java-based plugins can be written
  2. Removed the add function
  3. Removed the subtract function
  4. Removed the multiply function
  5. Removed the divide function
  6. Removed the modulo function
  1. Added handle_of function to obtain a function handle from the function name
  2. Return no longer requires brackets around the value, this is optional
Version (12 updates)
  1. Added library support
  2. Added support for semi-colons in for loops as well as commas
  1. Fixed a flaw in which variables would be incorrectly updated
  2. Added the list_is_a_set function
  3. Added the associative_array_flip function
  4. Fixed an issue with substitution of variables and associative arrays
  5. Added the string_is_uppercase function
  6. Added the string_is_lowercase function
  7. Added the significant_figures function
  8. Added another minor fix to the unset and is_set functions
  1. Added an optional parameter to the directory_list_files function to find only specific file types
  2. By specifying no directory, ie. "" to the directory_list_files function, it uses the current directory
Version (4 updates)
  1. Added lambda functions that can be assigned to variables: e.g. $foo = function($bar){return $bar * $bar}
  2. Added pointer support to evaluation
  3. Added pointer support to function parameter evaluation
  4. Fixed a flaw that stopped increment and decrement working
Version (24 updates)
  1. Made a few changes to the workings of lambda functions
  2. Lambda functions can be passed as parameters to functions and conditions
  3. Fixed a flaw with variable storage
  4. Variables can now be assigned to other variables which themselves are lambda functions
  5. Added lambda functions to for each loops
  6. Added lambda functions to for loops
  1. Fixed a minor flaw with lambda calls
  2. Added the Function type to the get_type command
  3. Added the list_local_variables function
  4. Added the list_parameters function
  5. Added the list_global_variables function
  1. Added the screen_grab function
  1. Added the image_get_width function
  2. Added the image_get_height function
  3. Added the image_get_pixel function
  4. Added the image_set_pixel function
  1. Added the all_true function
  2. Added the all_false function
  3. Added the any_true function
  4. Added the any_false function
  1. Changed the type:$language requirement on the -c mode to $language.
  1. Added the global function to push a local variable to a global
  2. Added several new constants
  3. Added the mysql_connect function
Version (5 updates)
  1. Fixed a flaw in which lambda functions would not function if they were the first parameter
  2. Fixed an issue with returning lambda functions
  3. All list and associative array functions now copy the original list or array before modification
  4. Fixed an issue with logical comparisons
  5. Added logical comparison evaluation to parameter checker

Version 1.4

Version 1.4.0 (9 updates)
  1. Major restructure of internal core of interpreter for better hash functions
  2. Internal aliases are now fully implemented and much easier to execute
  3. Internal documentation is built-in to core functions
  4. Internal documentation is required on extension functions and libraries
  5. Minimum parameter requirement is now built-in to extension functions and libraries
  6. Minimum permission level requirement is now built-in to extension functions and libraries
  1. Added the echo alias
  2. Re-added the round command
  3. Negation can now be applied through the ! function
Version (1 updates)
  1. Added compare_dates function to compare two dates
Version 1.4.1 (30 updates)
  1. A few minor updates
  1. Added the range function to generate a list of numbers in a range
  2. Memory usage lowered slightly
  1. Added the counter function to generate an associative array of counts of items in a list
  2. Added the object function to generate a new Object
  3. Added the dotted expressions. $x.$y = 10 and print($x.$y)
  1. Out of order arguments can now be passed to the application. The only change is now that they require an argument name before.
  2. The new clean arguments system works with application arguments better
  3. Functions can be made private or public
  4. ZPE programs are now compiled to ZEX (Zenith Engine Executable) files
  1. Fixed a bug with the is_set command which would always return false
  2. Fixed a bug that stopped the return function working
  3. Anonymous functions have been improved
  4. Major improvement to lambda functions that makes them function better
  5. Fixed a bug with condition compilation
  6. Lambda functions now have scope to read global and parent variables
  7. Fixed a flaw that made the get_input function the same as the print function
  1. Added publicly accessible isFunction and isObject methods to the JAR as requested
  1. Images can now be compared using the equals sign, e.g. $img1 == $img2
  2. Removed dotted expressions in favour of using the pointer. E.g. $x = object() $x => $y = 10
  3. Added lambda functions to variables in structures
  4. Improved modularity of ZPE
  5. The file_create_directory function is now the directory_create function
  1. Function chaining is now supported. E.g. range(0, 40).list_get_length()
  2. Fixed a bug where the . would break strings
  3. Added the length function which will work on strings, lists and associative arrays
  4. Added the get function which will work on strings, lists and associative arrays
  5. Fixed an issue with conditions being evaluated incorrectly
  6. New -experimental mode
  7. Added a compiler_version number to compiled scripts
Version 1.4.2 (22 updates)
  1. Improved efficiency with structure variable assignment
  2. Scripts without any functions at all can be run as a single program
  1. Added compiler type checking when using the typed system
  2. Added the string, integer, boolean, structure, lambda, object and image types
  3. Types are always case insensitive
  4. Finally added the configuration file for setting options
  1. The range function now can take numbers with decimal places in them, e.g. range (99.1, 1000.4)
  2. Added an increment parameter to range function, e.g. range(99, 1000, 0.3)
  1. Added the new list_pop and list_dequeue functions
  1. Added lazy evaluation to condition evaluation
  1. Fixed a flaw with the random_number function that added the minimum as a string
  1. Conditional words like and, or and xor are compiled as their logical counterparts (&&, || and **)
  1. The echo command does not need brackets around parameters, but it will only take a single parameter. e.g. echo "Hello"
  2. Fixed a flaw in which functions compiled under the case insensitive compile option would not function correctly
  3. Added the config option to the -h mode to display all the user's configurations (or properties)
  1. Fixed an issue that meant that true at the end of a statement would not be evaluated. E.g. '(10 < 15 && (15 > 15 || 20 > 20)) || true' would return false
  1. Added set_cartesian_product function
  1. Compiler improvements
  2. Updated manual command for get_type
  3. Updated website information to
  4. The put, length and get commands are no longer experimental but fully implemented. They work as [43, 22].length() which will give 2.
  1. Added the ternary condition operation. E.g: $x = 10 > 20 || 20 > 10 ? "Yes" || "No" will set the value of $x to "Yes".
Version 1.4.3 (16 updates)
  1. The biggest change in ZPE history has begun: rewriting the original condition and mathematical parsers and evaluators
  1. The mathematical parser has been rewritten into the same parser as the logical one
  2. Resurrected the ternary (?) operator and operation on logic
  3. Added a compiler failure on the ternary operator on mathematical expressions
  1. Added the improved evaluator for comparison. This works around 3 times as efficiently as the previous one on larger statements
  2. The new evaluator is flaky and not fully tested, so use this version with caution
  3. Major fix with chaining
  1. XOR has been removed, but a function has been added in its stead
  2. Fixed an issue whereby the compiler seeing a comparator (==, > etc.) would force it to read only one symbol ahead
  3. Fixed an issue where comparison and mathematics mixed together, e.g. 5 > 2 + 1, would crash the interpreter
  4. Fixed an issue within LAMP where a bracket expression would return a number. E.g. (true == false) would return 0
  5. Fixed an issue that prevented return functions from working properly
  6. Function chaining has been fixed
  1. Fixed an issue in which bracket expressions were incorrectly tested
  1. Fixed a few minor issues that caused compile issues
  2. Improved the LAMP compiler
Version (14 updates)
  1. Improved the security of certain functions
  2. Reduced possibility of a memory leak in some functions
  3. Added the break function
  1. Added scopes (private, public and friendly) support to variables
  2. Added the scopes to constants as well
  1. Improved the efficiency of the compiler
  1. Merged structures and object types into one larger type
  2. Fixed issues with structures that prevented them from functioning
  3. Fixed an issue with boolean variables in a logical statement
  4. Minor fix with lambda functions within objects
  1. Changed the way in which the interpreter functions (less recursion) - leading to better performance and memory usage
  1. Fixed a small issue that caused lambda functions to crash
  1. Fixed an issue in which lists and associative arrays would not be evaluated properly in a comparison
  1. Fixed an issue with the ternary operator on single expressions
Version (11 updates)
  1. Fixed an issue with lambda functions that prevented them from being evaluated when given parameters on declaration
  2. Modularised the for loop
  3. Added the sha1, sha256 and md5 hashing algorithms
  1. Added the try and catch clause to catch errors
  2. Better error handling and few Java like errors
  3. Another fix with the ternary operator makes them function better
  1. Better error messages from the compiler
  1. Added the plus equals (+=) and the minus equals (-=) increment and decrement operators
  2. Added the concatenation operator, & and deprecated the string_concatenate command
  1. Fixed an issue with variables and increment and decrement values
  2. Fixed an issue with anonymous functions and return functions without brackets
Version (5 updates)
  1. Focuses on external implementation of language converters
  1. Expressions can now be negated by simply putting the ! in front of them without bracketing it. E.g. !false
  2. Added the list_get_at_random_index and the generate_alphabet methods
  1. Fixed an issue with the += and -= increment and decrement values that only allowed numbers to be used
  2. Fixed an issue with the += and -= increment and decrement values that meant that values were rounded to integers not left as reals

Version 1.5

Version 1.5.0 (12 updates)
  1. Fixed an issue with the LAMP compiler
  2. Fixed an issue with the LAMP interpreter
  3. Fixed an issue with the ternary operator, that stopped it functioning on the false value
  1. Added the Google GSON library to parse JSON
  2. Added json_to_map function
  1. Added interpreter warnings
  1. LAMP parser memory consumption improved considerably
  2. Fixed an issue with lambda functions not evaluating correctly in LAMP expressions
  3. Added the 'this' keyword for pointers. E.g. $x => $y = function(){ print (this => $z) }
  1. Fixed an issue in which the ceiling command would round down
  2. Added the aes_encrypt and aes_decrypt functions
  1. Improved server and client communication and functionality
Version (6 updates)
  1. Further improved server and client communication, now allowing the server to execute a script on the input.
  2. Added the string_cut function that cuts a string from start to finish
  3. Added the string_divide function to split a string multiple times
  1. Added threaded lambda functions. $v = threaded function() { for ($i = 0; $i < 100000; $i++) print($i) end for }
  1. Fixed an issue in which lambda calls were not called in a LAMP expression
  2. Fixed an issue in which the global #SCRIPT constant is not defined a associative array properly
Version 1.5.1 (10 updates)
  1. 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
  1. 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
  2. Changed the plugin interface slightly, it now sends a 'parent' ZenithEngine object to the MainMethod of an interface
  3. Improved performance and fixed a flaw in which plugins could not be executed
  4. Added the for-to loop e.g. for($i = 0 to 10). Works the same way underneath
  1. Added compiler improvements that make compiled applications run faster
  2. The name parameter in the compiler is now fully optional
  1. A huge number of changes designed to make it easier to use ZPE within the Java language by organising ZPE into packages jamiebalfour.ZPE
  1. Fixed an issue with concatenation
  2. Added do while loops
Version 1.5.2 (5 updates)
  1. Added custom keyword plugin feature. This allows custom parsing of symbols and words
  1. Added the serialise and deserialise functions to object $v = object() $v => $x = 10 $v.serialise("Test")
  2. Improved the serialise and deserialise functions to now support functions, objects within objects, lists and associative arrays
  1. Structures can now be initalised through a constructor function called _construct
  2. Fixed an issue where objects within objects could not be used.
Version 1.5.3 (29 updates)
  1. Added the get_object_definition function, designed to identify which structure this object inherits it's format from
  2. Added the wait method which waits a specified number of milliseconds
  1. Improved server stability
  2. Pointers have been renamed accessors. The accessor symbol is still =>
  1. Added a new feature that allows function declaration within objects. $x => f = function() print("Test") end function
  2. Added the _output core method to objects. Any object declaring an _output method will call this when cast to a string
  1. Fixed an issue in which foo = function() { print("bar") } would be a valid function
  2. Objects are better inlined with structures, the 'object()' function is removed and replaced with the 'new object()' syntax.
  3. Chainable functions can be used on accessors such as $people => $list.get(1). This is a minor fix.
  1. Fixed an issue within the compiler, whereby all inner compiled strings would be case insensitive.
  1. Fixed a couple of minor issues in regards to scope
  2. Completely redesigned the parser, making it separate to the main compiler.
  3. Introduced the new ZenithParser, the underlying parser that powers the whole ZPE.
  4. Added JBSON, my own JSON parser.
  5. Fixed an issue that has been around for a long time with string quotes not being removed by moving this to the parser
  1. Continuing with the idea of a reusable parser, the CSV parser has been redesigned from the bottom up
  1. Associative arrays no longer use braces {} but [] similarly to lists
  2. To access an internal method of an object the -> is used instead of => (=> is used for associative arrays only)
  1. Added the option to ignore new lines in the ZPE Parser
  2. Fixed a flaw that prevented objects from being parsed properly
  1. Added the index of an array through square brackets $v[1] for access only
  2. Minor performance improvements and further refactoring
  1. Added ZPE to a Git repository for better backtracking
  1. Added the new index assignment through $v[2] = "Hello"
  2. Added index support for associative arrays
  3. Added index setting support for associative arrays $v["Tom"] = "Allan"
  4. Improved the way the compiler works, improving performance
  5. Improved the shell command to now return the return value of the command
  6. Added the sprintf function to format a string fairly quickly
Version 1.5.4 (11 updates)
  1. Added the new object declaration format similar to JSON or JavaScript: $v = {first_name : "Jamie", surname : "Balfour"}
  1. Improved the parser to support any third-party subsequent character array
  1. Redesign of the way objects are accessed that makes them a little unstable
  2. Fixed the issue with accessors and objects, making them stable again
  1. Added a fix to concatenation that will need to reviewed ASAP
  1. Fixed a performance issue
  2. Fixed an issue when using accessors on keyword 'this'
  1. Compiler keeps track of constants that have been assigned and throws an error on reassignment
  1. Fixed an issue with ZACs
  1. Server threads now share Zenith Engine consumers where they can.
  1. Added the switch statement, a rewrite of when-is statements

Version 1.6

Version 1.6.0 (4 updates)
  1. Added the --colour option
  1. Added the force_colour option
  1. Added the new -w web parser mode to parse web pages
  1. Fixed an issue in which the get_median function was actually using the same code as the get_range function
Version 1.6.1 (4 updates)
  1. Renamed Zenith Parsing Engine to ZPE Programming Environment
  2. Fixed an issue in which the parse_json function would only return an associative array, never a list
  3. Fixed an issue when comparing integers, double and strings that looked similar e.g. 1 == "1" would be true.
  4. Fixed a LAMP issue in which less than was improperly parsed, causing a memory leak and eventually a stack overflow
Version 1.6.2 (6 updates)
  1. Major fix to indexing of variables e.g. $v[0] = 10 now works perfectly
  2. Added a padding of nulls when an item is inserted at an index that doesn't exist
  3. Major improvements to the is_set method
  4. Fixed concatenation (small bug causing a huge problem)
  5. The shell command now adds line breaks at the end of each line
  6. Fixed an issue in which adding an escape \ before a quote would be ignored.
Version 1.6.3 (12 updates)
  1. Major update and complete rewrite of the way objects and structures work, making them faster and more efficient than before
  2. Accessibility within public, private and friendly objects is now checked at runtime
  3. Objects can now have functions that set internal values
  4. Improved the way that a break call bubbles
  1. Added the variable index to ACCESSOR e.g. $a->$b[0] = 10
  2. Better compatibility with libraries
  3. Probably released a fix for issues #4 and #7
  1. Functions can now be indexed using [] e.g. getNames()[0]
  2. Functions within objects can now also be accessed with the index notation e.g. $person->getNames()[0]
  3. When a function is incorrectly called it no longer returns !error as a string but an actual Error object
  4. Negation is now compiled differently and the not function has been removed
  5. Improved the way in which chained (.) functions work. E.g. $v = [44, 55] $x = $v.get(0)
Version 1.6.4 (23 updates)
  1. It's been a long time coming, but 64 bit integers (longs) are now used instead of 32 bit.
  2. Fixed the problem occurring with constant definition
  3. Constants are now defined using the define keyword (lowercase)
  4. ZPEObjects now expose an addNativeMethod method that allows executable Java code to be used in an object
  5. Native methods can now be run as Java based programs within objects
  6. When an ZPEObject is printed, it no longer exposes the values of the object (for safety and security reasons)
  7. Fixed downloading in ZULE
  1. Both the server side and the client side of ZULE have been improved
  2. Infinite indexes for variables are now possible
  3. New undefined() function returns an undefined value
  1. remove_at has now been added to strings as a chainable function
  2. Added a fix that allows objects to contain non-prefixed variables, e.g. $v = {"name" : "Jamie"} print($v->name) would work
  1. Fixed single bracketed expression problem e.g. return (5 + 5) would not work.
  2. Fixed an issue with concatenation
  3. Fixed an issue with FOR EACH loops with object and the this keyword
  1. Fixed an issue where associative arrays would not print with a comma
  1. Big change to the way that images are used in ZPE as they are no longer a native type but are now stored in an object.
  2. The image() method now returns an image_object object - a simple object with multiple native methods on it
  3. Several built in image methods have been removed in favour of the image_object
  4. The single apostrophe quote is now parsed properly
  5. Fixed performance of parser
  6. Improved the ZenithParser's method of finding multiline comments
  7. Small performance improvements in compilation
Version 1.6.5 (4 updates)
  1. Syntax change for pre-increment and pre-decrement from $++x to ++$x
  1. Added the FOR EACH IN loop to complement the FOR EACH AS loop (it works the reverse to this)
  2. Fixed an issue in the CSV parser where single line CSV files parsed incorrectly
  3. Fixed an issue in the feedback command that prevented it from sending when given just one argument
Version 1.6.6 (23 updates)
  1. Fixed an issue with for loops
  2. Added the circumflex syntax for power e.g. 5^2 is 25 (five squared) and 5^3 is 125
  3. Added the variable mode to the -r ZAC. This mode is like single line mode except that variables and their values are persisted.
  4. Removed the Program read mode and the Multi line read mode
  5. Fixed with comments in the Zenith Parser
  6. Fixed an issue in for loop with reading lists
  7. Fixed an issue that caused negative numbers to convert to strings when parsed
  8. Added binary parsing into the compiler e.g. $v = 0b0101. Binary values always start with a 0b
  9. Added the to_decimal method to convert a string of binary, octal or hexadecimal characters to an integer
  10. Command line arguments are now separated from program arguments using a -args command line
  1. Added object inheritance
  1. New if statement optional syntax using the THEN keyword: $x = 10 if $x == 11 then print("Yes") end if
  2. Added the built-in object methods `inherit`, `serialise` and `get_definition`. Removed the general serialise and object_get_definition methods.
  1. Fixed an issue where in the single line interpreter variable values were not actually retained properly
  2. The single line interpreter no longer exits on an error but displays an error and continues.
  1. Fixed an issue in which new ZPEObject would set their values and variables to the FRIENDLY only access
  1. Added the optional 'code' parameter to the exit method
  2. Small performance improvement with the LAMP parser
  1. Added the cache_value and read_cache_value methods which read a value from a special secured file
  1. Added the get_version method which obtains the version number of the ZPE instance it is running within
  2. Added an option to disable methods from the runtime environment (using the properties file)
  1. Added negation of variables such as -$v and improved the method of negative values being used
  2. Improved the way in which negative values are evaluated
Version 1.6.7 (14 updates)
  1. Added the new alternative lambda function syntax that uses the fat arrow syntax: $v = () => print("Hello") end function and $v = () { print("Hello") }
  2. Added the new alternative syntax to the for each loop similar to 'for each ($v) print ($pos++) end for'
  1. TYPO is now available within ZPE 1.6.7! Finally, type checking can be done with ZPE!
  1. Fixed an issue with dotted (reference) expressions
  2. Added the sublist method to the list type
  1. Added the new --typed argument that forces type checking in assignment
  2. Further engine cleanup means that built in methods are now completely separate from the compiler and interpreter
  1. The print method no longer runs variables containing functions but simply leaves them as a reference.
  2. Minor performance improvements through a hopeful trial
  1. New Python inspired fixed arrays defined as $v = [] * 4 or $v = ["Hello"] * 4
  1. Added support for else if as well as elseif in if statements
  1. Added the get_call_stack method
  1. Added the input alias for std_in
  2. Assignment within statements is now possible, e.g. if(($v = 10) == 10) print($v) end if
Version 1.6.8 (6 updates)
  1. The GUI mode now handles errors and does not quit on an error
  1. Command line now accepts negative values correctly
  2. Added the associative_array_create_ordered method which generates a new ordered associative array
  1. Further to the expansion of everything is a function in YASS, the ZPE global function is now the main place for functions
  2. Internal functions (nested functions) have been improved and now perform better
  3. New feature to -r ZAC, functions are now retained after being defined
Version (1 updates)
  1. Added the built-in internal update program. Just running the --update ZAC will update ZPE

Version 1.7

Version 1.7.0 (8 updates)
  1. Fixed a long standing issue with concatenation
  2. Fixed an issue which would result in the string_get_length function returning a string value
  3. Fixed an issue which would cause ZPELists to recursively call their own remove function
  4. Fixed an issue that caused quotes to be added to strings after being inserted using the older list_add_element method
  1. Fixed an issue with index access within an object context when assigning values (major bug)
  1. Added assertion tools for unit testing. Assertion can be true or false
  2. Fixed a ZenithParser flaw that meant that when lexing whitespace no check was made for comments after
  1. Added by reference variables, list_set_at_index already implements this
Version 1.7.1 (14 updates)
  1. A huge overhaul to the design and performance of ZPE both in the interpreter and the compiler
  2. Compiler and runtime have now been separated, which allows the compiler to run more efficiently
  1. Added support for by reference variable assignment, e.g. &$y = 10 will change the original $y
  1. Threaded functions are now written as function threaded x() instead of threaded function x(). The latter has not been removed but deprecated.
  1. Major improvement to ZenithParser which makes it perform 10% faster than before.
  1. Added the ZPEWebServer that can act as a basic web server and can serve ZPE-HTML pages (zhtml)
  2. ZenithParser now features custom whitespace tokens
  3. Improved performance
  1. Added the index.zhtml handler to the ZPEWebServer so that if no file is specified but an index file exist it will read this
  2. Further improvements to whitespace within the ZenithParser
  3. Better memory usage within the runtime interpreter
  1. Bug fix for object index access in comparison e.g. if($x->$v[0] > 9) print("Yes") end if would not work if $x = {$v : [34, 35]}.
  1. 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
  1. Replaced the LAMP with LAME, a much faster and more accurate evaluator for logic and maths
Version 1.7.2 (10 updates)
  1. Compiler constants are now moved to the compiler away from the interpreter. This offers better performance.
  2. Compiler constants can now only be one single value and cannot be expressions
  1. Compiler constants remain in play in the interactive interpreter between lines
  2. Fixed a flaw which prevented concatenation of doubles or integers (LAME only)
  3. Fixed a flaw which prevented access to variables defined using strong typing
  1. If the JAR is opened by double clicking rather than command line, the GFX editor will show
  2. Updated the GFX editor which will soon replace the GUI editor
  1. The normal Swing based editor has been removed and the GFX editor has taken its place. It is now accessed with the -g ZAC.
  2. Added the list_to_associative_array function
  1. Fixed an issue which prevented the _construct method from being created on an object
Version 1.7.3 (21 updates)
  1. Added the get_password_input function
  1. Further improvements to LAME performance
  1. New data types ZPEOrderedAssociativeArray and ZPEArray which replace the older is_ordered and is_fixed_size methods on their super classes
  2. Added the input_validate function
  3. Added the list_populate function
  1. Fixed a bug in concatenation that prevented the concatenation of integer values
  2. The to_json function is now the json_encode function
  3. The parse_csv, parse_json and parse_xml functions have been renamed csv_decode, json_decode and xml_decode respectively
  4. Minor performance tweaks that help stabilise LAME
  5. Added the csv_encode function
  6. list_add_element no longer functions on arrays only on lists
  7. list_remove now works differently on arrays. It will now set the value in the array to a Null value.
  1. Changed the way binary, hex and octal values are inserted.
  2. Binary has a signed bit so 0b111 would be 7 and 1b111 would be -7
  3. Octal now uses the format of 0o17 where the o is the feature that lets us know it is an octal value
  4. Octal has a signed bit so 0o17 is 15 and 1o17 is -15
  5. Hexadecimal numbers now have a signed bit so 0xa is 10 and 1xa is -10
  1. Structures are no longer just the same as objects and are now restricted to their original definition
  2. Major fix that fixes ZPE private access
  1. Added more @ documentation features
  1. Fixed an issue with index access in an evaluation
Version 1.7.4 (16 updates)
  1. Added short circuit evaluation of logic
  2. Logic parser completely rewritten which allows complex conditions to be evaluated quicker
  1. Fixed an issue with the is_set function not correctly accessing indexes
  2. Index safety is no longer built-in to the language by default but enabled using the properties file
  3. Removed an old hack that fixed an issue but actually broke the compiler later
  4. Fixed an issue within lambda functions due to a hack that was put in
  1. Added type checking option to the GUI
  2. Added the web server option to the GUI
  3. Fixed an issue in which objects were not correctly evaluated by the get_type function
  1. Complete rewrite of both structures and objects to make them more consistent
  2. Nested structures/classes are now available
  1. Added the implies and iff functions
  2. Added the nor function
  1. Added the http_post method, allowing requests to be made to any URL
  2. Added the new ZPE Online (codenamed Munro Top) registration and cloud storage of ZPE programs
  1. Added more online features
Version 1.7.5 (9 updates)
  1. GUI now remembers the last state it was in
  2. Fixed an issue with the date conversion in which the month and minute were muddle up
  3. A new feature now means that built-in language objects are now available. E.g. the ZPEUI object can now be accessed with new ZPEUI()
  4. Certain object generation methods: generate_image, generate_ui, file_open_sequentially and get_time have now been removed in favour of pure objects
  1. Native methods can now be constructors in objects
  2. The new file option in the GUI now creates a simple program with a main function
  3. Several constants have been removed in favour of a new global variable called $_SYSTEM, similar to PHP's superglobal $_SERVER
  1. Moved the output from the compiler from the internal method
  2. General performance improvements
Version 1.7.6 (15 updates)
  1. Added the new console window for output for the GUI mode.
  2. GUI console has a much cleaner look
  1. Fixed an issue in which the floor and ceiling functions returned a double instead of an integer
  1. Added support for larger numbers
  1. Added the list_process function
  2. Added the array_to_list function
  3. Added the list_to_array function
  4. Added the list_auto_populate function
  1. Added the for each...break loop
  2. Changed the file_open function to use the ZPESequentialFile object
  3. Added a file_get_contents function
  1. Fixed an issue that prevented functions being declared without a main function
  2. Added the password_hash function
  3. Added password_verify function
  4. Added password encryption to compiled files
Version 1.7.7 (5 updates)
  1. Added the EXACTLY EQUAL === comparison
  2. Added the --json option to the -v (version) ZAC
  1. Added the boolean comparison that 0 == false is true
  2. Fixed an issue that meant that short circuit evaluation only happened if it was true
  1. The display of objects when printed is now much more like PHP
Version 1.7.8 (7 updates)
  1. Fixed an issue with functions declared on anonymous objects being inaccessible
  1. Added the list_find_duplicates function
  1. New compiler optimisations mean that compiled programs run even faster
  1. Variables are now shared across chunks in the web parser mode
  1. Added the self keyword which has the same functionality as the this keyword
  2. The returnInteger function on the LAME parser has been removed. This means that an integer value such as 10 will now be displayed as it's decimal equivalent of 10.0
  1. Added the ZPEHTMLBuilder object
Version 1.7.9 (14 updates)
  1. The ZPEHTMLBuilder object internal function list_to_html_list now works recursively on lists
  2. Native methods are now declared with a public scope in objects
  1. Added the string_text_compare function
  2. Renamed the cache_value command to write_cache_value
  3. Added the count keyword. E.g. count ($v). This is not a function and takes advantage of compiler speed
  1. A change to the web parser - pages now end with ywp instead of zhtml
  2. The opening tag for web pages is now <?ywp and ywp?>
  1. Fixed an issue where some whitespace characters were ignored by the parser (e.g. ASCII 160)
  1. Performance improvements
  1. Fixed an issue with public declared values in a structure
  2. Removed the threaded function
  3. Added the run_in_thread function, this can also run lambda functions in a thread.
  4. Fixed an issue within objects that prevented inner functions being given the correct parent object
  5. Added for loop compiler optimisations
Version 1.7.10 (7 updates)
  1. Fixed an issue with quotes in quotes when escaping them
  1. Added type checking on array data types
  2. Added the array_get_data_type function, which will return the data type of all elements within the array
  1. Replaced the menubar in macOS with the system menu bar for consistency
  1. Added the tkmenu library to give macOS editors the macOS menu bar instead of the in window version
  1. ZPE now set the DOCUMENT_ROOT property to a public_html folder in the users home directory by default
  2. Added a button to stop a running web server in the GUI
Version 1.7.11 (11 updates)
  1. The is_set method now works on object properties, including object properties containing objects.
  2. Added the write function
  1. If the import function does not find the file initially, it will search the library path for the file next
  2. The password_hash function now throws a warning if the number of rounds is > 30 and resets it to 30
  1. Added the ZenithParser object
  1. More changes to the GUI including a new dark mode (only on macOS currently)
  1. Added the alternative value syntax, e.g. $x = null $v = $x ?? "James" will evaluate to "James"
  2. Potential fix for Bug #9 - global traverse now marks traversed FASTs as complete
  1. Fixed a long standing bug that caused objects to not update when a reference was updated when no main function was provided
  1. For loops with the syntax x = n to y can now use variable references as the y value
  2. The same for loops now loop from x to y non-inclusive of y
Version 1.7.12 (7 updates)
  1. The if...then statement is now a single expression based if statement
  2. The if...then statement can also have a single expression based else statement
  3. Improved performance of When-Is statement by using a hash map to store values
  1. Fixed an issue in which quotes were removed from a string if used inside another string
  1. 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
  2. Minor performance updates
  1. Importing is now done with the import keyword and is no longer a function.
Version 1.7.13 (5 updates)
  1. Minor performance improvements
  2. Fix made to the way plug ins work
  3. MySQL connector plug in now available
  1. Added create_list to the ZPEUI object
  1. Added the wake_on_lan function

Version 1.8

Version 1.8.1 (16 updates)
  1. Changes to the way in which the ZPEClient and ZPEServer work, making them much more stable
  2. ZPEClient is now the ZENClient and ZPEServer is now the ZENServer
  3. ZENClient and ZENServer no longer feature message mode
  4. ZPEWebParser has been renamed ZENWebParser
  5. Tidied up internal packages so ZEN related files are now in the zen package
  1. Major improvements to way the ZENClient and ZENServer communicate
  2. Public and private key encryption is now used to encrypt all information between server and client unless no password is given
  1. Added a new option to the shutdown command that allows a time to be specified from the current time to shutdown at
  1. Made a major fix to the way bigger (long or double) numbers are handled
  2. Added the time function which gets the current number of milliseconds since 1st January 1970 (epoch time)
  3. Added the run_at command, which runs a background daemon thread until a certain time arrives and executes that function using it's handle
  1. Certain functionalities have been moved to primary native libraries that will offer to be installed on first run
  2. Fix made to ZULE repository that make it perform better
  3. Moved the generate_alphabet function to String functions
  4. Moved the send_zpe_server_request to Networking functions
  5. ZULE has been moved to a separate static class
Version 1.8.2 (13 updates)
  1. Added the list_object_properties function which lists all properties of a given object
  2. Added the get_object_property function which will get a value from an object property
  3. Added the is_function function
  4. Reduced the delay on the interactive interpreter
  1. Added the list_zpe_functions function which will create an ordered associative array of functions
  2. Changed the way in which the JSON parser deals with ordered associative arrays, ensuring order is maintained
  3. Fixed an issue in which functions were not evaluated in concatenation
  1. The -r and -i modes have been switched. -i is now the interactive interpreter and -r is the runtime
  1. Added the -j option to the main ZPE package for JSON commands (more information coming soon)
  2. ZPEExceptions are now accessible as ZPEObjects and can be returned from a function
  1. Major fix for an issue that caused object functions to not see the same call stack as their object owners
  2. Added the list_shuffle function
  1. Added the speak function, however, this function is currently experimental and works only on a Mac
Version 1.8.3 (7 updates)
  1. Fixed an issue that meant that ZPEObject values would sometimes not save correctly when cached.
  1. Added the list_count_occurrences function
  2. Added the list_count_if function
  1. Added support for null values in the JSON parser.
  1. Added the inline documents syntax
  1. Fixed an issue in which imported libraries were not accessible in all cases
  2. Added the say alias for the speak function
Version 1.8.4 (4 updates)
  1. Improved the in-line document syntax by supporting variables
  1. Changed the domain for the installer to
  1. Fixed an issue in which the list_parameters function required at least one parameter
  2. Improved the way objects, associative arrays, lists etc are iterated and made it more flexible
Version 1.8.5 (7 updates)
  1. ZENServer now searches for updates automatically when set in the properties file to do so
  1. Fixed an issue in which object comparison through the _compare method didn't work
  1. The --client argument is no longer required to specify a ZENClient, as the -h argument informs the application of this
  1. Added the file_get_bytes function
  2. Removed the type parameter from the file_get_contents function, making it only read text
  1. Added the play_audio function which plays an audio stream
  1. Changed the play_audio function to open_audio_stream which returns a ZPEAudioStream object
Version 1.8.6 (15 updates)
  1. Added the extends keyword as an alternative to inherits for inheritance of classes or structures
  2. Added the option to create a constructor with the name of the class, like C or Java, e.g class Animal { function Animal() { } }
  1. Added index ranges e.g. $x[1:3] similar to Python
  2. Added in negative index support, e.g. $x[-1] which will work in reverse, again similar to Python
  1. Added the list_drives function which lists all root drives
  1. ZENServer is now interactive, meaning declared functions and variables are stored
  2. ZENServer is now threaded - I hadn't even noticed this wasn't done! :O
  1. Added support for the Velocity Web Server through the Velocity Module
  2. Added the update_zpe function which attempts to run the ZPE updater
  1. Added the the set_header function which will set a web header
  2. Added the set_http_status function which will set the HTTP response code header
  1. Deprecated the ZENWebServer
  2. Added the get_ip_address function which will return the current system's IP address
  1. Added the create_temporary_file function which can be used to create a temporary file
  2. Added the file_put_bytes function to write bytes to a file
Version 1.8.7 (11 updates)
  1. Added the list_plugins function which returns all active plugin functions
  2. Added the get_function_information function which returns information from the function manual (see --man for more information)
  1. list_pop and list_dequeue had the wrong implementation and manual entry: pop would remove from the start of a list and dequeue from the end, this has been fixed
  2. Fixed an issue with the --man command and mixed types being displayed as an object
  1. Added the ZPECalculator object, which contains an expression compiler used to evaluate an expression
  1. All ZPEObjects included such as the ZPEImage are no longer prefixed with ZPE, so the ZPEImage is now the Image and can be declared as $x = new Image()
  2. The ZPEUI object is now the UIBuilder object
  1. Introduction of ZPEKit (pronounced zippy kit) means that the YASSCompiler is not accessible publicly but can be accessed through ZPEKit
  1. Improved the way in which replacements are done in the graphical editor
  1. Improved the to_binary function which can now accept a string of characters which will be converted to their binary equivalent
  2. Added the list_combine function which can combine a list into a string very quickly
Version 1.8.8 (6 updates)
  1. Programs compiled with a passcode are now encrypted
  2. Fixed a few bugs that seemed to occur within the GUI mode
  1. Numbers with a negative exponent e.g. 5E-5 can now be represented - this is a long standing bug within the Zenith Parsing Engine parser. I can't believe it's been here this long :L
  1. Added in a simple send> command to the ZENClient that allows the sending of files via the client to the ZENServer
  1. Fixed an issue and improved performance of the new send> command within the ZENClient and ZENServer
  1. Fixed an issue in ZPE 1.8.7 that meant that it could not be executed with JavaFX and therefore some openJDK versions did not execute it at all
Version 1.8.9 (23 updates)
  1. Fixed the issue with http_post and ZPE Online and made POST requests function correctly again
  2. Added the command documentation feature to the GUI editor
  1. Added the require keyword as an alternative for import
  1. Separated the compilation of parameters and arguments in the compile_parameters compiler function to compile_parameters and compile_arguments so $y = function($m, [50]) { $m = $m + 5 } is no longer valid
  2. Default values can now be assigned to parameters. E.g. function foo($arg1, $arg2 = 10, $arg3 = "Jack")
  3. Providing too many arguments to a function no longer stop the program with a -2 error but simply throws a ZPE WARNING.
  4. 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]
  5. New Recent Cloud Files option in GUI
  1. The GUI ZPE Online now connects via HTTPS
  2. Properties are now uppercase
  3. Since my unfortunate shift from macOS to Windows for the time being, I focused the development on adding an icon to the editor. It now has the new ZPE logo
  4. Fixed the broken tray icon in GUI
  5. Added the ability to run a ZENServer from the GUI
  6. Removed the option to show server messages in a GUI mode from ZENServer (it may come back but better designed)
  7. The new ZPE folder is ~/.zpe instead of ~/.zpe_tools
  8. Added the ONLINE_PATH and ZULE_PATH properties to the properties file
  9. Created a new .exe file for Windows
  1. Better console colouring thanks to JANSI library
  2. File encryption when sending data to an passworded server is now standard
  3. Added the ls command to the ZENClient (e.g. ls or ls Documents)
  4. Cleaned up the directory_list_files function when working with the empty string (the current working directory will be listed)
  5. Added the rls shorthand to the ZENClient which will run `return beautify(directory_list_files(""))`. Much like ls, this can accept a parameter filename
  6. Added the get command to obtain a file from the server (it's the direct reverse of the send command)
Version 1.8.10 (21 updates)
  1. Added the file_encrypt and file_decrypt functions
  2. Fixed an issue in which compiled applications given a -level argument could not be given arguments
  3. Added the file_get_path function which will obtain the absolute path of a file or directory
  4. Added the file_get_parent_path function will obtain the absolute path of the parent directory of a file or directory
  1. Added several SSH-like commands ls, cd, pwd and cat to the ZENServer and ZENClient
  2. ZENServer has its own root path
  3. The ZENServer rls command is now ls and the local version is lls
  4. Added real Unix style file paths using my own version of the .. in a path to the ZENServer
  1. Added the mkdir and rm commands to ZENServer and ZENClient
  2. Added the supports feature to the server
  3. The list of server commands now comes from the server to the client so that the client can have an up to date list of server commands supported
  4. Changed the logo in the command line
  5. The -d debug mode has been changed to the -m mode and improved. Now it acts like a watch command and informs of any changes to a variable within a function, including private functions
  1. Added the --install ZAC which will now replace the -h install and the --configure command
  2. get> and put> become get and put in client
  3. Fixed a few issues with the installer package to make it work more in a more seamless way
  1. The -p mode now supports inserting a property value from the command line by leaving out the -v argument
  1. Added the list_zpe_aliases function
  1. Added support for ZPEObjects to the JSON parser
  1. Added native sandboxing to the engine providing further sandbox support linked to the permission level system
  2. Added the USE_FILE_SANDBOX property to the properties file
Version 1.8.11 (10 updates)
  1. Compiler issues are now handled better
  2. Fixed an issue that threw infinite errors in the -a mode when there was a compile issue
  1. Added infinite parameters to functions
  1. ZPE now detects headless systems before launching the GUI
  1. Better management of reference functions and objects
  2. General tidy up of the native method objects
  3. Better integration of Objects and Structures
  4. Fixed an issue where an empty file list in compilation would cause an error and crash the compiler
  5. Removed the old serialise and serialize, save_object_to_file aliases from the predefined function list (they should have been removed previously)
  6. Removed the open_object_from_file alias for the deserialise function
Version 1.8.12 (8 updates)
  1. Added the create_variable command to create local variables on the fly
  2. Added the -flush command to interactive interpreter to clear all global variables
  3. Added the say command to ZENServer/ZENClient
  1. Stricter variable name checking
  1. The interactive interpreter no longer adds variables back into the global function but instead the main function
  1. Added the ZPEString data type replacing the standard string
  2. String values can now be passed by reference
  3. String values are now chainable/reference types
Version 1.8.13 (3 updates)
  1. Fixed an issue with the ZPEString used as a key in an associative array
  2. Fixed an issue with assertion and comparing strings
  1. Added the ZENClient object that allows the client to run in pure YASS code

Version 1.9

Version 1.9.1 (8 updates)
  1. Fixed empty lists in the ZenithJSONParser
  2. Replaced a few references to the ZENJSONParser with ZenithJSONParser
  3. Added support for empty associative arrays to JSON parser
  1. Fixed an issue that caused parameters to always be set even if they weren't
  2. Fixed a bug that caused undefined == undefined not to always work
  1. Fixed an issue that meant that negative binary numbers (using two's compliment) padded with 0s and were excessively long
  1. Added the match statement, similar to the case statement
  2. Added the else option in the match statement
Version 1.9.2 (6 updates)
  1. Created a ZPE settings file type
  2. ZPE now stores local settings such as a unique ID in a settings file
  3. Added the get_unique_id predefined function
  1. Added the generate_random_string predefined function
  1. Added the *=, /= and ^= operators
  2. Updated the increment/decrement operators to use long values rather than integer
Version 1.9.3 (8 updates)
  1. Minor performance improvements
  1. Added the new optional let keyword, e.g. let $x = 10
  1. Added in a new syntax for declaring variables without a dollar in front i.e. let x = 10
  2. Added support for new variables with lambda functions, e.g. let x = function(y) print(y) end function x("Hello")
  3. Added the var keyword which can be used in place of let
  4. All these years later I have made print a class 1 predefined function, making it perform slightly better
  5. Improved the quality of the output when a native object function cannot be run due to permission levels required
  6. 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)
Version 1.9.4 (4 updates)
  1. Added a new data type, the record structure: e.g. $v = [x = 65] print($v.x)
  1. Added the new log predefined function
  1. Fixed a major issue with else if statements. They can now only be written as elseif again
  2. 0 now correctly resolves to false when in a comparison
Version 1.9.5 (10 updates)
  1. Fixed an issue that prevented strings from being serialised, and in turn any data type containing strings
  2. Variables defined using the let keyword can now be negated
  1. Added the new PHP 8 style match statement e.g. print(match($x) { 5 => "Yes", else => "No"})
  2. Added the DoNothing object
  3. The do_nothing command no longer returns null but a DoNothing object, in it's place a lambda function should be used that returns null
  1. Changed the way in which the time thread works which makes them more reliable
  2. Added the ScheduledCommand object that can now allow a thread to execute a command the future to be interrupted
  3. Re-added the not keyword, this works identically to the ! except it requires a bracketed expression e.g. print(not(true))
  1. Added the set_id to all UI objects
  1. Added the get_remote_ip_address command to retrieve the IP address on the public Internet
Version 1.9.6 (5 updates)
  1. Added the be keyword, e.g. let x be 10
  1. Deeper support for non-$ bound variables
  2. Pre and post increment and pre and post decrement now support non-$ bound variables e.g. let x = 10 x-- print(x) let y = --x
  3. Fixed an issue in which increment assignment and decrement assignment values would not work
  4. The UPDATE_PATH property now allows the user to modify the path/URL to where to find updates
Version 1.9.7 (10 updates)
  1. Changes have been made to the assertion unit testing asserts true and asserts false now only take a parameter which is now compared to a true or false value respectively
  2. asserts equal and asserts nequal is now used to compare values. e.g. asserts equal (5 + 5, 5 * 2)
  3. asserts equal and asserts nequal now use LAME to evaluate equality
  4. Record structure has been removed as it is being redesigned
  5. Strong typing is finally complete in ZPE/YASS! TYPO has been redesigned from the ground up to give a much better typing system
  6. Variables can be declared with a type using declare x as string = "Hello", string x = "Hello", declare $x as string = "Hello", string $x = "Hello" or using any other means
  7. Fixed an issue within the Zenith Parsing Engine that prevented double values with an exponent from evaluating correctly
  1. Fixed a long standing issue in which FAST values weren't copied correctly
  2. Fixed another issue in which scope of variables and functions wasn't copied correctly from prototype to instance
  1. Structures can now have properties defined with a data type
Version 1.9.8 (4 updates)
  1. Re-added support for internal/local structures within a function
  1. Added more information about why a login hasn't worked for ZPE Online
  2. Fixed a long standing issue with modular arithmetic
  1. Added the help program to the interactive interpreter
Version 1.9.9 (10 updates)
  1. Fixed an issue in which the get_definition function would return an incomparable string
  2. Added the format_string function
  1. Add the associative_array_remove function
  2. Major fix to ZPEString that means that when inserted into a map or associative array it can now be found using its hash code
  3. Associative arrays no longer do any late conversion (this was a temporary fix) on ZPEString data types but perform full hashing checks on all operations
  4. Further improved comparison between data types, with lists and associative arrays now being comparable (lists require the same order to be the same)
  1. Major comparison fixes make the runtime more stable and makes it easier to compare lists and arrays
  2. All associative array functions are now called map functions, with associative_array aliases
  3. All associative array functions now fall under the Maps category
  4. Updated the supports function to check all aliases as well as parent functions for support
Version 1.9.10 (15 updates)
  1. 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
  2. Changed the null value works underneath the surface
  3. Further improved ZPEString comparison
  4. Fixed an issue in which the get_type function wouldn't return a comparable string
  5. An additional magic method for objects, _beautify, has been added, which allows ZPE to call it upon beautification
  1. String comparison has now been improved to allow $a < $b to evaluate which string comes first
  1. Added the .copy method to ZPELists
  2. Renamed the getc method of ZPELists to get_circular (this was a user-unfriendly name)
  1. Allows disabling of compiler includes using the properties file
  1. Added the list_remove_all function
  1. Fixed an issue in which http_post did not return a string correctly
  2. Fixed an issue in which setting a boolean or numeric value to null would cause a memory exception
  1. Fixed an issue with the interactive interpreter that came from the fix made a few days back
  1. Added the optional decimal_places parameter to the round function
  2. Fixed an issue with input reading in GUI mode
Version 1.9.11 (3 updates)
  1. Added the options to visit the ZPE Online website and public ZPE Online repository
  1. New GUI console allows text input
  1. Further improved the GUI console performance and text input
Version 1.9.12 (8 updates)
  1. Moved static runtime variables from the Main class to the RunningInstance class
  1. Added the sign function which determines if a value is positive or negative
  1. Updated the counter function manual to reflect that it works on more than just strings
  1. ZPE now retrieves compiler constants from the constants.json file in the install path
  2. Constants have now been moved to the RunningInstance meaning no duplication of constants
  1. Fixed the write function
  1. The get_type function is now just type and the alias type is now get_type
  2. Another fix has been made to ZULE
Version 1.9.13 (15 updates)
  1. Added the new Map data type which supersedes the list data type for Maps
  2. Fixed an issue that prevented strings from being iterated correctly
  1. Added the file_touch function to 'touch' a file and set its modification time
  2. Added the list_contains_all function which checks if list1 contains everything list2 contains
  3. Added the string_to_list function to split the string into a list of characters
  4. Added the copy_of function to make a pure copy of a value
  5. Added the rainbow effect to the format_string function
  6. The write function can now take an optional function parameter that allow a function to run after each character is written
  7. Changed the way that the exit function works in GUI mode
  8. Added the resize reference function to array data types
  9. Changed the way in which the write function works in the GUI editor console
  1. Changed the way that documentation is 'bound' to fASTs
  2. Fixed an issue in the ZENServer that meant that when a file was put it disconnected from the client
  3. The ZENClient put command now accepts a second argument which is optional and can provide the file name for the file on the server
  4. Made it possible for external applications to run a ZPE Console and run code within it like the editor does

Version 1.10

Version 1.10.1 (6 updates)
  1. Added the ZPE Online includes feature. Simply type: includes online {code} where {code} is the online code
  1. Fixed an issue which would close the socket after a put command in the ZENClient
  2. Completely redesigned the way in which the update check works
  1. Small performance improvements using cached files (not yet released)
  1. Added the list_compose function, which can help with quickly generating a list
  2. The UIBuilder no longer is bundled with ZPE. This will likely be a temporary change.
Version 1.10.2 (10 updates)
  1. The beep function is now faster and more responsive
  1. Beautification of data has been improved further, adding commas, quote marks for strings and more indentation
  2. Fixed an issue in the JSON encoder that now makes it more flexible
  1. Added the OpenJDK/JFX requirements to the class path
  2. ZPE now bundles the open JFX package - this makes ZPE 10x larger :(
  1. The ZPEHelperFunctions have moved to the jamiebalfour.zpe.core package
  1. The editor has been removed, as have all JavaFX features, and the editor has now moved entirely to Swing
  2. The GUI can now stop code that is running
  1. Huge changes to the GUI that make it more functional
  2. New additions to the UI
Version 1.10.3 (10 updates)
  1. Syntax highlighting is now a feature of the editor
  1. Added the new dark mode to the editor
  2. Added the option to view the changelog from the editor
  3. New 'function machine' creator in the GUI editor
  1. Fixed an issue in which the compiler did not accept a function call in a loop. e.g. for ($i = 0 to len($str))
  2. Added the ability to download files from the ZPE Online Public Repository from the editor
  3. Fixed an issue in which Fn keys (amongst others) would be picked up by the editor console
  1. Added the ability to GetFunctionNames to ZPEKit which compiles and returns all functions in a program
  2. Added the Create code outline feature to the GUI
  3. Fixed an issue in which ZULE libraries would be downloaded to the incorrect location
Version 1.10.4 (6 updates)
  1. Big update: the by reference feature is now available and usable with ZPETypes. $x = &$y
  2. Changed all associative array functions to map functions, including internal documentation
  1. Made an improvement to by value performance
  1. Fixed an issue in which a ZEN Client would crash if the server responded that a command was not supported
  1. Shutdown command no longer requires any arguments and by default carries out a shutdown
  1. Changes have been made to the installer package that improve stability

There are no comments on this page.

New comment
Code previewClose
Feedback 👍
Comments are sent via email to me.