Hey folks,
As some of you know, I’m incorporating a new compiler into Clasp. It’s called Cleavir and it is being written by Robert Strandh, a brilliant computer science professor at the University of Bordeaux . Robert’s working at his own pace and he’s got a lot of irons in the fire just like I do. He’s working on type inference for Cleavir and on source code tracking.
I need these things to make Cleavir/Clasp generate fast code and to enable debugging.
The LLVM library that Clasp is built on provides an API to add DWARF debugging code and I’ve exposed it and used it in Clasp’s bootstrapping compiler. But I need Robert to add support for source code tracking to Cleavir before I can hook it up in Clasp. Once it’s hooked in then you could debug Clasp generated code alongside C++ code using the gdb or lldb debuggers.
What I don’t have is any way to read DWARF debugging information. I’ve looked at the format and it looks pretty complicated but ultimately I’d like Clasp to read the DWARF data from executables and give backtraces and access to lexical/dynamic variables within Clasp.
Are there any volunteers to learn how to read DWARF debugging information or use libdwarf or something like it to read DWARF?
Best,
.Chris.
What kind of contribution policy should Clasp have? What are good models for this? I’m a really friendly, easy-going guy. I’m a professor and acknowledging others peoples effort is something that is extremely important to me.
I’d love to have help writing documentation if anyone is up for that. I’ve purposefully copied a lot of other API’s so there isn’t a lot of completely new documentation that needs to be written - we can borrow and slightly modify a lot of other peoples documentation.
clbind for instance is based on “luabind” (http://www.rasterbar.com/products/luabind.html) and the documentation here (http://www.rasterbar.com/products/luabind/docs.html) is very close to what you need to know to use clbind. I even have permission from one of the authors of luabind to copy and modify their documentation.
Much of the Embedded Common Lisp (ECL) documentation applies to Clasp. The clang AST and ASTMatcher documentation can be quickly translated to describe how to use the libraries within Clasp. Beyond that, Clasp is Common Lisp. Any differences between how Clasp operates and what the Common Lisp Hyperspec says are considered bugs in Clasp and need to be fixed.
Up until now Clasp has been a one man (me) project. I’ve borrowed a lot of code from Embedded Common Lisp (ECL) and it has an LGPL license so Clasp will keep the LGPL license although it may move to the 2.1 or 3.0 version of that license once I figure out what they mean.
I’d love to have people contribute code to Clasp - I want to be as fast or faster than anything out there while at the same time being easy to interoperate with C++. I’d love to have people expose C++ libraries to Clasp - it’s pretty easy and that will add a lot of value to Clasp really quickly. I’ll provide programming support to do that.
I want this because I need Clasp to support the Chemistry/Molecular design work that I need for my research. We want to develop new medicines, new catalysts and new molecular devices to make peoples lives better. But Clasp is a general Common Lisp system and if other people are invested in Clasp for other applications then it will only get better.
I have been pretty tied up the last couple of months trying to make Clasp faster - that has been my #1 priority. I’ve incorporated Robert Strandh’s Cleavir compiler and I’ve been taking more and more advantage of the optimizations and especially inlining capabilities that it provides. Once I get over the hump of inlining some basic integer arithmetic operations like + - and comparisons Clasp should speed up significantly. This should take me a few more weeks.
Then I’ll get to work on adding more capabilities to clbind like exposing accessors for instance variables to Common Lisp.
I also have a talk to give at Google in California and a talk in New York to give on Clasp in early August and I need to put some chemistry demos together for that.
Best,
.Chris.
Disclaimer: I am not a lawyer. Nothing I say is meant as legal advice. Ask a lawyer if you need legal advice. Et cetera, ad absurdum et ad nauseum.
Yes, figure out what they mean! Again, you have been a one man project. When others start to contribute, that makes one+. I know a lot of people with small projects don't think much about these issues, but it does make sense even when starting out. I'm planning on keeping my code separate for a while anyway. You are in an enviable situation, Chris, no one ever WANTS to help me :)
Make sure you have a reason for switching GPL versions--there really can be a reason depending on your ethical position. Here is a handy compatibility chart:
https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility
I tried reading the GPL/LGPL 3 when I was thinking about converting , then pick ed up a phone to call a lawyer to see how much he would charge to read it back to me in English . GPL 2.1 is much more readable, IMHO. Furthermore, t his is part of the difference:
https://en.wikipedia.org/wiki/Tivoization
Stallman has a point, but so does Torvalds.
On Wed, Jun 24, 2015 at 4:33 AM, Christian Schafmeister < chris.schaf@verizon.net> wrote:
Up until now Clasp has been a one man (me) project. I’ve borrowed a lot of code from Embedded Common Lisp (ECL) and it has an LGPL license so Clasp will keep the LGPL license although it may move to the 2.1 or 3.0 version of that license once I figure out what they mean.