<div dir="ltr"><div><div><div><div>Hi All,<br><br></div>I am finally glad to announce an initial version of my secret experiment, Lowtalk: <a href="https://github.com/ronsaldo/lowtalk">https://github.com/ronsaldo/lowtalk</a><br></div><div><br></div><div>Lowtalk is a new Smalltalk dialect that generates relocatable binary object code, that can be linked with any C program or used to generate a standalone executable with the C linker. I am designing Lowtalk as a language for video game developing, where performance and multi-threading support is important. The Lowtalk compiler is completely written in Pharo.<br></div><div><br></div><div>The main features of Lowtalk are the following:</div><div>- The compiler is actually a meta circular evaluator, whose features are used for bootstraping the Lowtalk kernel.</div><div>- The Lowtalk object model, including the layout of the objects is defined in the language itself.</div><div>- Direct interface with C. There is an almost 1:1 mapping between the Lowtalk native types and the C types. There is a syntax extension for calling C functions.<br></div><div>-Support for real multi-threading.<br></div><div>- The current object model uses automatic reference counting, which is slow, but makes supporting real multi-threading easier.</div><div>- Immediates are based on the Spur object model.</div><div>- Partial support for generating debugging information in the DWARF standard. It is possible to place breakpoints and get correct stack traces with gdb.<br></div><div><br></div><div>Lowtalk is on the line of my work with Lowcode, and I am planning on making a Lowtalk backend that uses Lowcode. The Lowtalk type system is almost the same as the one that I described at the paper: Lowcode: Extending Pharo with C Types to Improve Performance<br></div></div></div><div><br><div>I will make a video later, and a proper demonstration at ESUG.<br><br></div>Best regards,<br></div>Ronie<br></div>