October flew by in a hurry. While expanding the Abra support library AbraLib we found cause for a few minor changes to the Abra language to make it easier to use. In addition AbraLib was cleaned up and some initial best practices/patterns were established.

The interpreter was further expanded to handle state variables correctly, and an initial Qubic Dispatcher was created that can dispatch event data between outside data sources and internal Qubic entities represented by Abra functions. Our next step will be a plug-in system that allows us to plug in any type of data source as needed.

Another expansion to the interpreter is a first version of the Verilog source code generator that will be used to generate code for FPGAs. The generated code is nowhere near to what it needs to be yet, but now that we have a starting point that is easily modifiable means we’ll be making quick progress once we start testing against actual FPGAs.

AbraLib was also expanded further. First we added the missing integer division function. Then a set of preliminary fixed point and floating point arithmetic functions. The floating point functions, in particular, highlight the versatility of Abra. The code is very general, yet you can tailor the size of the floating point types exactly to your needs in a way that is unmatched by any other language. The size of both the mantissa and the exponent can be specified separately, independent from each other. Here are a few example floating point types from AbraLib:

type TinyFloat {

mantissa [Tiny] // +/- 9,841

exponent [Tiny] // +/- 3^9,841

}

type Float {

mantissa [Int] // +/- 3,812,798,742,493

exponent [Tiny] // +/- 3^9,841

}

type HugeFloat {

mantissa [Int2] // +/- 29,074,868,501,520,029,845,195,084

exponent [Tiny2] // +/- 3^193,710,244

}

The importance of our community

Our community got involved even further during this month. Ben75 kept updating his IntelliJ syntax highlighter to match our syntax changes and also built out its functionality with things like renaming entities and jumping to entity definitions/usages. He even went as far as to highlight unused import statements. He is doing all this in his spare time just for the fun of it. He also turned out to be a great sounding board for any ideas that we came up with for improvements to the language and even suggested a few of his own.

Early this month we posted a challenge to the community in the #qubic channel on Discord to help us out in building LLVM JIT-compilation into the interpreter. Our well-known friend MicroHash of Qubic-Lite fame jumped on that challenge and managed to come up with working JIT-compilation in record time!

This highlighted again his ability to get things done quickly and well. The quality of his code was superb, and the amount of input he needed from our side to get things done was ridiculously minimal. This added to our resolve to try and get him on board. We are happy to report that as of November 1st MicroHash has joined the Qubic team!

These are just 2 of our great community members. We know you are all rearing to go and play with Abra to see what is possible. We will probably put out a few more challenges in the near future where you can help shape the direction of the new programming language for the Internet of Things. To help with that we are finalizing our documentation.

Abra documentation

We updated and expanded our series about the Qubic computation model that was under development even more. We’re currently working on the 6th part in a series of blog posts that will be released as soon it is self-consistent enough. Currently we have the following parts:

Part 1: Abra: a functional dataflow language

Part 2: Abra programming language basic entities

Part 3: Abra functions and expressions

Part 4: Abra’s basic operations

Part 5: Putting it all together through examples

Part 6: The Qubic Dispatcher

We aim to release this documentation in conjunction with a stable version of the Abra interpreter. Be assured we are as gung-ho to get you all involved as you are yourselves. Thank you for your patience in this. We know it has been a long process but the results will definitely be worth the wait!