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.
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)