alt.hn

7/28/2026 at 5:11:54 PM

Steel Bank Common Lisp version 2.6.7

https://sbcl.org/all-news.html?2.6.7

by tmtvl

7/28/2026 at 9:03:33 PM

Fun fact I learned from a Func Prog podcast: the name Steel Bank is a play on it's origin as Carnegie-Mellon Common Lisp (Carnegie made his fortune in Steel, while Mellon did so with Banks):

https://www.sbcl.org/history.html

by taolson

7/28/2026 at 9:29:46 PM

There's another wordplay in the name.

Namely, that "SB" stands for "Sanely Bootstrappable" - something that the CMU Common Lisp was unable to do

by p_l

7/28/2026 at 11:24:01 PM

In my first job, grumpy Martin had as one of his many indispensable tasks, to build cmucl. (Itasoftware, one of the main lisp shops of the age)

by jojohohanon

7/29/2026 at 7:46:04 AM

It is my understanding that easing bootstrap was the original motivation of the fork of CMU CL. I'm a bit confused about that, since CMU CL supports compilation to byte-code (which should make a port to a new architecture comparatively easy), a feature which was dropped in SBCL.

by guenthert

7/29/2026 at 10:07:13 AM

The sane bootstrap is not about porting to new architecture, but about building the compiler from source in the first place. CMU CL effectively requires that you use the same version of CMU CL to build it, IIRC, which in practice meant you had to first load the changes into older CMU CL image - overwriting core components, and then use that image to compile new version.

The difference with SBCL is that it can compile so long as you have any CL implementation that handles certain broad, but not complete, subset of ANSI CL.

It does it by being able to compile itself in sort-of sandboxed state hosted within another CL image, and then using that compiler to build itself, without requiring to modify the host compiler like CMU

As for the bytecode, as far as I recall CMU CL did not have bytecode compiler at all - it had evaluator option, which was indeed dropped for a long time from SBCL but was recently reintroduced, partially to support efforts such as porting Kandria [1] to Nintendo Switch

[1] https://kandria.com/

by p_l

7/29/2026 at 3:15:21 PM

> As for the bytecode, as far as I recall CMU CL did not have bytecode compiler at all

The byte code compilation option is described in CMUCL documentation, section 5.9 Byte Coded Compilation: https://cmucl.org/docs/cmu-user/html/Byte-Coded-Compilation....

by jhgb

7/29/2026 at 8:13:02 PM

Ah, with how cmucl was problematic to get running I never delved that deep. It indeed is not present in SBCL.

That said, as mentioned, it gave no real impact on bootstrappability nor portability

by p_l

7/29/2026 at 1:35:06 PM

That's more of a backronym.

by pfdietz

7/29/2026 at 12:35:55 AM

Steel Bank Common Lisp is what Hacker News uses.

https://news.ycombinator.com/item?id=44099006

I discovered this while doing some research for a post the other day: https://vale.rocks/posts/hacker-news

by OuterVale

7/29/2026 at 10:59:10 AM

I recall HN originally using Arc. Is there a history available regarding its development and redevelopment?

by SeanLuke

7/29/2026 at 11:20:27 AM

It still uses Arc. The original implementation was written in Racket, then rewritten in Common Lisp and run on SBCL.

by maleldil

7/29/2026 at 2:22:33 PM

I know Racket was reworked to build upon Chez Scheme several years ago. If the HN migration to CL was due to performance reasons, I wonder if sticking it out and waiting for the Chez version of Racket would have paid off.

by dmux

7/29/2026 at 3:00:05 PM

here:

    I’m curious: was Arc running Racket BC or CS? I understand it got a big performance boost after switching to Chez Scheme.

    dang: It was running BC. I had high hopes for switching to CS because I'd heard the same thing you had, but when I tried it, HN slowed to a crawl. This stuff is so unpredictable.
https://news.ycombinator.com/item?id=47140657

by vindarel

7/28/2026 at 6:02:23 PM

    * the SB-SIMD contrib now supports ARM64. (Thanks to Sylvia Harrington)
    * AVX512 instructions are now supported on X86-64. (Thanks to Robert Smith and Arthur Miller)
    * additional support for SIMD instructions on ARM64 and X86-64. (Thanks to Arthur Miller)
These seem like pretty awesome additions. Does anyone know how SIMD works in SBCL? Is this at the codegen layer? i.e. can it auto-vectorize or anything like that? Or are these intrinsics you have to explicitly ask for?

by wk_end

7/29/2026 at 8:32:01 AM

> "AVX512 instructions are now supported on X86-64"

This is the first news I've seen on HN in weeks that I am genuinely excited about! I have several AVX-2 hobby projects in Common Lisp, and an AVX-512 machine. It's an unexpected surprise to read this morning that this very useful ISA is suddenly unlocked. I'll be trying it out right away.

