<div dir="ltr">On Mon, Mar 4, 2013 at 5:30 PM, Christian Schafmeister <span dir="ltr"><<a href="mailto:chris.schaf@verizon.net" target="_blank">chris.schaf@verizon.net</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">I've created a new implementation of Common Lisp that has a core written in C++ completely from scratch but hosts the ECL Common Lisp source code.<br>

</blockquote><div><br></div><div style>Sounds like a lot of work.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">


It hosts all of the ECL Common Lisp code in the ecl/src/lsp and ecl/src/clos directories of the ECL source tree.<br>
I do not use any part of the ECL CL->C compiler or the byte code compiler.<br>
I've implemented my own CL interpreter and CL->LLVM-IR->native code compiler.<br></blockquote><div><br></div><div style>I do not understand why you reimplemented the interpreter, but the LLVM thingy looks interesting.</div>

<div style> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">It's purpose is to make possible the seamless interfacing of C++ libraries with Common Lisp code and vice versa.<br>

Within this new implementation it is trivial to interface complex C++ libraries containing classes, virtual functions, overloaded functions etc with Common Lisp code.<br></blockquote><div><br></div><div style>Sorry, but I do not understand this. There are different things in interfacing Common-Lisp with C++, and none of them requires building a new compiler or a LLVM backend.</div>

<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Why - you ask?  I'd be happy to explain over a beer or coffee sometime.<br>


In a nutshell - I want this for my research and prior to my writing it there was no Common Lisp implementation that interfaces seamlessly with C++.<br>
ECL does a great job with "C" but "C++" is a much more complex language to interface with and I have a lot of C++ code that I need to interface with.</blockquote><div><br></div><div style>If you state that ECL cannot interface with C++ I would like to see that statement backed with examples. EQL is one example that interfacing is not impossible and, probably, not that hard once you can write C++ inside Common Lisp code.</div>

<div style><br></div><div style>But most important, the issue of interfacing Common Lisp and C++ consists on many different problems that I do not see how you solve at the same time with the help of LLVM</div><div style>
<br>
</div><div style>1. Integrating the C++ type system and the Common Lisp one</div><div style>2. Being able to call C++ functions from Common Lisp and viceversa</div><div style>3. Integrating C++ and Common Lisp memory management</div>

<div style>4. Possibly automating the generation of wrappers for C++ code.</div><div style>5. Resolving overloading at runtime instead of at compilation time.</div><div style>...</div><div style><br></div><div style>Many issues, some of which are mentioned in SWIG, <a href="http://www.swig.org/Doc1.3/SWIGPlus.html">http://www.swig.org/Doc1.3/SWIGPlus.html</a> but even many of which they (working long in the interface between C++ and dynamic languages) do not have an answer to.</div>

</div><div><br></div><div style>Juanjo</div><div><br></div>-- <br>Instituto de Física Fundamental, CSIC<br>c/ Serrano, 113b, Madrid 28006 (Spain) <br><a href="http://juanjose.garciaripoll.googlepages.com" target="_blank">http://juanjose.garciaripoll.googlepages.com</a>
</div></div>