[zeromq-dev] Common Lisp bindings

Martin Sustrik sustrik at 250bpm.com
Sat Nov 28 10:17:11 CET 2009

Hi Vitaly,

> At Fri, 27 Nov 2009 10:45:04 +0100, Martin Sustrik wrote:
>>> I don't mind to merge it. Do you have any special requirements for
>>> bindings? From what I see, all existing bindings have LGPLv3
>>> license. Anything else?
>> 0MQ project requires that contributions are submitted under MIT license.
> Hmm, I clearly see "Lesser GNU General Public License" in every source
> file in bindings/ :)

Check the contribution policy here:


>> Additionally, the code should comply with the existing project 
>> structure, thus the binding code should go to bindings/clisp directory 
>> and performance tests to perf/clisp directory.
> CLISP is on of Common Lisp realizations (http://clisp.org/). It's
> better to use `cl' instead of `clisp', otherwise people easily get
> confused :)

Sure. It's your call.

>> As for the build process, ./configure stript should get --with-clisp 
>> parameter. If there are any build steps these should be performed during 
>> make.
> I have no any c/c++ plugins for compiler, which should be compiled in
> prior.

Good. That makes the task much simpler.

>> If there are any files to install, these should be installed 
>> during make install.
> This is hard to manage. People may use different compilers with
> different settings for ASDF (online lisp repo): local or system wide,
> directory to place, gpg settings, etc. Also installation via ASDF
> requires interaction with user.
> However, it is possible to do these steps if user specify explicitly,
> what lisp to use, e.g.: --with-lisp=clisp or --with-lisp=sbcl (still
> requires interaction).
> Btw, if user install lisp package via ASDF, it may install all
> required packages for him.

We should make a clear distinction between "make install" and full-blown
package (deb, rpm and alike).

The former is simply moving the files after compilation from the source
tree to the appropriate locations, the latter is a polished product
which allows users to install the product from online repository,
manages dependencies etc.

As far as I understand ASDF is an example of the latter - it's useful,
but out-of-scope for the time being.

What I was asking for was just simple "move files to appropriate
locations" functionality. Is there a standard directory to keep Lisp
files in? /usr/lisp or whatever? If so, just move the appropriate files
there during make install. If there's no such location, it can be
supplied during configure. We are already doing it that way with Ruby

./configure --with-ruby --with-ruby-libdir=/usr/ruby

>> As for the code itself, check whether the clisp API maps 1:1 to other 
>> language bindings in 0MQ/2.0. The point is that with same APIs there's 
>> no need to write documentation for every language binding separately and 
>> that users are able to shift between languages without being required to 
>> learn new API.
> Lisp bindings have some syntactic sugar (a couple of `with-' macros),
> which lisp users usually expects from bindings. Except this sugar, API
> is 1:1.



More information about the zeromq-dev mailing list