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 864 changes recorded in this changelog. From this tab 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 (2 changes)
10.01.2011
  1. Complete rewrite of BlackRabbit Script
31.12.2012
  1. Stopped developing BlackRabbit Script
Version 1.2.0 (2 changes)
19.02.2015
  1. Added basic print support support using if return statement
  2. Added support for variables from the command line
Version 1.2.01 (56 changes)
20.02.2015
  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
21.02.2015
  1. Evaluate function added
  2. String support added
  3. Added GUI mode [experimental] to BRS
22.02.2015
  1. Global variables added
  2. Faster access to variables in Zenith Engine
  3. Custom commands added
  4. Functions added
  5. Call function added
23.02.2015
  1. Added help command to BRS
  2. Added type output options
  3. Added return output options
24.02.2015
  1. Added conditional statements
  2. Added if statements
  3. Added else statements
25.02.2015
  1. Added add, subtract, multiply and divide functions
  2. Added modulo function
  3. Added sin, cos and tan functions
26.02.2015
  1. Added variable reassignment
  2. Improved performance of conditional statements
27.02.2015
  1. Added while loops
  2. Fixed an issue with if statements
  3. Added escape characters
28.02.2015
  1. Added sqrt function
01.03.2015
  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
02.03.2015
  1. Added get_constant function
03.03.2015
  1. Added power function
  2. Added greater_than function
  3. Added less_than function
04.03.2015
  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
05.03.2015
  1. While loop improvements added
06.03.2015
  1. Improved the speed of the interpreter
  2. Fixed an issue with strings
07.03.2015
  1. Added a function line for running a single function
08.03.2015
  1. Improved substitution of variables
10.03.2015
  1. Added format_number
18.03.2015
  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.0 (82 changes)
09.05.2015
  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
10.05.2015
  1. Improved speed of condition testing
  2. Assignment of functions
  3. Tree parser added
  4. Compile feature added
11.05.2015
  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
12.05.2015
  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
13.05.2015
  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
14.05.2015
  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
18.05.2015
  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
19.05.2015
  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
20.05.2015
  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
21.05.2015
  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 changes)
22.05.2015
  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
25.05.2015
  1. Added a simple graphical user interface to the engine
05.06.2015
  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 changes)
06.06.2015
  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
07.06.2015
  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
10.06.2015
  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
11.06.2015
  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 changes)
12.06.2015
  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
13.06.2015
  1. Fixed the arguments system
Version 1.3.4.90 (12 changes)
15.06.2015
  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 http://www.jamiebalfour.scot/projects/zpe/
Version 1.3.5 (5 changes)
15.06.2015
  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
19.06.2015
  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 1.3.5.32 (4 changes)
20.06.2015
  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
28.06.2015
  1. Added file_open_image function
  2. Added limit_real function
Version 1.3.5.63 (15 changes)
29.06.2015
  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
30.06.2015
  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 1.3.5.68 (10 changes)
30.06.2015
  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
01.07.2015
  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 1.3.5.90 (9 changes)
02.07.2015
  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
07.07.2015
  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 1.3.5.190 (3 changes)
08.07.2015
  1. Added the unset function for removing variables after use
09.07.2015
  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 1.3.6.0 (17 changes)
10.07.2015
  1. Added structures
  2. Added structure variables
  3. Added structure functions
11.07.2015
  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
12.07.2015
  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
15.07.2015
  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 1.3.7.0 (8 changes)
21.07.2015
  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
22.07.2015
  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 1.3.7.25 (12 changes)
25.07.2015
  1. Added library support
  2. Added support for semi-colons in for loops as well as commas
26.07.2015
  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
27.07.2015
  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 1.3.7.44 (4 changes)
04.08.2015
  1. Added lambda functions that can be assigned to variables: e.g. $foo = function($x){return $x * $x}
  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 1.3.7.89 (24 changes)
05.08.2015
  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
11.08.2015
  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
13.08.2015
  1. Added the screen_grab function
15.08.2015
  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
18.08.2015
  1. Added the all_true function
  2. Added the all_false function
  3. Added the any_true function
  4. Added the any_false function
19.08.2015
  1. Changed the type:$language requirement on the -c mode to $language.
20.08.2015
  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 1.3.7.100 (5 changes)
27.08.2015
  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.0 (9 changes)
29.08.2015
  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
