Introduction CL-Smoke provides CLOS bindings for the Qt and KDE libraries.
Related CommonQt (No CLOS, no startup overhead) Lisp-CFFI-Qt4 (dead)
Limitations Ownership transfer to / from C++ of non QObject objects is seldom known to cl-smoke. E.g.: cl-smoke might delete an instance even though it is still needed by C++. (One that is known is QUndoStack::push().) Limited conversions to and from C++. You will get an NO-APPLICABLE-CXX-METHOD error when a Lisp to C++ conversion is missing and a pointer will be returned when there is no C++ to Lisp conversion. 6 seconds startup time Using a core image it is around 1 second. (see ) (for qt.examples) on a Pentium M 1.7GHz. Needs to be recompiled when the Smoke library is updated. Could be faster
Performance Method calling is near 3000 times slower than native C++. The overhead is mainly in the overload resolution and to/from foreign object translation. Some measurements by :cl-smoke.benchmark are in benchmark.pdf.
Installation
Dependencies Smoke2 bindings from svn. The new smokegenerator is needed (developed by Arno Rehn for the GSOC 09). Qt (development package) CMake 2.6 a C++ compiler (GCC) alexandria bordeaux-threads cffi closer-mop trivial-garbage
Supported Platforms
Working SBCL on Linux x86 (and x86_64) Clozure CL on Linux x86.
Not Working CMUCL CLISP
Installation You need to checkout the darcs repositories: cd SOME_DIR for r in smoke qt.core qt.gui qt.network qt.test qt.tests qt.examples qt.uitools qt.webkit qt.phonon; do darcs get "http://tobias.rautenkranz.ch/lisp/cl-smoke/$r" done There are also the following repositories: qt.svg qt.dbus kde.core kde.ui kde.tests kde.examples Build and install the :smoke and :qt.core C wrapper libraries with: cmake ./ && make && sudo make install in the smoke/ and qt/ directories. When you have symlinked the .asd system files, you should be able to load the systems. The system name has a :cl-smoke. prefix. e.g.: (asdf:oos 'asdf:load-op :cl-smoke.qt.examples)