(edit: Looks like they mean *compiler* support for AVX-512, but not SB-SIMD definitions (yet). So I believe the only way for end-users to call AVX-512 instructions right now is to write custom VOP's).

> "Or are these intrinsics you have to explicitly ask for?"

There are language SIMD types and you explicitly use SIMD functions that operate on them. I believe it's essentially the same idea as C intrinsics. You can for example write (interactively)

    (u32.8+ (make-u32.8 0 1 2 3 4 5 6 7)
            (u32.8 10))

    ;; => #<SB-EXT:SIMD-PACK-256   10   11   12   13   14   15   16   17>
And that's VPADDD under the hood. Or reading an array

    (loop with sum = (f32.8 0.0f0)
          for index below (* 8 (floor length 8)) by 8
          do (setq sum (f32.8+ (f32.8-aref array index)
                               sum))
          finally (return sum))
which compiles down to a small loop around the vector insts

    VMOVUPS YMM1, [RDX+RCX*2+1]
    VADDPS YMM0, YMM1, YMM0
I much prefer it to writing intrinsics in C (and the results are just as good). It's an interactive, exploratory, coding: I write small modular functions, SBCL compiles them on the fly, I glue them together with high-level language constructs.

by peri-cl

7/29/2026 at 7:35:11 PM

> I much prefer it to writing intrinsics in C (and the results are just as good). It's an interactive, exploratory, coding: I write small modular functions, SBCL compiles them on the fly, I glue them together with high-level language constructs.

Same here, but in Julia instead. Sometimes I drop down to LLVM intrinsics (e.g. to force lop3.lut on GPUs).

by Archit3ch

7/28/2026 at 6:41:15 PM

If any SBCL dev is here, please add documentation for how to use the memory arena feature. The only doc is an very old proposal document.

by HexDecOctBin

7/28/2026 at 7:21:52 PM

Yeah I'm not sure why it's not in the manual, as it's had arena allocation support since at least 2.4.x, but basically:

- use SB-VM:NEW-ARENA to make a new arena

- use SB-VM:WITH-ARENA to redirect ordinary allocation into an existing arena like you would use WITH-OPEN-FILE or similar macros

The only real doc is this internals note, and it doesn't even cover NEW-ARENA which I guess is left as an exercise to the reader: https://github.com/sbcl/sbcl/blob/master/doc/internals-notes...

by stackghost

7/29/2026 at 3:06:46 AM

Yeah, but I am guessing one needs a bit more info on how this works together with GC. For example, once an arena goes out of scope, what happens to allocations made inside it that have been returned and thus are referred to from outside that scope? Are they copied out or do we have a dangling pointer? Stuff like this needs some decent documentation in order to be able to use a low level feature like this properly.

by HexDecOctBin

7/29/2026 at 9:21:01 AM

Indeed. The behavior of arenas shared by multiple threads is important as well, and the proper use of destroy-arena vs. rewind-arena. Without care it's easy to create a leak in the unmanaged memory and the OOM Killer will come for your process eventually.

by Jach

7/28/2026 at 6:45:10 PM

I wonder sometimes how the world would look like if lisp won and the unit of deployment was a lisp machine image, if that makes sense. How would a kubernetes optimized for lisp look like? How would AWS EC2 look like? etc.

by baq

7/28/2026 at 6:49:33 PM

We wouldn't have need such barbaric things in a lisp world. :p

Personally I think/hope they would have earlier discoveries / more broad usage of the deterministic systems like nix etc, which are built upon functional principles of immutability etc.

Maybe the world would be guix/Hurd!

by tyromaniac

7/28/2026 at 7:00:48 PM

Common lisp isn't functional in that sense.

by blubber

7/28/2026 at 10:39:52 PM

When I learned (Common) Lisp at Georgia Tech in the summer of 1995, we were encouraged to make as many functions as possible purely functional, and if mutation was needed, to try to hide it within the bounds of a function.

So while Lisp may not be purely functional, the culture hewed that way.

by zellyn

7/29/2026 at 2:44:08 PM

That's interesting, because I had the opposite experience. I started getting into Lisp around 2004, but bounced off of the community because the culture I was experiencing hewed heavily toward imperative code and global variables in the name of efficiency.

I specifically remember the breaking point being third-party library where none of the functions had any parameters. Instead, everything was controlled by using dynamic binding to adjust the variables within the functions. Various forum members kept praising its beauty and elegance, but I found it needlessly confusing.

I have a soft spot for the Lisp family of languages. I've been using Emacs for almost thirty years and have used both Scheme and Clojure in production. However, my experiences back in 2006 have left me with a permanent bias against Common Lisp.

by rprospero

7/28/2026 at 7:53:03 PM

Sure the language might not be immutable but the lisp machine alt universe's "overton window" would I imagine be more functional then today's (JVM? maybe that's the qnalog?) reality.

by tyromaniac

7/28/2026 at 7:20:46 PM

Common Lisp is pretty much the opposite of what people think of as functional nowadays. You're constantly changing the image and everything is mutable.

by dismalaf

7/28/2026 at 10:04:23 PM

yeah it's a strange aspect of that lisp era, it was born in mccarthy's recursive functions over recursive lists.. and then interactive development over global state added as a layer.

i would argue that lispers use of mutability was much more surgical and principled but maybe i'm biased

by agumonkey

7/29/2026 at 3:41:20 AM

McCarthy's pure Lisp existed only on paper. The first Lisp that ran on a computer had mutable variables, as did Lisp 1.5, Maclisp, etc...

Immutability requires lots of copying and early computers didn't have much memory to spare...

by dismalaf

7/28/2026 at 7:45:03 PM

Image saving isn't something that's done very often, in practice.

by pfdietz

7/29/2026 at 7:42:23 AM

What is done in practice, for daily development use? Building the image in memory from source files at startup?

by Scarblac

7/29/2026 at 10:06:50 AM

Typically, for development, one will start a clean image in the morning and load it up with a combination of newly compiled code and automatically cached previously compiled code. This is mostly invisible to the user unless something goes wrong with the cache and it has to be cleared. The unaware user could think they're recompiling everything every time.

by johnlorentzson

7/29/2026 at 1:28:25 PM

Yes, that's quite fast. The files are kept in a version control system so you update from that first as well.

The use cases for images would be: delivery of applications to users, or (internally) delivery of some fixed set of underlying code that is used as a substrate for development but that wouldn't normally be changed by developers.

Normally, the developer has an image running all day, and does development and testing in it, but (unless needed for additional testing) doesn't save that image as a new binary that others can run.

by pfdietz

7/28/2026 at 7:55:44 PM

I would presume there was a lot of mixing of imperative/functional in the 80s where this alt universe starts. I think the same type of world in which lisp machines would have become king would also be similar

by tyromaniac

7/28/2026 at 10:53:37 PM

Yeah, all the common lispers I know are all about interacting with "live" programs as opposed to "dead", compiled ones. Nix takes the last live, mutable, reflectable part of the world of programmers today, the OS itself, and turns it into a dead program as well. So common lispers tend to hate Nix with a passion (as do Smalltalk users).

by muvlon

7/28/2026 at 11:00:43 PM

i'm a lisper, and i don't hate nix. i prefer guix, for sure, but i don't see this hatered you're talking about among other lispers either.

by attila-lendvai

7/28/2026 at 6:52:27 PM

> Personally I think/hope they would have earlier discoveries / more broad usage of the deterministic systems like nix etc, which are built upon functional principles of immutability etc.

Yeah, that, uh, doesn't sound like Lisp

by neutronicus

7/29/2026 at 11:22:24 AM

https://guix.gnu.org/

by tyromaniac

7/29/2026 at 2:12:37 PM

Yeah, I mean, I know it exists, but the mythology of Lisp is built around "I can drop into a REPL and execute arbitrary code on a production system and that is a good thing"

by neutronicus

7/29/2026 at 7:53:23 PM

As opposed to our wonderful world where everyone does the same with unchecked binaries or obfuscated/minified JS?

To me the mythology of lisp (from my mostly outsider perspective) is more like "make everything a interoperable DSL" (although if this is what you were describing with your sentence then thats fair enough)

by tyromaniac

7/28/2026 at 7:34:04 PM

That (deployment is via a customized image) is the thing I find most awkward.

Somewhere, I have a copy of a commercial LISP for Windows which would compile to an executable --- apparently this sort of thing is still possible, but it's not widely known/used, and sadly Jean-Marie Hullot's "SOS Interface" for the Mac was co-opted to NeXTstep:

https://denninginstitute.com/itcore/userinterface/GUIHistory...

I'd dearly love to see a RAD (Rapid Application Development) tool using LISP w/ a nifty UI for working up a GUI which would compile to something easily deployed (maybe HTML5 Canvas and JavaScript) as a stand-alone/single-file web application?

by WillAdams

7/28/2026 at 7:43:53 PM

You probably want Clog: https://github.com/rabbibotton/clog

by brabel

7/28/2026 at 10:39:43 PM

Clog is very cool. As an alternative, I have recently been building Common Lisp UIs with webview (I have two example webview apps as recent additions to my Common Lisp book).

re: heap based delivery: not a good idea. But, I sometimes do heap based development when I have a ton of data I want loaded every dev session, then I save a SBCL image, and restart my Lisp environment using my custom image.

by mark_l_watson

7/28/2026 at 9:36:18 PM

sbcl can compile to a single executable (the image is embedded in the binary). From a deployment standpoint, the only real issue is if you depend on a dynamically linked C library like OpenSSL.

by fiddlerwoaroof

7/28/2026 at 10:41:18 PM

I used to do this to build command line utilities in SBCL, with millisecond initialization times. Good technique, and compress the image so executables are fairly small.

by mark_l_watson

7/28/2026 at 11:06:14 PM

random note: it's possible to incorporate C libs at compile time, e.g.:

https://github.com/sionescu/sbcl-goodies

by attila-lendvai

7/29/2026 at 1:20:18 AM

Yeah, I’ve done that in a slightly hacky way (manually run the various stages of the sbcl build and statically link c libs before building the actual image).

by fiddlerwoaroof

7/28/2026 at 8:19:47 PM

Docker deploys is a bit like that I think. Overall, I think many languages and programming systems pick up pieces from each other nowadays. PHP almost by accident can be quite stateless. Yet it's looking more like Java. Many things which could be deployed as an executable, are deployed as VM images. I'm sure we can come up with more things...

by actionfromafar

7/29/2026 at 4:38:09 AM

That would be a bad idea. In Smalltalk the "image" was the main thing and I think that was one thing that led to the commercail demise of Smalltalk. You can not combine two (or more) images. You can not build new things by using "images" as components. Instead as we know source-code modules with well-defined interfaces between them is what keeps productivity hhigh. At least before AI.

by galaxyLogic

7/29/2026 at 3:52:29 PM

> You can not combine two (or more) images.

Depends what you mean. Details matter.

> You can not build new things by using "images" as components.

Depends what you mean. Details matter.

by igouy

7/29/2026 at 5:41:59 AM

Images can be saved out as files, so I don't see why not. Also, I recall it was the expensive commercial licensing along with the rise of cheap PCs as competition to Lisp and ST machines. That and Java being free with a focus on networking and the web was the final nail in squashing Lisp or ST popularity.

by goatlover

7/29/2026 at 3:59:32 PM

March 7, 1988 — "Smalltalk/V 286 is available now and costs $199.95, the company said. Registered users of Digitalk's Smalltalk/V can upgrade for $75 until June 1."

https://books.google.com/books?id=CD8EAAAAMBAJ&lpg=PA25&dq=d...

September 1991 — "Smalltalk/V code is portable between the Windows and the OS/2 versions. And the resulting application carries no runtime charges. All for just $499.95."

(Advert on the last page of "The Smalltalk Report")

https://rmod-files.lille.inria.fr/Archives/TheSmalltalkRepor...

by igouy

7/29/2026 at 4:00:44 PM

Java being free-as-in-beer.

by igouy

7/29/2026 at 8:59:46 AM

> How would a kubernetes optimized for lisp look like

I imagine it would look a bit like Erlang's BEAM. No need to stop and start the application, but write a script to do hot updates of a live image.

by sph

7/28/2026 at 8:45:21 PM

I've often thought that s-expression diff-viewers would be very nice tooling. I've also often wondered how easy it would be to just sling s-expressions across the wire to execute in another environment. What would modern infrastructure look like if you could just have lambdas running lambdas?

by joshmarlow

7/28/2026 at 10:06:28 PM

in at least Common Lisp world slinging s-expressions is considered to be a hack, at best something you do in a development environment, like swank/slime wire protocol. one of the reasons is that a readtable is both powerful, user extendable, and has all kinds of default ways in which a malicious input would be detrimental. you can remove all kinds of reader macros like #.(xyzzy), but to make a truly bulletproof s-expression reader you'd have to build a json like subset from first principles. even things like colons in symbol name package:symbol will trip you up. it's been understood since long time ago, that common internet standards, like RFCs, are the preferred method. in which case the fact that it's an s-expression versus a json is pretty much irrelevant. it's a kind of reader/writer anyway.

by g9550684

7/29/2026 at 12:10:38 AM

You can configure (read) to be safe for this purpose.

It’s not a hack.

by groundzeros2015

7/29/2026 at 1:45:44 PM

Yes, there's a specific standard special variable controlling it, *read-eval*.

by pfdietz

7/29/2026 at 7:24:32 PM

You can also configure a read table to disable any other data structure features you want.

inb4 DoS attack. That is a universal parsing problem and should be solved by configuring OS limits for your process.

by groundzeros2015

7/28/2026 at 10:15:44 PM

Not sexps, but better.

Quite a while back I have read about a system based on Scheme , called termite (I don't remember which scheme that was) that can actually sling live running code/closures across network and execute them remotely..

Boggles my mind even today.

by reddit_clone

7/29/2026 at 12:54:42 AM

Erlang also has this capability built in. You can do all kinds of weird stuff with it, it’s great.

by asa400

7/28/2026 at 9:02:34 PM

> How would a kubernetes

We have a few services built in Clojure and we expose nrepl port on our pods in our SDEs, it's enormously helpful to test and debug things on the fly, without having to redeploy or restart anything. Without having to deal with state, caching, etc.

by iLemming

7/28/2026 at 10:12:44 PM

Not In production yes?

Also not sure what is SDE.

by reddit_clone

7/28/2026 at 10:35:37 PM

No, of course not in prod. SDE stands for "Software Developer Environment" - ephemeral VMs we spin up for testing before stuff hits staging/prod clusters.

by iLemming

7/29/2026 at 1:59:36 AM

The worst thing that ever happened to Common Lisp was its ANSI standardization, which for many years killed almost all language innovation and improvement.

by whyenot

7/29/2026 at 1:47:55 PM

On the other hand, standardization enabled Common Lisp implementations to actually be tested, so programs became much more portable across time and between different implementations.

What stopped further development of the standard was the collapse of the market for Common Lisp.

I should note that many of the things that need changes to the language definition in other languages are just libraries in Common Lisp.

by pfdietz

7/29/2026 at 8:07:53 AM

Nobody stopped anyone to come up with variants, just from calling those ANSI Common Lisp compliant. There are after all many, most of which are long dead already.

by guenthert

7/29/2026 at 2:35:08 PM

But _worse is better_.

by dmux

7/29/2026 at 6:47:00 AM

The worst and best thing.

by BoingBoomTschak

7/28/2026 at 7:43:44 PM

Not that different.

AWS already has lots of AMI and docker are essentially image based.

We would version whole images in something like git, and that's all.

by Shorel

7/28/2026 at 11:49:15 PM

Uhm. I can think of more differences

by groundzeros2015

7/28/2026 at 11:21:14 PM

if you are pondering about that, then i think you'll like this:

https://ngnghm.github.io/

by attila-lendvai

7/28/2026 at 7:04:59 PM

Variable AWS is unbound.

by blubber

7/28/2026 at 9:47:41 PM

Same as the regular, but configurable in lisp?

by coldtea

7/28/2026 at 7:56:41 PM

It'd look like Graal, which is a real thing you can use today.

by quotemstr

7/28/2026 at 7:18:14 PM

Lisp's been around for 70 years at this point and hordes of developers tried it and said: lovely, but I ain't using it at work.

I'm strongly convinced, having used Scheme, CL, Racket, Clojure that Lisp is doomed to be (mostly) a hobby language.

The very power of Lisp, macros, dynamic programming, reflection lead to a mess of an ecosystem where every single developer reinvents the wheel and nobody can understand yet another DSL invented by the next developer next to them.

Racket's theme of being a "programming language for building programming languages" is just the poster child of this naivety: I don't want even more friction.

What scales and works is simple and boring.

That's by the way why also Haskell has struggled forever. Beyond its dreadful DX, poor tooling and unacceptable compilation times, the language is just plagued by compiler extensions and every single developer reinventing its own abstractions.

There was the simple haskell movement to just standardize around a set of extensions and conventions, but nope, these languages unavoidably attract people that want to stay in the ivory tower.

Really, I love both lisps and haskell, but I would take a dreadful php over them every single day at work. No contest.

by epolanski

7/28/2026 at 9:02:18 PM

I was fortunate enough to use lisp professionally for nearly 20 years. The only reason that gig ended was the unfortunate demise of the majority owner and founder, and his heirs selling the shop to a competitor that only wanted the customer database imported. Lisp was never the problem, nor particularily messy.

On the contrary, we considered it a major reason we were able to build a quite successful stock broker and bank from scratch with a team of 4-6 people, who doubled as datacenter ops (we ran on-prem), internal tech support for the rest of the firm (~20 people) and 2.line customer support.

We quite naturally converged on a set of internal libraries for various tasks. Understanding and fixing each other’s code was not a big deal.

Coincidentally, our frontend was php. That was messier, and we conciously kept that layer as lean as possible.

by offlineguy

7/28/2026 at 7:57:58 PM

The problem is that the type of developer you're talking about is the kind who invents a thousand excuses about anything. It doesn't begin and end with different languages. Using a different subset of their favorite language? A different toolchain? A radically different build process? You'll hear plenty of whining about it. Even just moving them to a different codebase will make them miserable. You put a Lisp or a Prolog in front of them, and their attention flows upwards to the most general principles to whine about. The entire thing is that if you stick them into an unfamiliar environment, they will vocalize their discomfort through rationalization. I think most people who have led teams will know exactly what I'm talking about.

Not that these people are necessarily bad at their jobs, but they're definitely a personality type you should learn to identify so you can manage them properly.

by ux266478

7/28/2026 at 8:43:45 PM

Yes, that kind of developer exists everywhere, but is still limited by the tools you reign in him.

> I think most people who have led teams will know exactly what I'm talking about.

I've had those as leads themselves, with great benefit and pain. They further convinced me about the beauty of ugly and boring.

by epolanski

7/28/2026 at 11:51:33 PM

You clearly and obviously have little or none of practical, genuine experience working with experienced Lispers, and driving your opinions from a book-read definitions rather from actual, battle-tested work.

Your line up of Lisp and Haskell next to one another is already telling - the two cultures can't be more different. Haskell culture historically have selected for people who enjoy theory for its own sake. Lisp culture genuinely prizes getting-shit-done attitude.

> What scales and works is simple and boring.

Java was exotic in 1996 and boring by 2006. If "boring" just means "widely adopted and familiar", then your notion just collapses to "what's popular is popular". True and absolutely pointless and empty.

I reckon, you're piggybacking on Dan McKinley's "Choose Boring Technology", but his point was that the innovation tokens are scarce. That is a good and true argument. But it's about organizational risk budgets, not language virtue. It says nothing about Haskell or Lisp being bad or impractical - it says being different is expensive, and you'd better be buying something with that expense. I personally disagree with that argument (in this case), because I have effectively proven that Lisp's bus factor is much smaller than even of Python or JS/TS, because modern Lisp dialects are far simpler and less convoluted and easier to train into. The experience difference and angle of opinions of two Python/JS experts can be dramatic. Having two Lispers talking "the same" language is far more plausible in practice. Not to mention that ROI from hiring a practicing Lisper (regardless of the business stack) more likely to exceed of a programmer without such knowledge.

Let me remind you that Python was considered a niche scripting toy at some point when it was the same age of [niche] Clojure today. It got boring by riding two waves that had nothing to do with the language design: web (Django/Flask) and then, decisively, being in the right place and time when scientific computing and ML needed a glue language.

Boring things survive by mass, inertia, and being unremarkable - COBOL endures because ripping it out of banks is too expensive, not because anyone loves it. Lisp survives by being remarkable - by smaller population who see the thing the majority can't, regenerating the flame across dialects out of conviction, not inertia.

What scales and works is boring, that is true. Lisp is not that, never will be, and doesn't care. What has enduring value survives regardless of adoption - that is Unix, SQL, lambda calculus itself. I'm sure you won't be arguing that any of these are impractical. Anyone can wholeheartedly accept every new rising and falling, boring COBOL and chase every new hype cycle, or just quietly keep feeding on truly everlasting ideas. Or, like in my case, nothing stands in your way of combining both - I use plenty of boring languages at work, and efficiently utilize Lisp for my personal computing. Because the darn thing just fucking works!

by iLemming

7/28/2026 at 7:44:12 PM

I disagree with this profoundly. There is no argument that Lisp in general can get you in a terrible mess. So can C, or pretty much any language (I well remember a case of 11-way multiple inheritance in C++ game code). If I were running a Lisp-based project, there would be project standards (like no exported macros without signoff, and a list of standard library dependencies), documentation requirements, and code review.

The fact that Lisp is the “programmable programming language” doesn't mean that every engineer should be inventing weird versions of while loops. What it does mean is that a skilled Lisp programmer can build a domain-specific language that substantially helps in development.

One good example of this is the Crash Bandicoot games, along with the same studio's Jax and Daxter, which were built with dialects of Lisp (yes, they had to compile the code, and take care with storage allocation, just like any other game code). Cisco hired Kent Dybvig, principal author of the Chez Scheme system, and open-sourced that software; I have no clue what they use it for, to be honest, but I assume that they had some reason for doing this. Companies using various Lisp languages have been documented in areas from fintech to quantum computing.

by vincent-manis

7/28/2026 at 7:30:46 PM

>> said: lovely, but I ain't using it at work.

Says who, you? Wrong. I use Common Lisp at work.

edit: and not just use as in a side toy, design and writing software in CL is my primary responsibility. FWIW, at a FAANG!

by oumua_don17

7/28/2026 at 7:36:20 PM

>FWIW, at a FAANG!

Do you work on ITA? Only FAANG I'm aware of using Lisp is Google.

by stackghost

7/28/2026 at 7:45:36 PM

Nope not on ITA. I work at the intersection of HW and SW. Lisp is valued for its strengths and I haven't come across any tool better to explore complex problem space. Of course, the opportunities are fewer, get filled up organically and are better suited for someone with valuable domain knowledge who can translate it into working space for a wider team using Lisp as the tool to write the spec!

by oumua_don17

7/28/2026 at 9:41:59 PM

Sounds like a dream job, tbh

by stackghost

7/28/2026 at 7:26:44 PM

I use Common Lisp at work.

by rjsw

7/28/2026 at 7:43:21 PM

Me too

by amboo7

7/29/2026 at 6:08:29 AM

do you guys need a sweeper, janitor, someone to go fetch coffee or something?

by derrida

7/29/2026 at 4:45:02 AM

Jealous of both of you

by rootnod3

7/28/2026 at 7:35:42 PM

> The very power of Lisp, macros, dynamic programming, reflection lead to a mess of an ecosystem where every single developer reinvents the wheel and nobody can understand yet another DSL invented by the next developer next to them.

Have you like looked at anything in the Clojure ecosystem because this description makes no sense of any kind. Clojure has macros but less powerful than common lisp and Clojure code in the ecosystem tends to be small and understandable.

by michaelmrose

7/28/2026 at 8:26:28 PM

It seems to me the Clojure community internalized the lesson of not writing macros unless it's really necessary more than other Lisps did.

by Zak

7/28/2026 at 10:14:59 PM

So does the community of every other dialect (Common Lisp, at least). Write a function if you don't have to write a macro, and maybe declaim the function to be inlined.

The "Lisp Curse" is a ridiculous and tired myth that can only be invented by people who have looked at the language for 5 seconds and went straight to finding an excuse to not learn it.

by kscarlet

7/28/2026 at 11:11:13 PM

Is it? I saw macros and went mad with power. I wrote a macro that could have been a function today.

But seriously, I think Clojure has a particularly strong tradition of writing clean, readable code.

by Zak

7/29/2026 at 2:14:29 PM

Clojure is actually an interesting case here, because it is hosted. So, you can write a Clojurescript macro that runs at compile time on the JVM, but emits code that runs at runtime in Javascript, e.g. instead of blindly loading and executing some JS lib code, your macro can first parse it, analyze it, and conditionally emit Cljs that changes the runtime behavior.

Use-cases for code that writes code across a host boundary are rare, yet enormously useful and really difficult to achieve without homoiconic nature of the language.

Hyperfiddle/Electric is a nice project that effectively utilizes the idea.

by iLemming

7/28/2026 at 9:32:52 PM

I believe the real issue is that Scheme, which was (through university) often the first and last contact of people with Lisp family languages, has greatly exaggerated case of "everyone reinventing the wheel", and that's before you get into educational reasons that led to people seeing very limited view of Scheme

by p_l

7/28/2026 at 8:45:00 PM

Further confirming my point on why it is the only lisp with some genuine traction out there.

by epolanski

7/28/2026 at 10:24:41 PM

I think you have very little insight to what you're talking about. The modern Lisp landscape is nothing like what it was in the 90s or even 2000s. The amount of practical shit Lispers been quietly building these days is genuinely impressive.

Have you ever seen GitHub language stats? Elisp there in the list a few points behind Lua, Elixir, OCaml and Haskell. The amount of Emacs Lisp on GitHub alone should be at least surprising. There's so much Elisp in the wild - the amount of it probably exceeds Clojure, CL and Racket combined. And let me remind you that it isn't a "general-purpose PL" - it's meant for one and only purpose.

Look at the number of package for AI-coding in Emacs¹ - 35 and counting. Mind that emacs has no central curated marketplace with the same discoverability as VSCode's. Packages live across MELPA, GNU/NonGNU ELPA, and countless personal repos, so a hand-counted 35 from a Reddit roundup is almost certainly an undercount of what exists in the wild.

And that's just one of the observable axes of Lisp. Anyone can join Clojurians Slack and scroll through #news-and-articles, just out of curiosity. It is hard to find a problem space today or a runtime where Lisp has not proliferated. Why? Because Lisp is enormously practical. Just because you convinced yourself it isn't, doesn't change a thing about reality.

---

¹ https://www.reddit.com/r/emacs/comments/1uwm3c0/the_state_of...

by iLemming

7/29/2026 at 9:40:34 AM

It's mostly hobbyism.

My point stands.

by epolanski

7/29/2026 at 1:43:19 PM

> My point stands.

Your point can stand, sit or jump around in a circle - makes no difference. Any ignorant fool can make a hollow point about things they don't fully understand and congratulate themselves in the process.

You can make similar "observation" about Linux on Desktop, mechanical keyboards, 3D printing and Raspberry Pi/Arduino tinkering and call them "hobby business".

You're essentially conflating "niche" with "unserious". By that logic Linux was a hobby OS and Git a hobby VCS - both literally started as one guy's side project, both now run the industry. Lisp is niche, not unserious: Clojure runs Nubank, Walmart, Cisco and Apple; Common Lisp ran ITA/Google Flights; and most of the features in whatever your favorite language is were Lisp ideas first.

by iLemming

7/28/2026 at 10:43:58 PM

+1 upvote

I don’t agree with you but your comment is very well thought out and doesn’t deserve downvotes.

by mark_l_watson

7/28/2026 at 9:50:41 PM

I have a complete and utterly opposite experience. I have used and shipped all sorts of solutions in dozens of different languages before getting to know Lisp. My only regret is that I have not tried learning Lisp sooner - it feels like such a walloping waste of my life.

Lisp dialects turned out to be extremely practical - I just can't even imagine doing the things I do today with Emacs in anything else. Achieving similar effects with any other tool would be enormously more time consuming and far more frustrating. Sure, it really took me years to get to that point, but even though I had already knew all sorts of other tools which I could've picked to achieve similar results - from bash/zsh, awk, sed and tcl to python, golang and a bunch of others, the way Lisp-driven Emacs lets me get there is beyond meaningful comparison. Nothing even comes close and I'm enormously proficient in vim, I spent almost a decade in IntelliJ and used tons of different IDEs before - from Delphi and Eclipse to Visual Studio and VSCode.

Clojure, at which I scoffed at some point, turned out to be an immensely pragmatic tool for dealing with data. Any kind of data - big or small. It effectively replaced jq in my toolbelt, all my API interrogations happen in a Clojure REPL today. Fetching data from psql, mysql, sqlite and sorting, slicing, dicing, transforming that data interactively, directly from my editor is an absolute delight.

Building simple web-scraping scripts with nbb driving Playwright is so much faster than using any other stack, even javascript is no longer "an obvious choice" for me, even though I spent decades learning its quirks.

Babashka has replaced any kind of bash-scripting - anything longer than three lines almost has no reason to be made in bash/zsh/fish anymore.

Anything Lua-driven is now done with Fennel. It's not even funny how a dozen-lines boilerplate of Lua can be compacted into a simple, reasonable three-liner Fennel macro. Or the way how I can connect to the Hammerspoon REPL and poke through visual elements of any app on Mac, interactively and with ease - is complete and total bananas.

Era of LLMs incidentally highlighted another enormous advantage of Lisp - when you give an LLM a true Lisp REPL, agents stop guessing and start empirically analyzing current state of things and produces working solution faster, costing far less tokens. And you get to watch it solve things interactively, e.g. I often let AI poke through our UI (via Playwright-driven Clojurescript REPL), while monitoring situation in k8s - through nrepl port, connected to Clojure REPL. It literally interactively walks the DOM, finds the selectors, clicks buttons, etc. All without restarts, complex state management and all.

"Well", you may say: "these examples exactly what I'd consider a 'hobby language' territory".

Alas, I have worked in teams where Clojure was used for shipping commercial software and I have seen truly complex projects - Cisco's infosec infrastructure and FindingCircle's complex Kafka topologies. I have met and talked to people working at Netflix, Apple, Amazon, Nubank, CircleCI, etc., and I can confidently say: your self-conviction is absolutely backwards.

Lisp-world has never been more cornucopian than today; we see the proliferation of different tools and new Lisp dialects popping almost every passing week - Jank, Jolt, ClojureDart, Squint, Coalton, Clojerl, LFE, uLisp, etc. It is frankly inconceivable to find today any platform where you can't really run a Lisp. My advice to any programmer who's aspired to become a hacker - do learn Lisp. It comes in handy. For real.

by iLemming

7/29/2026 at 2:01:53 AM

SB-MANUAL looks great—having the manual available through docstrings and SLIME should make SBCL development much more pleasant.

by leonmeng

7/28/2026 at 6:50:51 PM

If memory serves, traditionally, CCL (Clozure Common Lisp [0]) had better support for Windows but SBCL was unbeatable for speed. Is that still the case?

[0] https://ccl.clozure.com/

by WalterGR

7/28/2026 at 8:45:57 PM

SBCL works fine on Windows. It used to display a warning about fragility at startup, but that was removed in version 2.0.3, 6 years ago, after already being obsolete for quite a while.

CCL isn't very actively maintained and currently doesn't have an ARM64 port, but otherwise continues to work fine. I believe one reason people use it is that it compiles a bit faster than SBCL, at least in part by doing less optimization.

by jorams

7/29/2026 at 1:54:03 PM

Using two implementations also helps identify portability issues coming from places the standard doesn't specify behavior sufficiently.

by pfdietz

7/29/2026 at 2:20:17 PM

But CCL is very stable and works very well on the platforms it supports, sometimes in a much more compliant way than SBCL.

by GalaxyNova

7/28/2026 at 9:35:09 PM

Part of why SBCL took longer is, IIRC, that SBCL went with embedding proper SEH support into generated code (important among other things to get page fault information), whereas CCL used VEH (which is simpler to use but only available from XP onwards)

by p_l

7/28/2026 at 6:15:10 PM

Great to see the project is still going strong, I kinda want to try CL but I always feel like I don't have a great use-case.

by NeutralForest

7/28/2026 at 11:11:54 PM

An extensible LLM agent (such as https://pi.dev/ or maybe hermes) written in common lisp could be interesting. Conditions and restarts and general debugging and repair of the live system, fast startup, native execution speeds, ability to add or replace or modify core functionality on the fly, solid multi-threading support, dynamic introspection including documentation, CLOS and multiple dispatch, saved images.

by srparish

7/28/2026 at 6:24:46 PM

CL can be used pretty much anywhere nowadays, even on the web with ECL wasm compilation.

by GalaxyNova

7/28/2026 at 7:31:21 PM

Anywhere is where exactly? I've been thinking of where I could use it for like 10 minutes, and I couldn't come up with anything. Maybe a game engine or web services. It wouldn't make much sense for any kind of desktop software or command line utilities that are supposed to start really fast and have minimal runtime.

by ivxvm

7/28/2026 at 8:11:32 PM

A binary has a startup time of like 20 milliseconds, the overwhelming majority of that is setting up page tables iirc. While that's a lot for a small cli utility called in a loop, it's really nothing for a desktop application.

I wish more desktop applications could hit even a 100ms startup time. These days it feels like 5 seconds or more is the norm.

by ux266478

7/28/2026 at 9:48:01 PM

On the contrary, CLI, TUI, and desktop GUI apps are basically the only kinds of apps that benefit from CL and can live with its shortcomings. The startup time of a tool written in CL is short: you just need to load the image into RAM, run some hooks (if configured), and you're good to go. If you don't include loads of dependencies, the dumped image is also not too big, so loading it from an SSD is almost instantaneous. The startup is of course nowhere near that of a small C or Zig binary, but for larger tools it will be tolerable. For TUIs and GUIs, you can work on them interactively and see the changes in the source immediately reflected in the interface of a running instance.

Web services need either cooperative concurrency or M:N concurrency due to the "10k problem". CL only supports threads (OS-level) and promises; everything else is incomplete (eg., delimited continuations, which could be used to build coroutines) due to missing parts in the spec and some language features (eg., conditions and restarts). Of course it can be done, but it won't be as pleasant as using Elixir and Phoenix.

A game engine would work, most likely, unless it was for an MMO (again, concurrency handling). I personally never worked on one, but I see examples of game engines in CL, and they tend to look nice.

In general, single-user desktop (CLI, TUI, GUI) apps are still a good fit for CL, even today (you need to put some work into packaging the app for different platforms, but it tends to be easier to set up than it is for C or C++; harder than Go or Rust, though). It's unfortunately not as good a fit for the backend, at least not until an implementation with good support for concurrency appears. It's nice as an extension language in a larger app (through ECL), and as far as dynamic languages go, it's quite performant, so some computation-heavy apps can benefit from using CL (with SBCL). On the other hand, the ecosystem is quite small, which means dependency-heavy apps are better written in something like Python or a mixture of CL and another language (there are two-way bindings to many dynamic languages and there's mature FFI support for compiled languages).

To be perfectly honest: as much as I love Lisp, I personally gave up on trying to use it, for now. For hobby stuff, I found an even more niche solution that is more enjoyable to work with in the GUI/TUI/CLI space. It also doesn't support OS-level threads, but instead provides coroutines for concurrency - I find this side of the trade-off to be useful/beneficial more often, at least in the code I tend to write. I don't believe the time spent learning CL and other Lisps was wasted, but it's become harder and harder to justify going for CL over the past 15 years, and I finally reached a point where I stopped trying. YMMV though, and I would still give CL a chance if it's your first language of this kind (i.e., providing image-based interactive development, a dynamic language with a native compiler with inline assembly support, a multimethod-based object system, and homoiconicity/macros, etc.).

by klibertp

7/29/2026 at 8:56:14 PM

What GUI would one use with SBCL? Is it cross-platform, Linux/Mac/Windows?

by wduquette

7/29/2026 at 6:00:05 PM

>For hobby stuff, I found an even more niche solution that is more enjoyable to work with in the GUI/TUI/CLI space.

What is that solution?

by fuzztester

7/29/2026 at 6:36:22 PM

GToolkit[1] - a Smalltalk environment that's based on Pharo but replaces the UI framework and some other parts of the stack. It uses Rust through FFI to interface with and bundle native dependencies.

I don't remember the exact numbers, but when I checked, the GT+Pharo ecosystem (available packages, number of people in Discord, tools with support for the language, etc.) was ~2x smaller than Common Lisp's. It also comes with its own problems, some of which CL doesn't suffer from (the GIL, performance, startup time). But it's very fun to use and play with, which is the most important quality for me in my hobby/side-projects. :)

[1] https://gtoolkit.com/

by klibertp

7/28/2026 at 6:35:52 PM

I have a todo list longer than the Tour de France I want to tackle first!

by NeutralForest

7/29/2026 at 3:30:40 AM

I bet you do, or you will. In my case, I had been getting movie recommendations from friends and also randomly. I'd look up the flick on IMDB, metacritic, and rotten tomatoes and I'd guess whether I would like it.

I wanted something more 'algorithmic' - and more accurate.

So me and Claude build an sbcl-based Film Recommendation system. Type in a new film name, it goes to open film database OMDB, grabs the scores, and then, using films I have already rated and with a built-in tiny Neural Net, gives me a personal recommendation. It uses the OMDB data and an algo that weights those with my personal values (in half a dozen areas: overall, acting, cinematography, etc), along with a 'comments' box to note for friends / others.

The code is very well-done CL, heavily commented. The film & ratings database is stored as S-exprs, naturally, all in one file. I don't use a database as I only have a few hundred films, but maybe later I will. And that's the point -- this is a living chunk of code that I from time to time bolt in new features, or try new things (e.g. the UI is localhost:8080)

I fretted about having a 'real' project to really dig into CL for a long time, and finally, found a meaty-enough project that ends up being really useful & quite a learning (continuing learning) experience. I start it up inside emacs/sly like this:

  (ql:quickload '(:hunchentoot :dexador :yason))
  (load "s:/filmrec.lisp")
  (filmrec:start)
I have to set the omdb key:

  (setf filmrec:*omdb-api-key* "fxxxx70")
Then, every so often, I retrain the NN:

  (filmrec:retrain)
Good Luck, you'll find a project. And with an LLM buddy, you'll succeed.

by GeorgeTirebiter

7/29/2026 at 4:36:58 AM

But then again, why would I use CL for this when I can use Elixir? I’m not the original commenter but I too can’t find a use case for CL.

by nesarkvechnep

7/29/2026 at 11:06:38 AM

Well, why use Elixir if I can use Clojure/Python/Ruby/Go?

by mfru

7/29/2026 at 11:48:23 AM

In my case, Elixir is the best language, plus the BEAM, for everything that consumes from the network or listens on a socket. It's just too easy.

by nesarkvechnep

7/29/2026 at 11:52:14 AM

checkout lumbda dot com if you are into lisp / scheme

by unfirehose

7/28/2026 at 6:31:52 PM

I'm going pretty deep on Lisp on accident - can anybody give me more context on this?

by sroerick

7/28/2026 at 6:34:08 PM

more context beyond the changelog? what would you like to know?

by wild_egg

7/28/2026 at 8:58:38 PM

(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((

by DonHopkins

7/29/2026 at 11:36:46 AM

Use `C-c C-]` (`slime-close-all-parens-in-sexp`) in SLIME ;)

by vindarel

7/28/2026 at 11:11:43 PM

That’s Scheme, not Common Lisp.

I’d recommend using close parens for your code sample. Those are portable between the two.

by WalterGR

7/29/2026 at 11:25:41 AM

In Common Lisp it'd be:

  (funcall (funcall (funcall (funcall ; ...
...though I don't think that functions which return functions which return functions which return functions ad infinitum are a great idea. Simply taking a value and returning a value means you can use a pipelining operator:

  (~> some-data
    function-1
    function-2
    (function-3 _ some-other-data)
    ; ...
    function-n)

by tmtvl

7/28/2026 at 9:12:04 PM

#|))))

by dapperdrake

7/28/2026 at 5:39:29 PM

Great semver number

by arikrahman