TYPO has been completely redesigned from the ground up to make it even better. Compared with the first version of TYPO, the new version uses late static type checking which is done during runtime rather than compilation time. This does add a slight performance penalty compared with untyped data, but it is far more stable than attempting it at compile time since so many functions may return multiple data types.
For example:
declare $i as number = 50 declare j as number = 32 $i = "Test"
This would crash when it gets to setting $i from a number to a string. Previously this check was carried out by the compiler but it wasn't effective in comparison, whereas defining it this way ensures 100% efficiency in comparisons and although late typing often has performance penalties, in comparison to the previous iteration of TYPO so much has been improved that these penalties are actually minuscule.
Another major change to TYPO is that is now always enabled and doesn't need to be set in the ZPE Properties file, and can be used in parallel with untyped YASS code for the first time.
The formalised specification of the language has yet to be updated with this new information but will be sorted at some point over the next few days.
With ZPE and YASS featuring more and more unit testing capabilities, I thought it was time for me to look into adding proper testing methods.
ZPE unit testing will broaden and expand the current situation with unit testing to the point where specific unit testing scripts can be produced separately from any code.
Unit testing, known as zUnit, will feature its own language parser, also built upon the Zenith Parsing Engine, of course. It will use a language different from YASS entirely and will also allow multiple tests to be carried out on code very quickly.
Like when ZPE started out, it will likely begin as a very basic tool for testing but will expand to provide more and more features as time goes on.
As a result of the sweeping new changes brought to unit testing so far, ZPE 1.9.6 is now available much earlier than I had originally planned for. Please also note that this version removes the new record structure as this is under redevelopment.