30.08.2015
  1. Added the echo alias
  2. Readded the round command
  3. Negation can now be applied through the ! function
Version 1.4.0.83 (1 changes)
12.09.2015
  1. Added compare_dates function to compare two dates
Version 1.4.1 (30 changes)
21.10.2015
  1. A few minor updates
29.11.2015
  1. Added the range function to generate a list of numbers in a range
  2. Memory usage lowered slightly
04.12.2015
  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)
06.12.2015
  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
09.12.2015
  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
11.12.2015
  1. Added publicly accessible isFunction and isObject methods to the JAR as requested
14.12.2015
  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
15.12.2015
  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 changes)
16.12.2015
  1. Improved efficiency with structure variable assignment
  2. Scripts without any functions at all can be run as a single program
20.12.2015
  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
22.12.2015
  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)
14.05.2016
  1. Added the new list_pop and list_dequeue functions
28.05.2016
  1. Added lazy evaluation to condition evaluation
31.05.2016
  1. Fixed a flaw with the random_number function that added the minimum as a string
05.06.2016
  1. Conditional words like and, or and xor are compiled as their logical counterparts (&&, || and **)
07.06.2016
  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)
16.06.2016
  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
18.06.2016
  1. Added set_cartesian_product function
27.06.2016
  1. Compiler improvements
  2. Updated manual command for get_type
  3. Updated website information to jamiebalfour.scot/projects/zpe/
  4. The put, length and get commands are no longer experimental but fully implemented. They work as [43, 22].length() which will give 2.
01.07.2016
  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 changes)
13.07.2016
  1. The biggest change in ZPE history has begun: rewriting the original condition and mathematical parsers and evaluators
16.07.2016
  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
17.07.2016
  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
19.07.2016
  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
20.07.2016
  1. Fixed an issue in which bracket expressions were incorrectly tested
21.07.2016
  1. Fixed a few minor issues that caused compile issues
  2. Improved the LAMP compiler
Version 1.4.3.10 (14 changes)
22.07.2016
  1. Improved the security of certain functions
  2. Reduced possibility of a memory leak in some functions
  3. Added the break function
24.07.2016
  1. Added scopes (private, public and friendly) support to variables
  2. Added the scopes to constants as well
25.07.2016
  1. Improved the efficiency of the compiler
27.07.2016
  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
28.07.2016
  1. Changed the way in which the interpreter functions (less recursion) - leading to better performance and memory usage
29.07.2016
  1. Fixed a small issue that caused lambda functions to crash
30.07.2016
  1. Fixed an issue in which lists and associative arrays would not be evaluated properly in a comparison
01.08.2016
  1. Fixed an issue with the ternary operator on single expressions
Version 1.4.3.40 (11 changes)
02.08.2016
  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
03.08.2016
  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
04.08.2016
  1. Better error messages from the compiler
05.08.2016
  1. Added the plus equals (+=) and the minus equals (-=) increment and decrement operators
  2. Added the concatenation operator, & and deprecated the string_concatenate command
06.08.2016
  1. Fixed an issue with variables and increment and decrement values
  2. Fixed an issue with anonymous functions and return functions without brackets
Version 1.4.4.0 (5 changes)
07.08.2016
  1. Focuses on external implementation of language converters
12.08.2016
  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
14.08.2016
  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.0 (11 changes)
08.12.2016
  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
10.12.2016
  1. Added json_to_map function
11.12.2016
  1. Added interpreter warnings
17.12.2016
  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) }
21.12.2016
  1. Fixed an issue in which the ceiling command would round down
  2. Added the aes_encrypt and aes_decrypt functions
07.01.2017
  1. Improved server and client communication and functionality
Version 1.5.0.1 (6 changes)
08.01.2017
  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
10.01.2017
  1. Added threaded lambda functions. $v = threaded function() { for ($i = 0; $i < 100000; $i++) print($i) end for }
11.01.2017
  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 changes)
14.01.2017
  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
16.01.2017
  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
21.01.2017
  1. Added compiler improvements that make compiled applications run faster
  2. The name parameter in the compiler is now fully optional
22.01.2017
  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
31.01.2017
  1. Fixed an issue with concatenation
  2. Added do while loops
Version 1.5.2 (5 changes)
07.02.2017
  1. Added custom keyword plugin feature. This allows custom parsing of symbols and words
13.02.2017
  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
14.02.2017
  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 changes)
14.02.2017
  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
