[Jon Aasenden on fb]
For those that are members of my other groups such as “Delphi Developer” or “Quartex Developer” know that I have been active in the object pascal community for decades. My main focus has always been Delphi, but this is about to change.
Moving Quartex Pascal to Lazarus
As you perhaps know I have been working on my own development suite targeting HTML5, JavaScript and WASM called Quartex Pascal. Unlike pas2js which comes with freepascal, our commercial product is based on DWScript. In short I use DWScript to parse, tokenize and build an AST (abstract symbol table), and then generate code from that.
This is not as simple as it might sound since you ultimately need an IDE that integrates extremely close with DWScript, and likewise you need a large and mature RTL that you can write HTML5 / node.js applications with.
A Norwegian company was formed around Quartex Pascal with an investor before xmas (Quartex AS), and I now work full time on this. To save money on licensing fees my business partner has been using Freepascal and Lazarus while I have been using Delphi.
I wanted to use FPC myself for Quartex Pascal in the past (for cross compilation benefits), but there were some problems preventing me from using the latest DWScript codebase (something about generics and low-level stack issues, I dont know the details, Eric Grange reported this to the FPC team ages ago).
To make a long story short, my business partner managed to code around the problem. We actually dont run DWScript code, we just use the compiler part - and as such he was able to get our compiler running on Windows, Linux and MacOS. Both ARM and x86 architectures. This changes our demographic substancially.
The targets we aim to deliver for is so far:
Microsoft Windows (x86)
Apple MacOS (x86, ARM)
Ubuntu Linux (x86, ARM)
Single board computers with Debian based Linux, suitable for education and IoT
Raspberry Pi 4 and 5 (ARM)
ODroid N2 / N2+ (ARM)
Rock Pi 5b (ARM)
There are also alternative targets that might be possible to target, we will have to see if supporting these represents any problems first. Browser integration being the primary concern (e.g sourcemap support, debug protocols, node.js or deno availability):
Haiku OS (x86)
React OS (x86)
And finally some experimental targets that could be fun, again only if it doesn’t represent an effort:
Aros (x86)
Morphps (PPC)
OS 4 (PPC)
Amiga OS 3.x (68k, V4SA fpga, emulation)
Note: These experimental targets will only ever have compiler builds. The LCL for these platforms is severily limited, mostly by the novel and esoteric UI libraries these operating systems work with. They also lack modern browsers (barely webkit HTML4) rendering the practicality of a “web development toolchain” such as Quartex Pascal somewhat pointless. Memory requirements is likewise a factor.
Quartex Pascal
Quartex Pascal is very different from pas2js in that it’s tailor made for large-scale web applications. You can visually build mobile applications, websites and even web desktop systems - which in turn will form the basis of an entire NAS ecosystems. You likewise have node.js / deno support, and an RTL that has been hand sculpted and evolved over 10 years (I also wrote Smart Mobile Studio back in 2010 so I have some experience in this type of technology).
Special attention has been given to wrapping existing JS frameworks, so that you can drag & drop controls like they were stock Quartex Pascal widgets (TCustomControl is called TQTXWidget in our RTL). We have also spent a lot of time making things like package-support as easy as possible, as well as registering new components (which is done via attributes).
To give you an idea of speed: I write a simple test that populates a TListBox and checks how many it can add in 20 seconds. TMS’s framework managed around 1000 items, the old Smart Pascal RTL managed around 200 (very slow). Quartex Pascal? 20.000 items (!). This is because the RTL was especially written to work with the DOM, using as much as possible of the code that we know JSVM JIT compiles and excels at.
FPC at last
Well, just wanted to share the good news! I will without a doubt adapt most of my code libraries, both commercial products and open-source libraries, to work with freepascal and lazarus.
Cheers!
Jon Aasenden