<div dir="ltr">Hi All,<div class="gmail_extra"><br><div class="gmail_quote">On Mon, Sep 15, 2014 at 6:01 AM, Thierry Goubier <span dir="ltr">&lt;<a href="mailto:thierry.goubier@gmail.com" target="_blank">thierry.goubier@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span class="">2014-09-15 14:39 GMT+02:00 Clément Bera <span dir="ltr">&lt;<a href="mailto:bera.clement@gmail.com" target="_blank">bera.clement@gmail.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello,<div><br></div><div>Note that slang is a subset of smalltalk. The Slang compiler does not allow to compile smalltalk to C. It allows to compile a smalltalk with restricted message sends and classes to C.<br></div></div></blockquote><div><br></div></span><div>Yes, I am aware of that. I remember that from the very beginnings of Squeak.<br><br></div><div>Wasn&#39;t Smalltalk/X the one which had a more complete version of that C translation? I did an internship in a French company who had a Smalltalk to C translator done for them a long time ago.<br></div><span class=""><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div class="gmail_extra"><br><div class="gmail_quote"><span>2014-09-15 13:28 GMT+02:00 Thierry Goubier <span dir="ltr">&lt;<a href="mailto:thierry.goubier@gmail.com" target="_blank">thierry.goubier@gmail.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div>Hi Phil,<br><br></div>thanks for the update on Slang to C. Allways significant to have that.</div></div></div></div></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><br></div>Two open questions:<br><br></div>- would a slang to x86 asm via NativeBoost be doable / a nice target?<br></div></div></blockquote><div><br></div></span><div>Yes it would be interesting. However, by having a Slang to C compiler, we&#39;re platform-independent, we can compile the C code to x86, x86_64 and ARM quite easily (some part of the VM are already processor dependent, but not so much). Targeting direct machine code implies evolving the Slang compiler for each new assembly code we support. It sounds like a lot of engineering work compared to our resources and the gain.</div></div></div></div></div></blockquote><div><br></div></span><div>It would allow JIT-type compilation experiments than a Slang-to-C chain isn&#39;t designed for :) With a lot more work doing the various NB ports, of course.<br></div><span class=""><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div class="gmail_extra"><div class="gmail_quote"><span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><br></div>- would targetting LLVM-IR be of interest?<br><div><div><div><div><div><div><div class="gmail_extra"><br></div></div></div></div></div></div></div></div></blockquote></span><div>If you compile the C code with Clang instead of gcc, which starts to be the case because of the lack of support for gcc in the latest Mac OS X, you are already using LLVM IR because Clang uses it. As the VM use the GNU C extensions to improve performance, I do not think that targeting directly the LLVM IR would greatly improve performance. So it sounds like quite some engineering work for no gain.</div></div></div></div></div></blockquote><div><br></div></span><div>I would not suggest replacing C by LLVM-IR for VM work, in part because LLVM-IR is not what I would call a readable source code format... But I do know that even when doing C to C rewritting for embedded compilation, there is some low-level code that you can&#39;t write in C.<br></div></div></div></div></blockquote><div><br></div><div>I find this whole discussion depressing.  It seems people would rather put their energy in chasing quick fixes or other technologies instead of contributing to the work that is being done in the existing VM.  People discuss using LLVM as if the code generation capabilities inside Cog were somehow poor or have no chance of competing.  Spur is around twice as fast as the current memory manager, has much better support for the FFI.  Clément and I, now with help from Ronie, are making excellent progress towards an adaptive optimizer/speculative inliner that will give us similar performance to V8 (the Google JavaScript VM, lead by Lars Bak, who implemented the HotSpot VM (Smalltalk and Java)) et al.  We are trying to get person-power for a high-quality FFI and have a prototype for a non-blocking VM.  When we succeed C won&#39;t be any better and so it won&#39;t be an interesting target.  One will be able to program entirely in Smalltalk and get excellent performance.  But we need effort.  Collaboration.</div><div><br></div><div>Personally I feel so discouraged when people talk about using LLVM or libffi or whatever instead of having the courage and energy to make our system world-class.  I have the confidence in our abilities to compete with the best and am saddened that people in the community don&#39;t value the technology we already have and can&#39;t show faith in our abilities to improve it further.  Show some confidence and express support and above all get involved.  </div><div><br></div><div><a href="http://www.mirandabanda.org/cogblog/collaborators/">Collaborators</a></div><div><a href="http://www.mirandabanda.org/cogblog/cog-projects/">Cog Projects</a></div><div><a href="https://www.youtube.com/watch?v=k0nBNS1aHZ4&amp;index=49&amp;list=PLJ5nSnWzQXi_6yyRLsMMBqG8YlwfhvB0X">Spur 1/3</a>  <a href="http://www.slideshare.net/esug/spur-a-new-object-representation-for-cog">Spur, a new object representa...</a></div><div><a href="https://www.youtube.com/watch?v=X4E_FoLysJg&amp;list=PLJ5nSnWzQXi_6yyRLsMMBqG8YlwfhvB0X&amp;index=76">Sista: Improving Cog&#39;s JIT performance 1/2</a> <a href="http://www.slideshare.net/esug/sista-talkesug2">Sista: Improving Cog’s JIT pe</a>..</div><div><a href="http://www.slideshare.net/esug/03-lowcodeslides">Lowcode: Redoing NativeBoost ...</a>  </div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div class="gmail_extra"><div class="gmail_quote"><div>However, I think Ronie was interested in doing such work. If he succeeds and reports performance improvement, then we can consider using his compiler to compile the VM.</div></div></div></div></div></blockquote><div><br></div></span><div>Keep us posted!<span class="HOEnZb"><font color="#888888"><br></font></span></div><span class="HOEnZb"><font color="#888888"><div><br></div><div>Thierry<br></div></font></span></div></div></div></blockquote></div><div><br></div>-- <br>in hope,<div>Eliot</div>
</div></div>