r/Common_Lisp

What are the active/good Lisp communities?

Especially now that I'm working on a larger project and may have more moderate to advanced questions. However, most of the stuff on the sidebar is deprecated, 404ed, or dead.

Where would I look towards now?

reddit.com
u/IronicRobotics — 11 days ago

cl-ssh: pure common lisp SSH

I always missed this in CL, but thought it too much work to add it. However, since vibe-coding has improved over the past year, I thought I'd give it a go and see how powerful opencode + claude sonnet 4.6 with medium reasoning, and a little gpt 5.5 with medium reasoning.

It took me a little more than a full night and ~$47 to vibe code a pure CL SSH client library. It at least supports rsa & ed25519 keys with and without passphrase, or simple password authentication. On the client end, interactive shell is supported and simple command running. I've not added multithreading yet, because I have no use for it currently.

Enjoy!

github.com
u/Cultural_Dark3846 — 10 days ago

How to improve this terribly slow reading?

I was reading TaDa and want to read the lineitem.csv example in Common Lisp, so I wrote:

(with-open-file (stream file)
  (loop :for line := (read-line stream nil) :while line
        :summing (parse-integer (nth 4 (str:split "|" line)))))

However, on my computer, it took about 17sec to run!

Maybe it was my fault, so I change to cl-csv:

(let ((sum 0))
  (cl-csv:do-csv (row #P"lineitem.csv" :separator #\|)
    (incf sum (parse-integer (nth 4 row))))
  sum)

and it is even worse...

Profiling shows that

           Self        Total        Cumul
  Nr  Count     %  Count     %  Count     %    Calls  Function
------------------------------------------------------------------------
   1   9903  80.0   9903  80.0   9903  80.0        -  foreign function read
   2    414   3.3    414   3.3  10317  83.3        -  foreign function __semwait_signal
   3    218   1.8   1878  15.2  10535  85.1        -  cl-ppcre:split
   4    182   1.5    404   3.3  10717  86.5        -  (lambda (string cl-ppcre::start cl-ppcre::end) :in cl-ppcre::create-scanner-aux)
   5    147   1.2    820   6.6  10864  87.7        -  (sb-pcl::emf cl-ppcre:scan)
   6    131   1.1    159   1.3  10995  88.8        -  sb-pcl::check-applicable-keywords
   7    122   1.0    122   1.0  11117  89.8        -  (lambda (cl-ppcre::start-pos) :in cl-ppcre::create-char-searcher)
   8     98   0.8    509   4.1  11215  90.6        -  (sb-pcl::fast-method cl-ppcre:scan (function t))
   9     88   0.7    103   0.8  11303  91.3        -  (lambda (sb-pcl::.arg0. sb-pcl::.arg1. &rest sb-pcl::.rest.) :in "SYS:SRC;PCL;DLISP3.LISP")
  10     83   0.7    121   1.0  11386  91.9        -  sb-kernel:ub32-bash-copy

This is really wired.

Notes: I was running SBCL 2.6.3 on macOS 26 (MacBook Air M2). The lineitem.csv (~=750MB) is generated via (duckdb):

.bail on

ATTACH IF NOT EXISTS ':memory:';
USE memory;

INSTALL tpch;
LOAD tpch;
CALL dbgen(sf = 1);

.shell rm -f lineitem.csv

COPY (SELECT * REPLACE (l_quantity :: bigint AS l_quantity)
      FROM lineitem)
TO 'lineitem.csv' (delimiter '|', header false);
u/lucky_magick — 6 days ago
▲ 22 r/Common_Lisp+2 crossposts

I updated my game made in common lisp, now the game uses sdl2 instead of terminal, the AI can remember topics, track the player's emotional tone, notice repitition and ask better follow-up questions, there is also 13 achievements for the players to collect, it was a wide update, the source code is there for download.

u/Bruno2456 — 13 days ago

Notes missing in my copy of Lisp Metaprogramming?

I just got a copy of LISP Metaprogramming: A Hands-On Guide to Macros, Syntax Transformation, and DSLs by James C. Shepherd. It's a softcover book with 179 pages and cover art of a train made of a colorful collection of circuit board wires.

For the life of me, I can't find where the endnotes are. They aren't footnotes, nor at the end of the chapters, nor end of the book (either before or after the appendixes).

Anyone have a copy of the book that has the notes?

reddit.com
u/thebhgg — 6 days ago

CL-CODEGRAPH - a live Knowledge Graph of your Common Lisp code, built from the running SBCL image.

cl-codegraph: https://sr.ht/~hajovonta/cl-codegraph/

> Given a package loaded in the SBCL image, builds and maintains a graph of its symbols, class hierarchies, method specializations, call relationships, and metadata — all without parsing source code. Includes a live Emacs integration that shows code intelligence as you navigate.

Screencast: https://drive.proton.me/urls/JE5EQ6KNMR#tN7CcgN96YL7

Seen on: https://mastodon.online/@hajovonta/116501259663689389

reddit.com
u/dzecniv — 1 day ago

File compilation without a file

Greetings!

I know one can use COMPILE to compile a function for later use in the current image, and COMPILE-FILE to read a file, compile the code in it, and save a loadable version of the code (FASL).

I'm working on a system that generates Lisp forms programmatically, however it does so outside of the usual read-compile-load cycle. You can imagine a DSL with its own syntax, that is mapped to Lisp forms.

Now, at some point I would like to compile the generated code "as if" it was normal Lisp code, and save it into a FASL. I know I can PRINT it to a temporary file and call COMPILE-FILE on that, however, it feels like a suboptimal solution.

Perhaps there's no portable way of doing that, but I would be happy with implementation-specific code, and the temporary file hack as a fallback.

reddit.com
u/Suitable_Click_3967 — 10 hours ago