15.02.2017
  1. Improved server stability
  2. Pointers have been renamed accessors. The accessor symbol is still =>
21.02.2017
  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
22.02.2017
  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.
23.02.2017
  1. Fixed an issue within the compiler, whereby all inner compiled strings would be case insensitive.
24.02.2017
  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
26.02.2017
  1. Continuing with the idea of a reusable parser, the CSV parser has been redesigned from the bottom up
21.03.2017
  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)
26.03.2017
  1. Added the option to ignore new lines in the ZPE Parser
  2. Fixed a flaw that prevented objects from being parsed properly
28.03.2017
  1. Added the index of an array through square brackets $v[1] for access only
  2. Minor performance improvements and further refactoring
29.03.2017
  1. Added ZPE to a Git repository for better backtracking
30.03.2017
  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 changes)
31.03.2017
  1. Added the new object declaration format similar to JSON or JavaScript: $v = {first_name : "Jamie", surname : "Balfour"}
01.04.2017
  1. Improved the parser to support any third-party subsequent character array
02.04.2017
  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
05.04.2017
  1. Added a fix to concatenation that will need to reviewed ASAP
06.04.2017
  1. Fixes a performance issue
  2. Fixes an issue when using accessors on keyword 'this'
07.04.2017
  1. Compiler keeps track of constants that have been assigned and throws an error on reassignment
18.05.2017
  1. Fixed an issue with ZACs
19.06.2017
  1. Server threads now share Zenith Engine consumers where they can.
04.10.2017
  1. Added the switch statement, a rewrite of when-is statements
Version 1.6.0 (4 changes)
01.02.2018
  1. Added the --colour option
28.02.2018
  1. Added the force_colour option
30.05.2018
  1. Added the new -w web parser mode to parse web pages
31.05.2018
  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 changes)
24.07.2018
  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 changes)
30.07.2018
  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 changes)
01.08.2018
  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
02.08.2018
  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
03.08.2018
  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 changes)
05.08.2018
  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
06.08.2018
  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
07.08.2018
  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
09.08.2018
  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
11.08.2018
  1. Fixed an issue where associative arrays would not print with a comma
13.08.2018
  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 changes)
27.08.2018
  1. Syntax change for pre-increment and pre-decrement from $++x to ++$x
02.09.2018
  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 changes)
03.09.2018
  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. Fixes 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
08.09.2018
  1. Added object inheritance
09.09.2018
  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.
10.09.2018
  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.
11.09.2018
  1. Fixed an issue in which new ZPEObject would set their values and variables to the FRIENDLY only access
14.09.2018
  1. Added the optional 'code' parameter to the exit method
  2. Small performance improvement with the LAMP parser
15.09.2018
  1. Added the cache_value and read_cache_value methods which read a value from a special secured file
16.09.2018
  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)
19.09.2018
  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 changes)
19.09.2018
  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'
24.09.2018
  1. TYPO is now available within ZPE 1.6.7! Finally, type checking can be done with ZPE!
25.09.2018
  1. Fixed an issue with dotted (reference) expressions
  2. Added the sublist method to the list type
26.09.2018
  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
01.10.2018
  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
11.10.2018
  1. New Python inspired fixed arrays defined as $v = [] * 4 or $v = ["Hello"] * 4
12.10.2018
  1. Added support for else if as well as elseif in if statements
15.10.2018
  1. Added the get_call_stack method
19.10.2018
  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 changes)
21.10.2018
  1. The GUI mode now handles errors and does not quit on an error
22.10.2018
  1. Command line now accepts negative values correctly
  2. Added the associative_array_create_ordered method which generates a new ordered associative array
25.12.2018
  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.6.8.1 (1 changes)
28.12.2018
  1. Added the built-in internal update program. Just running the --update ZAC will update ZPE
Version 1.7.0 (8 changes)
29.12.2018
  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
30.12.2018
  1. Fixed an issue with index access within an object context when assigning values (major bug)
05.01.2019
  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
09.01.2019
  1. Added by reference variables, list_set_at_index already implements this
Version 1.7.1 (14 changes)
10.01.2019
  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
11.01.2019
  1. Added support for by reference variable assignment, e.g. &$y = 10 will change the original $y
13.01.2019
  1. Threaded functions are now written as function threaded x() instead of threaded function x(). The latter has not been removed but deprecated.
