On Thu, 9 Jan 2020 at 12:00, Ronie Salgado <roniesalg@gmail.com> wrote:
Hi All,
I am finally announcing an initial release of my new experimental low-level programming language which I am calling Sysmel (For SYStem MEtaprogramming Language).
GitHub Page: https://github.com/ronsaldo/sysmel Short native game demo: https://www.youtube.com/watch?v=tRoPMbPvqH0
Sysmel is designed to be a flexible language, and a flexible compiler front-end. The support for garbage collection in Sysmel is an optional feature by design, and the support for dynamic objects and dynamic message lookup it is also optional. If garbage collection is disabled, the code written in Sysmel is mostly equivalent to C/C++ code (only single inheritance is supported for now), but with a hybrid syntax between Smalltalk and C++.
For the final code generation I am using my custom SSA intermediate representation (the same one that I used in Lowtalk, and in) which it is currently tested with the following two backends: - LLVM textual IR backend. This is used for generating native object files by reusing the LLVM infrastructure. This backend also supports emitting DWARF debugging information so the resulting programs can be debugged with gdb. - Spir-V backend, for generating shaders for Vulkan and executing them in the GPU.
I am also re-implementing my previous experiment for converting Pharo block closures into shaders by reusing the Sysmel intermediate level AST, and its type inference machinery.
Side note, for academics needing interesting final projects for students, one would be have this infrastructure for Pharo blocks generate/load code for the Programmable Real-time Units on a Beaglebone - useful for a dynamically programmable hard-real-time system for robotics. https://www.ti.com/lit/ug/tidu461/tidu461.pdf https://www.youtube.com/watch?v=B1DssoXzUXw https://www.youtube.com/results?search_query=beagleboard+pru cheers -ben