LispWorks review
The Common Lisp Cookbook – LispWorks review
Search
Table of Contents
The Common Lisp Cookbook – LispWorks review
📢 🎓 ⭐<br>Learn Common Lisp efficiently in videos, by the Cookbook's main contributor.<br>Learn more.
--><br>Get the EPUB and the new Typst-quality PDF -->
🖊️ Discover a new Common Lisp and Coalton editor for beginners: mine and a new VSCode extension for Common Lisp: OLIVE.
LispWorks is a Common Lisp implementation that<br>comes with its own Integrated Development Environment (IDE) and its share of<br>unique features, such as the CAPI GUI toolkit. It is proprietary and<br>provides a free limited version .
Here, we will mainly explore its IDE, asking ourselves what it can<br>offer to a seasoned lisper used to Emacs and Slime. The short answer<br>is: more graphical tools, such as an easy to use graphical stepper, a<br>tracer, a code coverage browser or again a class browser. Setting and<br>using breakpoints was easier than on Slime.
LispWorks also provides more integrated tools (the Process browser<br>lists all processes running in the Lisp image and we can<br>stop, break or debug them) and presents many information in the form of<br>graphs (for example, a graph of function calls or a graph of all the<br>created windows).
LispWorks features
We can see a matrix of LispWorks features by edition and platform here: http://www.lispworks.com/products/features.html.
We highlight:
32-bit, 64-bit and ARM support on Windows, MacOS, Linux, Solaris, FreeBSD,
CAPI portable GUI toolkit: provides native look-and-feel on Windows, Cocoa, GTK+ and Motif.
comes with a graphical “Interface Builder” (think QtCreator) (though not available on MacOS (nor on mobile))
LispWorks for mobile runtime, for Android and iOS,
optimized application delivery: LispWorks can use a tree shaker to<br>remove unused lisp code from the delivered applicatiion, thus<br>shipping lighter binaries than existing open-source implementations.
ability to deliver a dynamic library,
a Java interface, allowing to call from Lisp to Java or the other way around,
an Objective-C and Cocoa interface, with drag and drop and multi-touch support,
a Foreign Language Interface,
TCP/UDP sockets with SSL & IPv6 support,
natived threads and symmetric multiprocessing, unicode support, and all other Common Lisp features, and all other LispWorks Enterprise features.
And, of course, a built-in IDE.
LispWorks is used in diverse areas of the industry. They maintain a list of success stories. As for software that we can use ourselves, we find ScoreCloud amazing (a music notation software: you play an instrument, sing or whistle and it writes the music) or OpenMusic (opensource composition environment).
Free edition limitations
The download instructions and the limitations are given on the download page.
The limitations are the following:
There is a heap size limit which, if exceeded, causes the image to exit. A warning is provided when the limit is approached.
What does it prevent us to do? As an illustration, we can not load this set of libraries together in the same image:
(ql:quickload '("alexandria" "serapeum" "bordeaux-threads"<br>"lparallel" "dexador" "hunchentoot" "quri"<br>"cl-ppcre" "mito"))
There is a time limit of 5 hours for each session, after which LispWorks Personal exits, possibly without saving your work or performing cleanups such as removing temporary files. You are warned after 4 hours of use.
It is impossible to build a binary . Indeed, the functions save-image, deliver (the function to create a stand-alone executable), and load-all-patches are not available.
Initialization files are not loaded . If you are used to initializing Quicklisp from your ~/.sbclrc on Emacs, you’ll have to load an init file manually every time you start LispWorks ((load #p"~/.your-init-file)).
For the record, the snippet provided by Quicklisp to put in one’s startup file is the following:
;; provided you installed quicklisp in ~/quicklisp/<br>(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp"<br>(user-homedir-pathname))))<br>(when (probe-file quicklisp-init)<br>(load quicklisp-init)))
You’ll have to paste it to the listener window (with the C-y key, y as “yank”).
Layered products that are part of LispWorks Professional and Enterprise Editions (CLIM, KnowledgeWorks, Common SQL and LispWorks ORB) are not included. But we can try the CAPI toolkit .
The installation process requires you to fill an HTML form to receive<br>a download link, then to run a first script that makes you accept the<br>terms and the licence, then to run a second script that installs the software.
Licencing model
LispWorks actually comes in four paid editions. It’s all explained by themselves here: http://www.lispworks.com/products/lispworks.html. In short, there is:
a Hobbyist edition with save-image and load-all-patches, to apply updates of minor versions, without the obvious limitations, for non-commercial and non-academic use,
a HobbyistDV edition with the deliver function to create executables...