phonon & :arg0
Annotate for file introduction.xml
2009-04-05 tobias 1 <?xml version="1.0"?>
17:58:25 ' 2 <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
' 3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
' 4 <chapter id="introduction">
' 5 <title>Introduction</title>
' 6 <para>
' 7 CL-Smoke provides CLOS bindings for the Qt and KDE libraries.
' 8 </para>
' 9 <section><title>Related</title>
' 10 <itemizedlist>
' 11 <listitem><para><ulink url="http://common-lisp.net/project/commonqt/">
' 12 CommonQt</ulink> (No CLOS, no startup overhead)</para></listitem>
' 13 <listitem><para><ulink url="http://sourceforge.net/projects/lisp-cffi-qt4">
' 14 Lisp-CFFI-Qt4</ulink> (dead)</para></listitem>
' 15 </itemizedlist>
' 16 </section>
2009-07-06 tobias 17 <section id="limitations"><title>Limitations</title>
2009-04-05 tobias 18 <itemizedlist>
2009-06-04 tobias 19 <listitem><para>Ownership transfer to / from C++ of non QObject objects is seldom known to cl-smoke.
21:20:49 ' 20 E.g.: cl-smoke might delete an instance even though it is still needed by C++.
' 21 (One that is known is <ulink url="http://doc.qtsoftware.com/4.5-snapshot/qundostack.html#push">QUndoStack::push()</ulink>.)
' 22 </para></listitem>
' 23 <listitem><para>Limited conversions to and from C++. You will get an NO-APPLICABLE-CXX-METHOD error
' 24 when a Lisp to C++ conversion is missing and a pointer will be returned when there is no C++ to Lisp
' 25 conversion.
' 26 </para></listitem>
2010-01-10 tobias 27 <listitem><para>10 seconds startup time<footnote>
2009-05-14 tobias 28 <para>
2009-07-22 tobias 29 Using a core image it is around 1 second.
2009-05-14 tobias 30 (see <xref linkend="core-image"/>)
12:56:16 ' 31 </para></footnote>
' 32 (for <package>qt.examples</package>) on a
2010-01-10 tobias 33 Pentium M 1.7GHz. (Compilation ~20 seconds)</para></listitem>
2009-04-05 tobias 34 <listitem><para>Needs to be recompiled when the Smoke library is updated.</para></listitem>
2009-06-04 tobias 35 <listitem><para>Could be faster</para></listitem>
2009-08-27 tobias 36 <listitem><para>No const-correctness</para></listitem>
2009-04-05 tobias 37 </itemizedlist>
2009-06-21 tobias 38 <section><title>Performance</title>
09:29:52 ' 39 <para>
' 40 Method calling is near 3000 times slower than native C++. The overhead is mainly in the overload
' 41 resolution and to/from foreign object translation. Some measurements by
' 42 <code><ulink url="http://tobias.rautenkranz.ch/darcsweb/darcsweb.cgi?r=cl-smoke/benchmark;a=summary">:cl-smoke.benchmark</ulink></code>
' 43 are in
' 44 <filename><ulink url="../benchmark.pdf">benchmark.pdf</ulink></filename>.
' 45 </para>
' 46 </section>
2009-04-05 tobias 47 </section>
2009-07-06 tobias 48 <section id="installation"><title>Installation</title>
2009-04-05 tobias 49 <section><title>Dependencies</title>
17:58:25 ' 50 <itemizedlist>
' 51 <listitem><para><ulink
' 52 url="http://techbase.kde.org/Development/Languages/Smoke">Smoke2</ulink>
2009-08-27 tobias 53 bindings 4.2 or later</para></listitem>
2009-04-05 tobias 54 <listitem><para><ulink url="http://qtsoftware.com">Qt</ulink>
17:58:25 ' 55 (development package)</para></listitem>
' 56 <listitem><para>
' 57 <ulink url="http://cmake.org">CMake</ulink> 2.6
' 58 </para></listitem>
2010-01-10 tobias 59 <listitem><para>a make program (preferably Gnu Make)</para></listitem>
2009-04-05 tobias 60 <listitem><para>a C++ compiler (GCC)</para></listitem>
17:58:25 ' 61 </itemizedlist>
' 62 <para>
2009-12-13 tobias 63 On the Lisp side you need <ulink url="http://mudballs.com">Mudballs</ulink>
13:22:09 ' 64 and <ulink url="http://tobias.rautenkranz.ch/lisp/sysdef.cmake">sysdef.cmake</ulink>.
' 65 </para>
' 66 <para>
' 67 If you prefer to use <ulink url="http://common-lisp.net/project/asdf/">ASDF</ulink> instead of Mudballs, you need these systems:
2009-06-03 tobias 68 <itemizedlist>
22:31:34 ' 69 <listitem><para><ulink url="http://common-lisp.net/project/alexandria/">alexandria</ulink></para></listitem>
' 70 <listitem><para><ulink url="http://common-lisp.net/project/bordeaux-threads/">bordeaux-threads</ulink></para></listitem>
' 71 <listitem><para><ulink url="http://common-lisp.net/project/cffi/">cffi</ulink></para></listitem>
' 72 <listitem><para><ulink url="http://common-lisp.net/project/closer/closer-mop.html">closer-mop</ulink></para></listitem>
' 73 <listitem><para><ulink url="http://www.cliki.net/trivial-garbage">trivial-garbage</ulink></para></listitem>
' 74 </itemizedlist>
' 75 </para>
2009-04-05 tobias 76 </section>
17:58:25 ' 77
' 78 <section><title>Supported Platforms</title>
2009-05-12 tobias 79 <section><title>Working</title>
17:03:22 ' 80 <itemizedlist>
' 81 <listitem><para>
' 82 <ulink url="http://www.sbcl.org">SBCL</ulink> on Linux x86 (and x86_64)
' 83 </para></listitem>
' 84 <listitem> <para>
2009-07-02 tobias 85 <ulink url="http://trac.clozure.com/openmcl">Clozure CL</ulink> on Linux x86.
2009-05-12 tobias 86 </para></listitem>
17:03:22 ' 87 </itemizedlist>
' 88 </section>
' 89 <section><title>Not Working</title>
' 90 <itemizedlist>
' 91 <listitem><para>
2009-04-09 tobias 92 <ulink url="http://www.cons.org/cmucl/">CMUCL</ulink>
2009-05-12 tobias 93 </para></listitem>
17:03:22 ' 94 <listitem><para>
' 95 <ulink url="http://clisp.cons.org/">CLISP</ulink>
' 96 </para></listitem>
' 97 </itemizedlist>
' 98 </section>
2009-04-05 tobias 99 </section>
17:58:25 ' 100 <section><title>Installation</title>
' 101 <para>
2009-12-13 tobias 102 For loading the systems you can use Mudballs or ASDF. But first get the sources:
13:22:09 ' 103 </para>
' 104 <para>
2009-04-05 tobias 105 You need to checkout the darcs repositories:
17:58:25 ' 106 <programlisting>
' 107 cd <userinput>SOME_DIR</userinput>
2009-07-22 tobias 108 for r in smoke qt qt.test qt.tests qt.examples qt.uitools qt.webkit kde kde.tests kde.examples repl; do
2009-04-05 tobias 109 darcs get "http://tobias.rautenkranz.ch/lisp/cl-smoke/$r"
17:58:25 ' 110 done
' 111 </programlisting>
2009-06-03 tobias 112 </para>
2009-12-13 tobias 113 <section><title>Mudballs</title>
2009-06-03 tobias 114 <para>
2009-12-13 tobias 115 Then add the directory <userinput>SOME_DIR</userinput> to the mudballs search paths by adding
13:22:09 ' 116 <programlisting>
' 117 (push (wildcard-searcher "<userinput>SOME_DIR</userinput>/*/*.mbd")
' 118 *custom-search-modules*)
' 119 </programlisting>
' 120 to <filename>~/.mudballs</filename>.
' 121 </para>
' 122 <note>
' 123 <para>
' 124 Loading the packages with <code>mb:load</code> compiles the C wrapper libraries as needed.
' 125 </para>
' 126 </note>
' 127 </section>
' 128
' 129 <section><title>ASDF</title>
' 130 <para>
' 131 The <code>.asd</code> files are
' 132 <ulink url="http://tobias.rautenkranz.ch/darcsweb/darcsweb.cgi?r=mudballs-to-asdf;a=summary">generated</ulink>
' 133 from the mudballs files.
' 134 <ulink url="http://tobias.rautenkranz.ch/lisp/cl-smoke/cl-smoke-asd.tar.bz2">Get the <code>.asd</code> files</ulink> and
' 135 place them in the corresponding source directories. Then symlink the <code>.asd</code> files in a ASDF search path.
' 136 You can for example run: <code>ln -s <userinput>SOME_DIR/*/*.asd</userinput> <userinput>ASDF_PATH</userinput></code>
' 137 </para>
' 138 <para>
' 139 Now build and install the <package>:smoke</package> and <package>:qt</package> C wrapper libraries with:
2009-06-03 tobias 140 <informalexample>
2009-07-02 tobias 141 <programlisting>cmake ./ &amp;&amp; make &amp;&amp; sudo make install</programlisting>
2009-06-03 tobias 142 </informalexample>
22:31:34 ' 143 in the <filename>smoke/</filename> and <filename>qt/</filename> directories.
' 144 </para>
2009-12-13 tobias 145 <note><para>
13:22:09 ' 146 Some examples get the paths for the files to load from their Mudballs system (ui and i18n) and thus will not work.
' 147 </para></note>
' 148 </section>
2009-04-05 tobias 149 </section>
17:58:25 ' 150 </section>
' 151 </chapter>