15.01.2019
  1. Major improvement to ZenithParser which makes it perform 10% faster than before.
16.01.2019
  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
18.01.2019
  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
26.01.2019
  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]}.
27.01.2019
  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
30.01.2019
  1. Replaced the LAMP with LAME, a much faster and more accurate evaluator for logic and maths
Version 1.7.2 (10 changes)
02.02.2019
  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
03.02.2019
  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
12.02.2019
  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
13.02.2019
  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
14.02.2019
  1. Fixed an issue which prevented the _construct method from being created on an object
Version 1.7.3 (21 changes)
14.02.2019
  1. Added the get_password_input function
25.02.2019
  1. Further improvements to LAME performance
27.02.2019
  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
01.03.2019
  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.
03.03.2019
  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
05.03.2019
  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
06.03.2019
  1. Added more @ documentation features
08.03.2019
  1. Fixed an issue with index access in an evaluation
Version 1.7.4 (16 changes)
10.03.2019
  1. Added short circuit evaluation of logic
  2. Logic parser completely rewritten which allows complex conditions to be evaluated quicker
11.03.2019
  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
12.03.2019
  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
13.03.2019
  1. Complete rewrite of both structures and objects to make them more consistent
  2. Nested structures/classes are now available
17.03.2019
  1. Added the implies and iff functions
  2. Added the nor function
22.03.2019
  1. Added the http_post method, allowing requests to be made to any URL
  2. Added the new online registration and cloud storage of ZPE programs
23.03.2019
  1. Added more online features
Version 1.7.5 (9 changes)
24.03.2019
  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
25.03.2019
  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
08.04.2019
  1. Moved the output from the compiler from the internal method
  2. General performance improvements
Version 1.7.6 (15 changes)
09.04.2019
  1. Added the new console window for output for the GUI mode.
  2. GUI console has a much cleaner look
13.04.2019
  1. Fixed an issue in which the floor and ceiling functions returned a double instead of an integer
15.04.2019
  1. Added support for larger numbers
19.04.2019
  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
20.04.2019
  1. Added the for each...break when...is loop
  2. Changed the file_open function to use the ZPESequentialFile object
  3. Added a file_get_contents function
21.04.2019
  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 changes)
01.05.2019
  1. Added the EXACTLY EQUAL === comparison
  2. Added the --json option to the -v (version) ZAC
04.05.2019
  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
05.05.2019
  1. The display of objects when printed is now much more like PHP
Version 1.7.8 (7 changes)
10.05.2019
  1. Fixed an issue with functions declared on anonymous objects being inaccessible
12.05.2019
  1. Added the list_find_duplicates function
17.05.2019
  1. New compiler optimisations mean that compiled programs run even faster
06.06.2019
  1. Variables are now shared across chunks in the web parser mode
16.06.2019
  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
29.06.2019
  1. Added the ZPEHTMLBuilder object
Version 1.7.9 (14 changes)
02.07.2019
  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
08.07.2019
  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
09.07.2019
  1. A change to the web parser - pages now end with ywp instead of zhtml
  2. The opening tag for web pages is now
10.07.2019
  1. Fixed an issue where some whitespace characters were ignored by the parser (e.g. ASCII 160)
13.07.2019
  1. Performance improvements
14.07.2019
  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 changes)
28.07.2019
  1. Fixed an issue with quotes in quotes when escaping them
30.07.2019
  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
31.07.2019
  1. Replaced the menubar in macOS with the system menu bar for consistency
01.08.2019
  1. Added the tkmenu library to give macOS editors the macOS menu bar instead of the in window version
02.08.2019
  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 changes)
07.08.2019
  1. The is_set method now works on object properties, including object properties containing objects.
  2. Added the write function
25.08.2019
  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
30.08.2019
  1. Added the ZenithParser object
02.09.2019
  1. More changes to the GUI including a new dark mode (only on macOS currently)
13.09.2019
  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
28.09.2019
  1. Fixed a long standing bug that caused objects to not update when a reference was updated when no main function was provided
29.09.2019
  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 changes)
26.10.2019
  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
10.11.2019
  1. Fixed an issue in which quotes were removed from a string if used inside another string
02.12.2019
  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
05.12.2019
  1. Importing is now done with the import keyword and is no longer a function.
Version 1.7.13 (5 changes)
07.12.2019
  1. Minor performance improvements
  2. Fixes made to the way plugins work
  3. MySQL connector plugin now available
