CLISP Help Wanted

CLISP project founder Bruno Haible was one of the finalists for the 2002 Free Software Award! Note that it said:

"Bruno Haible (known for his work on GNU CLISP)"!

Now it is your chance to win the next Free Software Award!

The CLISP project is looking for excellent C and Lisp hackers who can enhance CLISP and add new features (see development sources).

The prizes for handling the issues listed below:

This reminds me of a joke: after the 1991 Russian coup attempt (whose failure lead to the final downfall of communism), the Communist Party was very unpopular and tried to increase the membership by asking the existing members to recruit new members, with the following incentives:

The CLISP tasks

Entry-level tasks

  1. Add a magic module interfacing to libmagic.
  2. Add a uuid module for manipulation of UUIDs, interfacing to <uuid/uuid.h> on unix and to CoCreateGuid() on windows.
  3. Add a serial module to control serial devices using <termios.h> on unix and SetCommState() on windows.

Segmentation faults

Any hard crash (segmentation fault, bus error etc) is a bug in CLISP. See CLISP bug tracker.

Ongoing tasks

  1. Searching for Common Lisp packages which do not run on CLISP and porting them to CLISP.
  2. Translate CLISP messages into new languages and update the existing translatons.

New features

  1. CLISP has an almost-working multithreading. The only major missing thing is thread-safe hash tables, which is a big issue because they are used internally by CLOS and thus should not be lockable. The current implementation should be replaced with lock-free open-addressing ones The hardest part in this reimplementation is integration with GC because of weak relations. This is a good project for the Google Summer of Code.

  2. CLISP offers a module that interfaces to Matlab but no module that interfaces to Octave - the free replacement to Matlab. This is ideologically intolerable to the GNU party committee (despite the fact that Octave does not offer a C API yet), so you are hereby invited to volunteer to implement the Matlab C API for Octave and then make sure that the CLISP Matlab module works with that new Octave C API.

  3. Add IEEE NaNs and infinities the CLISP floating numbers. This may look like a very "unlispish" feature until you realise how useful they are, e.g., when extending log to 0, which comes useful when calculating odds, see, e.g., clocc/src/cllib/bayes.lisp.

  4. Embed CLISP into your favorite application, e.g., VIM, Firefox, Gnumeric, or OpenOffice. This might require some additional API in CLISP, which we will be happy to add.

  5. native file compilation (e.g., bytecodes → C or LLVM assembly or GCC IR)

  6. native just-in-time compilation (Yann Dauphin added JITC via lightning), more work needed to improve performance.

  7. compilation to JVM (this was thought to be important 10 years ago when the main task of the computer industry was perceived to be speeding up JVM, so we wanted to ride the wave, this might still be useful, but has a rather low priority)

  8. GUI (e.g., wxCL)

  9. SSL bindings (note cl+ssl)

  10. LDAP and gnome-config support in modules/dirkey


  1. Use libtool to produce (lisp.dll on woe32) instead of (lisp.exe on woe32).

  2. Use dlopen (LoadLibrary on woe32) instead of exec (CreateProcess on woe32) to start a linking set in clisp (clisp.exe on woe32). This is related to embeddability.

See also

[CLISP home] [SourceForge Logo] [Support This Project] [Valid XHTML] [Use CSS] [Valid CSS]