Feedback from users.
(emphasis for features not found in stock SBCL)
- its own IDE built in its own Lisp toolkit
- graphical IDE tools: click to place a breakpoint, etc
- build small binaries, tree shaker (3MB hello world, 5MB web hello world)
- not in the free personal edition
- cross-platform CAPI GUI toolkit (Gtk3 on GNU/Linux)
- mobile runtime (iOs, Android)
- Java interface
- "Database access via ODBC or native Oracle, PostgreSQL and MySQL interfaces through Common SQL."
- "Industry standard distributed computing through LispWorks ORB. "
- "Expert system programming through KnowledgeWorks® which has an embedded Prolog compiler."
- "TCP/UDP sockets with SSL & IPv6 support"
- "OpenSSL interface"
- "COM server and client interface"
- Foreign Language Interface (similar in scope as CFFI)
- "Objective-C/Cocoa FLI"
- commercial support
- the pro version costs $$$ for each platform
https://www.lispworks.com/products/lispworks.html
- when building small binaries (the
deliver
function),compile
is not included in them. One can't anymorequickload
libraries from the running program or connect to them with Swank. - check its portability situation: https://portability.cl/
- no easy way to test on CI, the free personal edition is limited in memory and must be closed after 5 hours.
I own LW for Linux, Mac, and Windows. That's a lot of $$$. But I can build trimmed down binaries for multiple platforms. If there's another platform I need, I can just pay LW, and it'll just work. (I used a beta version of LW for Android for a while, and I was impressed with how everything just works, I chose not to keep paying for it though since Android didn't remain a primary platform I was working on). As a solo dev, it would take me too much time to make my code work on multiple platforms without LW.
I like the Java support. I can use Java libraries when I need it. Very valuable.
I love LW's FLI vs something like CFFI. It's just very well thought through, and really well documented.
Speaking of documentation, the LW documentation is outstanding, and the folk at LW will respond to you explaining implementation details that aren't documented if you need it.
And it's rock solid. I have my server running for weeks and weeks at a time, with constantly reloading code. I don't think I've ever had a crash in prod except when I ran out of memory on occasion.
Cons: not every library is well tested with LW. You'll frequently have to fix libraries, or have your own fork of things.
I haven't used CAPI much. I don't use the IDE, I use Emacs+sly.
All that being said, SBCL is still fantastic. If you're building a web app, SBCL would work perfectly well for your use case.
https://www.reddit.com/r/Common_Lisp/comments/yq2t4r/why_buy_lispworks/ivmoexy/
My first Lisp job was building a touch-screen GUI for a law enforcement booking system that ran on an embedded Windows OS. We used LispWorks 5 if I recall correctly. It was stellar and extremely stable. Our attempts at the time to port to an open-source compiler were complete boondoggles for a multitude of reasons.
Aside from stability, the following stood out:
- Their GUI toolkit is great if you're building a commercial application.
- Their documentation is better than any open source Lisp compiler.
- Turn-key ways to build optimized, small, and safer executables and dynamic libraries. I don't think any open source Lisp offers good options to shake out unnecessary functionality from the Lisp image.
- You can pay someone to fix things that don't work as well as you want.
My big issues with LW:
- It's a great Lisp implementation, but it's just an ok compiler. It takes a ton more work to get performant numerical code compared to SBCL.
- Last I checked, it's $3k per OS per processor. So if you want to provide binaries for Win, Mac (Intel, ARM), Linux, you're going to have to shell out $12,000 or so.
https://www.reddit.com/r/Common_Lisp/comments/yq2t4r/why_buy_lispworks/ivmn9tm/
to be continued
Lispworks is waaaay ahead of SBCL when it comes to delivery. Which kind of makes sense, because delivery comes with a lot of edge cases that are only practical to support if you have a paying customer base (each customer probably does it very differently). SBCL does have a way to save an image, but nothing about tree-shaking.
I would argue that there's no open source tool out there (CL or other languages) that can do delivery like Lispworks does it. So my startup's competitors create large NPM packages that customers have to install with NPM, and I can send trimmed down binaries to customers with practically no dependencies.
https://www.reddit.com/r/Common_Lisp/comments/1bud313/delivering_a_lispworks_application/ky264ud/
and many more: see LW's success stories.
One can find LW plugins on awesome-cl.
Related:
- Common Lisp VS Clojure: https://gist.github.com/vindarel/3484a4bcc944a5be143e74bfae1025e4
- Common Lisp VS Racket: https://gist.github.com/vindarel/c1ef5e043773921e3b11d8f4fe1ca7ac
- Commmon Lisp VS Julia: https://gist.github.com/vindarel/15f4021baad4d22d334cb5ce2bec088a
- Common Lisp VS Python: https://lisp-journey.gitlab.io/pythonvslisp/