[Vm-dev] [ANN] Lowtalk, a new Smalltalk dialect that could eventually replace Slang

Ronie Salgado roniesalg at gmail.com
Tue Sep 5 22:35:57 UTC 2017

Hello Jimmie,

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.

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.

What do you believe the best mailing list to list ask questions at some
> point in the future?

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.

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:
- standalone executables for embedding and soft realtime (videogames).
- 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.

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:

Structure named: #LinkedListNode slots: {
 #next => (LinkedListNode pointer).
 #value => (Void pointer)

Best regards,

2017-09-05 17:02 GMT+02:00 Jimmie <jlhouchin at gmail.com>:

> Hello Ronie,
> I think this looks very interesting. I just downloaded your paper to read.
> I look forward to seeing the video of your ESUG demonstration.
> What do you believe the best mailing list to list ask questions at some
> point in the future?
> Thanks again for your work on this interesting project.
> Jimmie
> On 08/30/2017 11:05 AM, Ronie Salgado wrote:
>> Hi All,
>> I am finally glad to announce an initial version of my secret experiment,
>> Lowtalk: https://github.com/ronsaldo/lowtalk
>> 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.
>> The main features of Lowtalk are the following:
>> - The compiler is actually a meta circular evaluator, whose features are
>> used for bootstraping the Lowtalk kernel.
>> - The Lowtalk object model, including the layout of the objects is
>> defined in the language itself.
>> - 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.
>> -Support for real multi-threading.
>> - The current object model uses automatic reference counting, which is
>> slow, but makes supporting real multi-threading easier.
>> - Immediates are based on the Spur object model.
>> - Partial support for generating debugging information in the DWARF
>> standard. It is possible to place breakpoints and get correct stack traces
>> with gdb.
>> 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
>> I will make a video later, and a proper demonstration at ESUG.
>> Best regards,
>> Ronie
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20170906/bd314e18/attachment.html>

More information about the Vm-dev mailing list