22.12.2019
  1. Added create_list to the ZPEUI object
30.12.2019
  1. Added the wake_on_lan function
Version 1.8.1 (16 changes)
01.01.2020
  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
03.01.2020
  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
04.01.2020
  1. Added a new option to the shutdown command that allows a time to be specified from the current time to shutdown at
05.01.2020
  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
06.01.2020
  1. Certain functionalities have been moved to primary native libraries that will offer to be installed on first run
  2. Fixes 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 changes)
06.01.2020
  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
11.01.2020
  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
12.01.2020
  1. The -r and -i modes have been switched. -i is now the interactive interpreter and -r is the runtime
24.01.2020
  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
10.02.2020
  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
15.02.2020
  1. Added the speak function, however, this function is currently experimental and works only on a Mac
Version 1.8.3 (7 changes)
08.03.2020
  1. Fixed an issue that meant that ZPEObject values would sometimes not save correctly when cached.
18.03.2020
  1. Added the list_count_occurrences function
  2. Added the list_count_if function
22.03.2020
  1. Added support for null values in the JSON parser.
24.03.2020
  1. Added the inline documents syntax
25.03.2020
  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 changes)
29.03.2020
  1. Improved the in-line document syntax by supporting variables
02.04.2020
  1. Changed the domain for the installer to jamiebalfour.scot
26.04.2020
  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 changes)
27.04.2020
  1. ZENServer now searches for updates automatically when set in the properties file to do so
28.04.2020
  1. Fixed an issue in which object comparison through the _compare method didn't work
10.05.2020
  1. The --client argument is no longer required to specify a ZENSClient, as the -h argument informs the application of this
11.05.2020
  1. Added the file_get_bytes function
  2. Removed the type parameter from the file_get_contents function, making it only read text
20.05.2020
  1. Added the play_audio function which plays an audio stream
23.05.2020
  1. Changed the play_audio function to open_audio_stream which returns a ZPEAudioStream object
Version 1.8.6 (15 changes)
26.05.2020
  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() { } }
02.06.2020
  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
04.06.2020
  1. Added the list_drives function which lists all root drives
06.06.2020
  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
07.06.2020
  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
08.06.2020
  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
09.06.2020
  1. Deprecated the ZENWebServer
  2. Added the get_ip_address function which will return the current system's IP address
10.06.2020
  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 changes)
16.06.2020
  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)
17.06.2020
  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
19.06.2020
  1. Added the ZPECalculator object, which contains an expression compiler used to evaluate an expression
21.06.2020
  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
22.06.2020
  1. Introduction of ZPEKit (pronounced zippy kit) means that the YASSCompiler is not accessible publicly but can be accessed through ZPEKit
06.07.2020
  1. Improved the way in which replacements are done in the graphical editor
10.07.2020
  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 changes)
15.07.2020
  1. Programs compiled with a passcode are now encrypted
  2. Fixed a few bugs that seemed to occur within the GUI mode
18.07.2020
  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
19.07.2020
  1. Added in a simple send> command to the ZENClient that allows the sending of files via the client to the ZENServer
20.07.2020
  1. Fixed an issue and improved performance of the new send> command within the ZENClient and ZENServer
22.07.2020
  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 changes)
24.07.2020
  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
27.07.2020
  1. Added the require keyword as an alternative for import
01.08.2020
  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
02.08.2020
  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
05.08.2020
  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 ZENSClient 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 changes)
06.08.2020
  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
07.08.2020
  1. Added several SSH-like commands ls, cd, pwd and cat to the ZENServer and ZENSClient
  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
08.08.2020
  1. Added the mkdir and rm commands to ZENServer and ZENSClient
  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
09.08.2020
  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
11.08.2020
  1. The -p mode now supports inserting a property value from the command line by leaving out the -v argument
28.08.2020
  1. Added the list_zpe_aliases function
02.09.2020
  1. Added support for ZPEObjects to the JSON parser
04.09.2020
  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 changes)
26.09.2020
  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
01.10.2020
  1. Added infinite parameters to functions
14.10.2020
  1. ZPE now detects headless systems before launching the GUI
21.10.2020
  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. Remove the open_object_from_file alias for the deserialise function
Version 1.8.12 (2 changes)
28.10.2020
  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
Comments

There are no comments on this page.

New comment
Reply
Provide feedback on this page
Comments are sent via email to me.