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

Ben Coman btc at openinworld.com
Sun Sep 17 14:44:15 UTC 2017


On Thu, Aug 31, 2017 at 12:05 AM, Ronie Salgado <roniesalg at gmail.com> 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.
>

This sounds very cool.


>
> 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.
>

Just to clarify, I guess you mean you provide a native machine
code compiler, so a separate C compiler step is not required?

With the right CPU model, would Lowtalk facilitate generating native
microcontroller machine code from Smalltalk code, for devices like...
   https://www.adafruit.com/product/3403
   https://www.adafruit.com/product/3501
which might be interesting to mix with Dennis' work with microcontrollers...

http://forum.world.st/Ann-PharoThings-a-live-programming-IoT-platform-based-on-Pharo-td4964090.html#a4964103



> - 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.
>

How do you rate generating LLVM intermediate representation (IR) ?  How
otherwise do low level optimisations come into your concept?
I couple of articles I found interesting...
  https://idea.popcount.org/2013-07-24-ir-is-better-than-assembly/

https://stackoverflow.com/questions/15150116/translation-to-llvm-ir-directly-or-via-c-clang

cheers -ben



> -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
>
>
P.S. @Eliot, et al...
I found it interesting that several alternate calling conventions are
implemented for LLVM.  Could such a thing be useful to support Smalltalk
better, and be a useful research topic for someone?

http://clang-developers.42468.n3.nabble.com/RFC-Implementing-the-Swift-calling-convention-in-LLVM-and-Clang-td4050248.html
  http://lists.llvm.org/pipermail/llvm-dev/2016-June/101338.html

(although maybe a WebAssembly target might be a better research topic.)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20170917/a144ad71/attachment.html>


More information about the Vm-dev mailing list