Jamie Balfour

Welcome to my personal website.

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

Jamie Balfour'sPersonal blog

Jamie Balfour'sPersonal blog

I've finally brought JSON support to ZPE. 

ZPE 1.5.0 will bring JSON support and will also focus on adding XML parsing tools to the mix. Currently version 1.5.0 uses the GSON library to add JSON parsing capabilities but I do intend to replace it with my own JSON parsing application at some point, since GSON brings the size of ZPE up to 500KB from just 300KB and I can't justify this. However, the change will only be a back end change when it comes and all applications will perform the same way if they are written to use the JSON functions currently provided. Consider GSON a placeholder.

Here's a small sample that takes the JSON from my own http://code.jamiebalfour.scot/balfblog/info.json file that I use to share updates to BalfBlog:

ZenLang
$json_string = '[ {"name" : "BalfBlog", "version" : "2.2.1", "version_name" : "Klebb", "last_update" : "12-2016" } ]'
$map = json_to_map($json_string)
$name = $map.get("name")
print($name)

If we now look at what is output we should get the word BalfBlog. 

gson
json
parse
parsing
engine
zenith
zpe

ZPE 1.5.0 is finally just about ready. The main changes in this version focus on backend (compiler) side things. In particular, the way in which the return function is compiled, evaluated and allocated a byte code has completely changed. For a start, it is no longer considered as a function but as an actual language token. This means that it is also allocated a byte code when translated to byte codes.

As well as this, recursion has been made more efficient than before and the call stack has been expanded. Overall, this is the best release of ZPE to date. I hope you find it useful too.

Unfortunately this update will be delayed due to circumstances to do with my job. I expect to release this version once things calm down again, maybe into the new year.
zpe
engine
zenith
update
november

In the next few weeks I'm going to begin work on ZPE again. I'm focusing in on improvements to the actual compiler and I am looking at new things like function inlining and so on to improve performance. I'm also going to be quite daring and look at parameter optimisation for static parameters, since I do believe this can be achieved in ZenLang.

The next version will also add even more functionality in other areas such as the GUI mode.

Also, currently recursion is not working perfectly due to changes made to make it more efficient. If you bare with me I will be working on this at some point in the near future again.

zpe
engine
zenith
work
restart

I pay quite a bit to host all of my websites, ranging from jamiebalfour.co.uk (the original), to jamiebalfour.me (an addon domain), jamiebalfour.scot (my personal website, now with HTTPS), clickit.education and finally, zenlang.net.

Since version 1.5 will rename the syntax of ZPE, zenlang will no longer be the valid name. On top of this, the website has received much less attention from myself and has been left a bit of a mess. As a result, zenlang.net will no longer remain online from next year when it goes up for renewal. I will leave it as a subdomain (which is always available too at http://zenlang.jamiebalfour.scot.) for the future and will probably work on it for a while before I relaunch it with the new name.

 

zenlang
.net
future
website

ZPE production has currently stopped as I have decided to focus on my other projects a bit more at the moment. These projects currently include BalfBlog and my PhD. As a result ZPE production has currently been halted. This is a decision that has been made since ZPE is currently pretty stable and is already very impressive. 

ZPE was never meant to be just another programming language, simply a little project I've been working on, and one that's given me a great insight into building a compiler and a language, as well as given me a lot of fun and something I can actually use to do some tasks.

The primary focus for me now is on the improvement of BalfBlog which is currently pretty stable too. BalfBlog needs new features added to it to make it more powerful and useful, but as I say it's pretty much done now anyway. 

Whilst I'm posting this in August (wow, August already), the July update of ZPE, known as ZPE 1.4.3, is by far the biggest change to ZPE since 1.4.0. Although a lot of the changes described here were marked as being under version 1.4.2, they were only available as part of the experimental mode during that version.

This update is a huge update to the RMM parser and replaces it (largely) with the LAMP parser - a logic and mathematical parser. 

This update makes it more efficient as both logic and maths are processed together. ZPE 1.4.3 also reduces the size of compiled programs and improves the efficiency of the code when interpreted. Another major change that was brought in was the unification of logical symbols - the word "AND" is the exact same now as "&&". This will again improve the efficiency of the interpreter and reduces the number of checks done there. Logical and mathematical expressions are now also assessed (not evaluated) as to being a logical or mathematical expression at compile time thus reducing the time spent assessing at runtime. 

1.4.3.10 fixes structures as promised and unifies them with the object type with a bit more flexibility. Global variables and constants can now be assigned to be public, private and friendly within scripts, giving more power over their scope. 

1.4.3 also drops the XOR from the logic parsing, but adds the xor function to the built-in functionalities. 1.4.3.10 also made a change for associative arrays since they no longer use the = sign to represent an association but the => symbol. I had many people saying they liked this in PHP when I did my feedback request in June and I had been planning to implement this since version 1.3.4 but it was still in the backburner. At last, I can finally say this is done (whilst this will lead to larger programs since there is one extra character, compiled programs will still be the same in size).

I deem this to be the best and most complete version of ZPE: 1.4.3 officially brings an end to my monthly update system (which has largely been kept to, but has occasionally fallen behind). 

The next version of ZPE aims to bring in enumeration, although it is yet to be decided whether or not this is fully necessary. 

I'm happy to announce after the latest feedback on ZPE, that you can now use the C style increment on a for loop:

ZenLang
for($i = 0; $i < 10; $i++)
    print($i)
end for

Of course, since ZPE has been designed for ease of use, users can still use the original style of incrementing or decrementing in for loops:

ZenLang
for($i = 0, $i < 10, 1)
    print($i)
end for
zenlang
zpe
zengin
for
loops
Powered by DASH 2.0