<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="font-family: Calibri, Helvetica, sans-serif, serif, EmojiFont;">Thank you guys for your answers !</span><br>
</div>
<div>
<div>
<div style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<span style="font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255); display:inline!important"></span>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
@Dave Thank you for the precisions.<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
 I actually had read this article, and<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
 -Extending the Squeak Virtual Machine by Andrew C. GreenBerg<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
 -Two decade of Smalltalk VM Development by Eliot Miranda , Clement Bera, Elisa Gonzalez Boix, and Dan Ingallls.<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
 But i didn't find much more on how it works. I was looking at it mostly from the transpilation point of vue. I'll have to take a closer look at TMethod/TparseNode/CCodeGenerator !<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
"The Smalltalk to C (or Javascript) capability is not intended to be a general purpose languange. The general purpose language in this case is of course Smalltalk itself, and the slang translator serves as an optimizer to translate the virtual machine (which
 is written primarily in Smalltalk) into C to produce a high performance runtime."<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
Did you mean "which is written primarily in SLANG"? For now I'm taking it as "the slang translator translate Smalltalk code" which feels weird to me.<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
@Eliot<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
"That depends on the architecture you choose."<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
I completely agree, and should have been more precise.<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
I tend to think of a static approach so far. Taking my language, translating it to C, then letting C files be compiled in assembly by a random c compiler (probably GCC). I'd like to be able to express both stand alone program, and libraries.<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
I actually read up on Sista on Clement's blog.<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
I also read an article on LowCode.<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
But as you just read, those approaches aren't really what I aim for !<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
'I don't have time or resources to explore the inessential ;-)'<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
True that ! But I meant more something that poped into your head, without having the time to follow up :p<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
<span style="font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont">'For me C is an implementation language; a portable assembler.'</span><br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
I get this point of vue. But I meant something like what you have to use, because it's important but is annoying. The usual example is memory management (at least in general) which is why we have so much garbage collectors ! In that feeling, Hiding memory management
 in the transpiler would result for example in garbage collection[...]. I was trying to ask what do you have to manage, but bothers you, to see if it's possible to hide it. For example, I think in Slang, you don't bother about memory management, but you do
 require types. I don't know if that's more understandable.<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
Thanks you.<br>
</div>
<div style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">
<br>
</div>
<span style="margin:0px; font-family:Calibri,Helvetica,sans-serif,serif,EmojiFont; background-color:rgb(255,255,255)">Pierre Misse</span></div>
<div dir="ltr">
<div>
<div id="x_appendonsend"></div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>De :</b> Squeak-dev <squeak-dev-bounces@lists.squeakfoundation.org> de la part de Eliot Miranda <eliot.miranda@gmail.com><br>
<b>Envoyé :</b> mardi 2 avril 2019 18:09<br>
<b>À :</b> The general-purpose Squeak developers list<br>
<b>Objet :</b> Re: [squeak-dev] High language to express low level code</font>
<div> </div>
</div>
<div>
<div dir="ltr">
<div dir="ltr">Hi Pierre,</div>
<br>
<div class="x_gmail_quote">
<div dir="ltr" class="x_gmail_attr">On Mon, Apr 1, 2019 at 11:03 PM pierre misse <<a href="mailto:pierre_misse25@msn.com">pierre_misse25@msn.com</a>> wrote:<br>
</div>
<blockquote class="x_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">
<div dir="ltr">
<div style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
Hello,</div>
<div style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
I'm currently trying to create a "high" level language to that aims to express low level concepts through transpilation to C.</div>
<div style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
I have a limited experience building such programs, and thought people who build virtual machines would be the right group of people to ask what they need in low level programing! </div>
<div style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
I've also made some research, and stumbled Slang, on which i found little documentation (probably because i didn't find the right combination of words).</div>
<div style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
So if you have a bit of time to share, i'd love to know:</div>
<div>
<ul>
<li><font color="#000000" face="Calibri, Helvetica, sans-serif">What you kind of concepts you need</font></li></ul>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>That depends pn the architecture you choose.  There are static and dynamic approaches, approaches centered around optimization and JIT com platoon and approaches centered around embedding a domain-specific language (DSL) in a high-level language to allow
 for specific low-level code to be generated.</div>
<div><br>
</div>
<div>I would love for you to direct your attention to Ronie Salgado's work on Lowcode, and Clément Béra's and my work on Sista and Scorch.  Ronie's work is a combination of providing a DSL for communicating with graphics renderers.  This fairs within the extensions
 to the bytecode set Clément and I have designed for aggressive adaptive optimization in the context of a JIT.  Note that Ronie's subset of bytecodes has also shown speedups in a pure interpreter.  We have papers on both systems.</div>
<div> </div>
<blockquote class="x_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">
<div dir="ltr">
<div>
<ul>
<li><font color="#000000" face="Calibri, Helvetica, sans-serif">What's not required, but interesting  </font></li></ul>
</div>
</div>
</blockquote>
<div>I don't have time or resources to explore the inessential ;-) </div>
<blockquote class="x_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">
<div dir="ltr">
<div>
<ul>
<li><font color="#000000" face="Calibri, Helvetica, sans-serif">What you'd wish to hide from C to be taken care of by the transpiler</font></li></ul>
</div>
</div>
</blockquote>
<div>For me C is an implementation language; a portable assembler.  There really isn't any need to hide anything from C.  But the only time I pay attention to C is when I have to debug the system in the C world, which is thankfully rare, or shen the transpolar
 has a bug which manifests as a failure for the C to compiler.  So it's not an issue of hiding or revealing things to C.  It's an issue of C not being a useful context in which to get work done.  It's effectively write-only.</div>
<div> </div>
<div>HTH</div>
<div><br>
</div>
<blockquote class="x_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">
<div dir="ltr">
<div>
<div><font color="#000000" face="Calibri, Helvetica, sans-serif">Thank you in advance.</font></div>
<div><font color="#000000" face="Calibri, Helvetica, sans-serif"><br>
</font></div>
<div><font color="#000000" face="Calibri, Helvetica, sans-serif">Regards, </font></div>
<div><font color="#000000" face="Calibri, Helvetica, sans-serif">Pierre Misse.</font></div>
</div>
</div>
<br>
</blockquote>
</div>
<br clear="all">
<div><br>
</div>
-- <br>
<div dir="ltr" class="x_gmail_signature">
<div dir="ltr">
<div><span style="font-size:small; border-collapse:separate">
<div>_,,,^..^,,,_<br>
</div>
<div>best, Eliot</div>
</span></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>