<div dir="ltr">Hello Jimmie,<div><br></div><div>On ESUG I only presented it for the innovation award. There is no scientific paper on Lowtalk itself yet, because most of the work on this front end is recently. I am probably submitting.</div><div><br></div><div>There is still the possibility on changing the syntax and some of mechanism that are used in Lowtalk, Currently I am showing what is possible to do.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><span style="font-size:12.800000190734863px">What do you believe the best mailing list to list ask questions at some point in the future?</span></blockquote><div> </div><div>This is a good question. Currently I do not know. This is an early work, and there is still a lot more to do. We now have to discuss about how to proceed. I have to discuss properly with Eliot about how to keep proceeding. I am reusing some of his techniques for implementing some parts such as the stack to context mapping, and immediates objects.</div><div><br></div><div>Lowtalk is currently Pharo only, and it is completely standalone from the OpenSmalltalk VM. However, I am going to make a backend for Lowtalk that uses Lowcode to be able to use it inside the current image environment. Both use cases are interesting:</div><div>- standalone executables for embedding and soft realtime (videogames).</div><div>- keeping the current VM and reusing the in-image environment allows to use the full power of the Pharo/Squeak environment. In this case, Lowtalk can be used for getting a performance boost in numerical intensive software loops (e.g: matrix multiplication, typically an O(n^3) algorithm), without having to resort to the FFI for calling externally compiled C code.</div><div><br></div><div>I want to use Lowtalk in Woden 2 exactly for the second use case. Currently in Woden 2 I am using the language described in the Lowcode paper. Because the type system introduces dependencies on the compilation order, it does not behave well with Monticello which I had to patch in Woden 2. With Lowtalk I am solving that problem by using standard text files, and multiple semantic analysis passes over the AST to define circular types lazily. for example:</div><div><br></div><div>Structure named: #LinkedListNode slots: {</div><div> #next => (LinkedListNode pointer).</div><div> #value => (Void pointer)</div><div>}.</div><div><br></div><div>Best regards,</div><div>Ronie</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2017-09-05 17:02 GMT+02:00 Jimmie <span dir="ltr"><<a href="mailto:jlhouchin@gmail.com" target="_blank">jlhouchin@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Hello Ronie,<br>
<br>
I think this looks very interesting. I just downloaded your paper to read. I look forward to seeing the video of your ESUG demonstration.<br>
<br>
What do you believe the best mailing list to list ask questions at some point in the future?<br>
<br>
Thanks again for your work on this interesting project.<span class="HOEnZb"><font color="#888888"><br>
<br>
Jimmie</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
<br>
<br>
On 08/30/2017 11:05 AM, Ronie Salgado wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi All,<br>
<br>
I am finally glad to announce an initial version of my secret experiment, Lowtalk: <a href="https://github.com/ronsaldo/lowtalk" rel="noreferrer" target="_blank">https://github.com/ronsaldo/lo<wbr>wtalk</a><br>
<br>
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>
<br>
The main features of Lowtalk are the following:<br>
- The compiler is actually a meta circular evaluator, whose features are used for bootstraping the Lowtalk kernel.<br>
- The Lowtalk object model, including the layout of the objects is defined in the language itself.<br>
- 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>
-Support for real multi-threading.<br>
- The current object model uses automatic reference counting, which is slow, but makes supporting real multi-threading easier.<br>
- Immediates are based on the Spur object model.<br>
- Partial support for generating debugging information in the DWARF standard. It is possible to place breakpoints and get correct stack traces with gdb.<br>
<br>
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>
<br>
I will make a video later, and a proper demonstration at ESUG.<br>
<br>
Best regards,<br>
Ronie<br>
</blockquote>
<br>
</div></div></blockquote></div><br></div>