[cfe-dev] cling
Argyrios Kyrtzidis
kyrtzidis at apple.com
Wed Jul 27 17:12:53 PDT 2011
On Jul 27, 2011, at 4:12 PM, Axel Naumann wrote:
> Hi Argyrios,
>
> On 07/27/2011 08:31 PM, Argyrios Kyrtzidis wrote:
>> Technically it should be possible to have a static library in llvm
>> bitcode and load that, is it something you guys can consider ?
>
> Implemented. You can now do e.g.
>
> $ cat test.cxx
> #include <stdio.h>
> void HELLO() { printf("HELLO!\n");}
> $ clang -emit-llvm -c test.cxx -o test.bc
> $ cling -ltest.bc
> $ void HELLO();
> $ HELLO()
> HELLO!
>
> It simply uses the llvm::Linker - whatever that understands should now
> be understood by cling.
Nice, that's great!
-Argyrios
>
> Thanks for the suggestion!
>
> Cheers, Axel.
>
>>>
>>>
>>>>
>>>> On Jul 25, 2011, at 15:28, Axel Naumann wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> As we announced before
>>>>> <http://www.llvm.org/devmtg/2010-11/Naumann-Cling.pdf>, we (people from
>>>>> CERN and Fermilab) are working on the C++ interpreter(*) cling
>>>>> <http://cern.ch/cling> that's based on clang and llvm. This is in the
>>>>> context of ROOT <http://root.cern.ch> and CINT
>>>>> <http://root.cern.ch/cint>, our current C++ interpreter.
>>>>>
>>>>> We have gotten to a stage where we believe cling is actually useful: it
>>>>> behaves like a regular interpreter!
>>>>>
>>>>> [cling]$ #include <cmath>
>>>>> [cling]$ double x = std::sin(3.1)
>>>>> (double) 4.158066e-02
>>>>> [cling]$ .L libz
>>>>> [cling]$ #include "zlib.h"
>>>>> [cling]$ zlibVersion()
>>>>> (const char * const) "1.2.3.4"
>>>>>
>>>>> or simply
>>>>>
>>>>> $ echo 'extern "C" const char* zlibVersion();
>>>>> zlibVersion()' | cling -lz
>>>>>
>>>>> (const char * const) "1.2.3.4"
>>>>>
>>>>> and even
>>>>>
>>>>> $ cat t.cxx
>>>>> #include "cling/Interpreter/Interpreter.h"
>>>>> void t() {
>>>>> gCling->processLine("gCling->getVersion()");
>>>>> }
>>>>> $ cling
>>>>> [cling]$ .x t.cxx
>>>>> (const char * const) "$Id: Interpreter.cpp 40322 2011-07-21 14:20:14Z
>>>>> axel $"
>>>>>
>>>>> We would like to know whether it's just us finding this spectacular :-)
>>>>> or whether there is general interest. Our aim is to get it included in
>>>>> the clang repository.
>>>>>
>>>>> For us, this is just the first step; we need to integrate it into the
>>>>> rest of our software wildlife here at CERN, and we need to continue to
>>>>> work on robustness and features, e.g. reloading of code. I.e. I expect
>>>>> we will maintain and continue to develop it for years to come.
>>>>>
>>>>> Here is the code:
>>>>> svn co http://root.cern.ch/svn/root/branches/dev/cling
>>>>>
>>>>> Let us know what you think!
>>>>>
>>>>> Best regards,
>>>>> the cling team (Vassil, Philippe, Paul, Lukasz and Axel).
>>>>>
>>>>> (*) Yes, it's not an interpreter, it's really an incremental compiler
>>>>> with an interactive shell with (eventually) features like automatic
>>>>> library loading and late variable binding. But it smells like an
>>>>> interpreter :-)
>>>>> _______________________________________________
>>>>> cfe-dev mailing list
>>>>> cfe-dev at cs.uiuc.edu
>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>>>>
>>>>
>>>
>>> _______________________________________________
>>> cfe-dev mailing list
>>> cfe-dev at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>>
>>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
More information about the cfe-dev
mailing list