Nice work! Doru
> On Jan 9, 2020, at 4:59 AM, Ronie Salgado <ronies...@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. > > One of the objectives of Sysmel is to support the full Smalltalk object model > without a VM and with real multi-threading support. So far message lookup is > already implemented, but there is still many basic primitives missing, and > the implementation of a proper GC that allows implementing #allInstances and > #become: . As a quick workaround, currently only the Boehm conservative GC is > supported for having an initially working environment. > > In the near future, Woden Engine will adopt Sysmel at least as its shading > language for programming the GPU. In a farther future, a higher performance > version of the Woden Engine will be made by using Sysmel, mostly because it > seems to be much easier to support real multi-threading in Sysmel by making a > completely new system. > > 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. The current version of this new Block -> to Shader > infrastructure can only perform basic Map and Reduce operations with blocks > that do not define local variables (they will be supported in a future > version) in linear arrays. > > Best regards, > Ronie -- feenk.com "Problem solving should be focused on describing the problem in a way that makes the solution obvious."