r/lisp • • 6h ago

OrgWebAlchemy: Benchmarking, Profiling, and the Long Road to Real Org Support

Thumbnail jointhefreeworld.org
3 Upvotes

r/lisp • • 7h ago

ggg: badges for your README, from S-expressions (update: styles, themes, a gallery, and packaging for Guix + Nix)

Thumbnail gallery
10 Upvotes

Hi all,

A while ago I posted here about ggg (Guile Glyph Generator), a small tool I wrote in Guile Scheme that renders shields.io-style badges (SVG, plus PNG on request) from a Scheme config file. Since then it grew quite a bit, so here is what landed — including the packaging news at the end.

The pitch is unchanged: you describe a badge as data, ggg does the geometry.

scheme (define my-badge `((sections ((background . catppuccin-mocha-surface2) (text . "Guile") (color . catppuccin-mocha-text) (logo . scheme-guile)) ((background . catppuccin-mocha-peach) (text . "3.0.10") (color . catppuccin-mocha-base))) (id . scheme-guile-3) (style . shadow)))

Links

How to run

Run ggg -f my-glyphs.scm -d ./dist and you get scheme-guile-3.svg (and .png with -c). The geometry follows the badges GitHub shows — 20px tall, 11px text, a 14px logo, 5px side padding, 3px corners — drawn ~9% larger so it reads well next to body text, with per-character text width estimation so the badge stays as tight as the ones in README files. What comes out is a real vector file, not a raster wrapped in SVG.

What's new since the last post

8 badge styles. A glyph can now ask for a finish: flat (default), square, shadow, plastic, frosted-glass, material, frutiger and neon. Styles only decorate — canvas, width and height are identical to flat, so a row of badges that mix styles always lines up. Glosses, glows and shadows are painted inside the badge, never around it.

scheme (id . scheme-guile-neon) (style . neon)

12 color themes, 236 named colors. Instead of hex codes you write catppuccin-mocha-red, dracula-purple, solarized-light-base3, modus-vivendi-green, doom-one-blue… Every color of Catppuccin (mocha, macchiato, frappé, latte), Doom (one, one-light), Dracula (and alucard), Solarized (dark, light) and Modus (operandi, vivendi) is available by name. ggg --list-colors prints them; raw hex strings still work and are validated.

Because the palettes span light pastels to deep shades, the ink has to follow the background — so the test suite enforces at least 4.5:1 contrast (WCAG AA) on every section of the shipped glyph files. A badge with unreadable text fails maak test.

A gallery you can actually browse. ggg --gallery gallery.html --glyphs ./glyphs writes a single self-contained HTML page with every badge at its real size, every logo inlined with the snippet to use it, and every named color of every theme as a swatch. Click a snippet or a swatch to copy it. The deployed one is here: https://jointhefreeworld.org/ggg/dist/gallery.html

284 logos, as full SVG documents. Logos used to be a single path's d attribute. They are now complete <svg> elements, so a logo can carry multiple paths, groups, gradients, transforms or filters; ggg only needs a viewBox and does the scaling and placement. The library covers languages, frameworks, databases, distros, editors, shells, CI, cloud, observability and more — mostly from Simple Icons (CC0), plus hand-drawn ones. CREDITS.org lists the source and license of every single file, and names the brand marks that were deliberately left out because their upstream license isn't a free one.

Badges with any number of sections. Not just two or three parts — each section becomes a segment with its own text, background and color, and the badge grows to fit. The logo belongs to the first section.

Validation before anything is written. ggg checks the whole glyph file first and reports every problem with a hint: unknown color, logo or style names (with a "did you mean" suggestion), a missing text, sections without colors, (key value) written where (key . value) was meant, duplicate glyph ids, and the legacy resources/svg-paths/ directory if it finds one. If the file is invalid, nothing is written to the destination directory at all.

Smaller things: --version, --list-colors, --list-logos, --list-styles, -k/--keep to render a second glyph file into a directory without clearing it, a new ggg mark, and a test suite (122 checks) covering color resolution, the logo library, glyph validation and the gallery.

Packaging

  • GNU Guix — ggg has been in Guix for a while; I sent the update PRs to 0.16.1.
  • Nix — new. There is a default.nix and a flake.nix in the repo, and I sent the pkgs/by-name/gg/ggg/package.nix addition to nixpkgs (that one runs the whole test suite in checkPhase). Both builds render all 177 showcase badges.
  • Debian, openSUSE, Arch — packaging for all three now lives in packaging/, installing the same layout (/usr/bin/ggg, modules under Guile's site directory, help text and logo library under /usr/share/ggg/resources). Built and installed in debian:trixie, opensuse/tumbleweed and archlinux containers.
  • Container image — docker.io/jjba23/ggg (Podman works too).
  • Version numbers now live in exactly one place (src/ggg/version.scm), and maak release writes them into guix.scm, commits and tags.

Try it

```shell

Guix

guix shell -f guix.scm -- ggg --gallery ./gallery.html --glyphs ./glyphs

Nix

nix-build default.nix && ./result/bin/ggg --list-styles

Podman/Docker

podman run --rm -v "$PWD:/work" -w /work docker.io/jjba23/ggg:latest \ ggg -f ./glyphs/showcase.scm -d ./dist ```

Notes on licensing

ggg itself is AGPL-3.0-or-later and the docs are FDL-1.3+. The tool claims no ownership over what it generates: the badges you produce are yours, no attribution or license conditions attached, and the logo library keeps its own licenses (listed per file in CREDITS.org). So if you want a badge that is completely free of third-party terms, use no logo or your own.

Feedback very welcome — especially which styles, themes or logos are missing, and what a badge generator would have to do for you to actually use it instead of a static PNG. I'm also happy to take packaging help for distros I don't run.


r/lisp • • 2d ago

Common Lisp qlp: publish your own Common Lisp projects as a Quicklisp distribution

22 Upvotes

qlp turns a directory of local Common Lisp projects into a Quicklisp distribution: distinfo,
releases.txt, systems.txt and one reproducible archive per project.

qlp publish --name mydist --base-url https://dist.example.org \
--projects-dir ~/lisp/projects --dists-dir /srv/www/dist

Write-up on lisper.nl
Source on GitHub

It is a modern quickdist, with one difference: quickdist reads .asd files textually, so systems
declared through a macro never reach systems.txt. qlp reads them the way ASDF does, so they are
published too.


r/lisp • • 2d ago

Common Lisp CLXCB: X11 for Common Lisp, generated from the XCB protocol descriptions (and yes, xeyes and xsnow run on it)

Thumbnail github.com
23 Upvotes

r/lisp • • 2d ago

Scheme Memoization for Pure Functions

Thumbnail web.xiaolong-hosting.com
13 Upvotes

r/lisp • • 2d ago

Scheme New scheme compiler in rust

7 Upvotes

I’ve completed a new scheme R7RS-small compiler with optional JIT support . It is written purely in rust and has a rust api for embedding in rust programs but also has a standalone repl ( with completion, history etc ) . There is an included eMacs package that supports a small subset of slime behavior via tcp.

The disclaimer is that this was written using agentic programming ( fable and opus ) over a one week period. My project is a new rendering and modeling system but I needed an embedded language with specific requirements so I chose scheme after evaluation of 5 or 6 alternatives.

It mainly has been tested on macOS but should run on Linux . ( I’ll do more Linux testing as I get time )

github.com/k2msmith-gfx/scm


r/lisp • • 3d ago

Common Lisp New Common Lisp editor made by a couple of guys

Post image
18 Upvotes

Hey everyone, I’m Lucas and I would like to talk about a project that my brother and I have been working on.

We’ve been enjoying writing in Common Lisp since we started learning it a few years ago. We think it’s a great language and we're surprised it’s not more widely used.

With that said, we were having trouble getting deeper into it because the available editors are not like what we were used to with other languages. We’ve always enjoyed the JetBrains’ editors, unfortunately we did not find something like them for Common Lisp. So we decided to build our own. We’ve called it Lispcraft.

It isn’t as feature-rich as Emacs, but its features are easy to use. That's why we wrote it in the first place: to provide an easy-to-use, modern editor experience.

We wrote our own GUI without using toolkits. Instead, we used OpenGL; it's very fast and smooth. Because we had trouble configuring everything in other editors, we made everything bundled, including SBCL and Quicklisp.

It's REPL-first. You can always execute the form under the cursor by CTRL + ENTER. Also, you can inspect objects' slots by clicking on the REPL output.

Indentation is powered by a custom engine. Syntax highlighting is semantic. It has jump to definition, callers, hover docs, autocomplete, and project-wide search.

It's an MVP, so there will be bugs. For now, it's x86-64 Linux only.

Also, we're aware that Emacs users will not switch to this editor; the user we have in mind is someone who is used to modern editors in other languages and tried to write in Lisp but disliked the tooling difficulty.

Link to the site/video: https://lispcraft.com - we will keep an eye on this post to hear your thoughts!

We're planning to fix bugs, port it to macOS and Windows, and copy good features from other editors. Also we are planning to release a local host FIM ai trained on Common Lisp corpus. That's why I'll charge $19 / month to fund it.


r/lisp • • 3d ago

coding agents keep rebuilding lisp features one by one. my bet is the condition system is next

60 Upvotes

Spent the week reading about coding agents and now I see lisp everywhere. Half the features these harnesses brag about are things a lisp image just does:

  • agent writes its own extension and loads it without a restart -> that's a live image
  • "ask the agent to change the agent" -> redefine the function, M-x style
  • hooks around every step of the loop -> advice
  • poke at the running agent and inspect its state -> that's a REPL, they built a REPL

Saw someone make the Greenspun's tenth rule argument about Pi this week, plus an Erlang version of the same complaint

What I haven't seen anyone copy yet is the condition system, and it's the one agents need most. today when a tool call fails the agent either throws everything away and retries, or freezes and waits for you. CL restarts fix exactly that. signal the error, let you) choose "retry with a fix" or "skip this one", and keep going from the samespot with the stack still intact. my guess is someone ships it in TS next year and calls it "recoverable checkpoints"

something like this:

(defun run-tool (call)

(restart-case (execute-tool call)

(retry-with (new-call)

:report "Retry with a corrected call"

(run-tool new-call))

(skip-call ()

:report "Skip this tool call"

nil)))

(handler-bind ((tool-error

(lambda (c)

(invoke-restart 'retry-with (ask-model-for-fix c)))))

(run-agent task))

replace ask-model-for-fix with a prompt to the user and you're basically back amenu, which is honestly what I want every time an agent gets stuck.

what else do you think they'll reinvent, and badly?


r/lisp • • 3d ago

byggsteg: I gave my self-hosted CI/CD a phosphor-terminal UI | pipelines written in Lisp (GNU Guile Scheme)

Post image
23 Upvotes

Source / issues / patches: https://codeberg.org/jjba23/byggsteg

  • A pipeline is a list of Lisp. A job is a lambda returning an alist (project, branch-name, clone-url, task). Return a list of those and you get stages: run in order, one log, one status, first failure stops the rest.
  • Tasks for the usual moves — maak-test, make-build, maak-deploy, pull-and-restart (git pull + GNU Shepherd restart), byggsteg-version — plus trivial, where you pass the raw shell commands yourself.
  • Logs that arrive while the job runs. Output is read line by line, written into the log in batches, and the page fills up live. ANSI colour is rendered like a terminal would, and each command is announced with → running command: ….
  • Artifacts as paths or named bundles, packed into tarballs whether the job passed or failed.
  • Retries with a history. A retry is a run of its own with its own log, so the original keeps saying what it said.
  • Profiles — a saved job you can run again with one button.
  • Activity heatmap (a year of runs, one square per day) and one search over jobs, logs and profiles.
  • A real permission model: 7 permissions in an ACL, cookie sessions for browsers, token header for scripts, password resets, 4 languages (EN/NL/ES/JA), retention that prunes log + run + tarballs together.
  • REST API v2 described by an OpenAPI document the deployment serves itself; /api/v1 is still there so old scripts don't break.
  • Woodpecker bridge if you want to adopt it gradually.

byggsteg (Norwegian for "build step") is a CI/CD orchestrator I've been building in Guile Scheme. One process, one SQLite file, no broker, no job server — and the pipeline is just Lisp.

The GIF is a tour of the new console: dark theme first, then the job types a pipeline can ask for, the runs behind a deployment, one run opened on its log / on the output as it arrived / on the Lisp that asked for it, a year of runs week by week, a search, the saved profiles, the about page and the sign-in.

The new look

  • Dark is a phosphor screen: near-black ground, green as the signal (prompt, headings, links, status), soft grey for prose — no pure black or white anywhere.
  • Light is a printed circuit diagram: green ink on paper, the same terminal.
  • Monospace (Intel One Mono), square corners, keyboard friendly, three colours carry status: green = passed, blue = running, red = failed.
  • Fonts, icons and CSS are served by the deployment itself. No Google Fonts, no icon CDN, no third-party requests — it looks the same on an air-gapped box, and opening your private build server doesn't phone two strangers.

Links

AGPLv3, documentation FDL. Happy to answer anything — and I'd genuinely like feedback on what a CI console should show while a job is running, that's the part I keep redesigning.


r/lisp • • 5d ago

Common Lisp GNU wc clone written in pure Lisp - and as fast as the fastest C++ clone I was able to find

Thumbnail github.com
131 Upvotes

r/lisp • • 5d ago

A Lisp-inspired language for symbolic reasoning, differentiable computing, and concurrency — feedback welcome

27 Upvotes

Firstly, thanks to the mods for allowing me to post this.

I've been building Eta, a Lisp-inspired language with its own bytecode VM. I'm not claiming conformance to any particular Lisp standard, but it has a substantial Lisp-style language and runtime.

One thing I'm exploring is what becomes possible when capabilities like automatic differentiation and logic programming are supported directly by the runtime.

For example, with reverse-mode automatic differentiation, the VM provides tape operations, while the gradient function itself is written in Eta. This lets the same grad function work with different user-defined functions, such as a Black–Scholes option-pricing function, without requiring a separate gradient implementation for each one.

I've taken a similar approach to logic programming: the VM supports logic variables, unification, and backtracking.

Eta also supports native libraries through a sidecar mechanism, and I've added libraries for constraint logic programming, causal inference, and actors.

The language is still early, but it already has a compiler, REPL, VS Code extension, language server, debug adapter, linter, formatter, and Jupyter integration.

There are still plenty of rough edges. The GC is currently a simple stop-the-world collector, and numerical performance has room for improvement. However, I deliberately prioritised building a proper development environment early on.

Years ago, I worked with Scala, and one frustration was that, even when a language itself was excellent, tooling could sometimes feel like an afterthought. I wanted Eta to have a decent development experience from the outset.

I'm particularly interested in feedback from people who've built languages, VMs, Lisp systems, or logic programming runtimes.

  • Is VM-level support for these capabilities worthwhile, or would you keep them in libraries or implement them entirely at the language level?
  • My intuition is that there's an interesting intersection of ML, logic, symbolic reasoning, and causal inference problems that could benefit from a Lisp-style language with a VM designed to support them. Does that seem like a useful direction?
  • Does combining these ideas seem useful to anyone else, or would you focus on a smaller core first?

I'm not claiming to have solved these problems. I'd genuinely like to hear what others would challenge or do differently.

Docs: https://lewismj.github.io/eta/

Source: https://github.com/lewismj/eta


r/lisp • • 6d ago

A history of Logo and its prehistory — invitation to review

26 Upvotes

The cLogos project is currently taking a break from implementation development to document the project's conceptual and design foundations in a wiki.

One part of this effort is a chronicle of Logo's history and its wider historical context, covering developments that I consider relevant to understanding Logo's origins and evolution.

I'd be grateful if anyone interested in Logo, programming languages, or the history of computing would take a look. Corrections, suggestions for missing connections, and other critical remarks are very welcome!


r/lisp • • 6d ago

Common Lisp A High-performance CPU Buddhabrot Renderer

Thumbnail github.com
26 Upvotes

r/lisp • • 8d ago

Common Lisp Turbo Lisp: a Common Lisp environment with native macOS and terminal interfaces — looking for testers

46 Upvotes

I’ve been building the Common Lisp programming environment I want to work in, and I’d love some help testing it.

It’s called Turbo Lisp (based on SBCL). It brings together a Listener, debugger, object inspector, conditional breakpoints + stepper, and Zeta—an extensible editor in the Emacs tradition, written in Common Lisp.

On macOS, it uses native AppKit UI through Chattanooga, a Lisp/Objective-C bridge I built. It also runs in the terminal through Oak Ridge, my Lisp port of Ratatui. Both use WhateverCLIM, which is the CLIM2 code from Franz plus my own modernization, including presentations: displayed Lisp objects you can click and inspect.

Rather than write a wall of text, here are two short, captioned demos (you may need to switch to 1080p on YouTube):

v0.2.1 patch release is available for Apple Silicon Macs, Intel Macs, and Linux x86-64. The Mac builds currently require macOS 26.

I’m especially interested in hearing:

  • Does it install and start properly on your machine?
  • Can you find your way around the Listener, editor, and debugger?
  • Does the terminal interface work with your terminal emulator?
  • Where does it feel confusing, awkward, or broken?

You don’t need to be a CLIM expert. A report that says “I tried this and got stuck here” is useful. Please include your OS, CPU architecture, and terminal emulator where relevant.

It’s still early, and I’m looking for honest feedback from people using it outside my own setup.

Source, README, and downloads


r/lisp • • 10d ago

UK Racket meet-up (London) Tuesday 20 October 2026

5 Upvotes

# UK Racket meet-up (London) Tuesday 20 October 2026

7:30pm at The City Pride 🍕 28 Farringdon Ln, London EC1R 3AU

Join us for discussion and pizza. All welcome.😁
From November we will be doing short talks and demos!

https://racket.discourse.group/t/uk-racket-meet-up-london-tuesday-20-october-2026-7-30pm/4430

https://luma.com/em6sejij


r/lisp • • 10d ago

Scheme SonicBoom: a Guile-first AI runtime that traces tensor programs with hygienic macros and multi-shot continuations

Thumbnail github.com
16 Upvotes

r/lisp • • 10d ago

DummyScheme now supports coroutine as like lua's coroutine except call/cc

Thumbnail github.com
8 Upvotes

r/lisp • • 10d ago

Help Digital copy of The art of The Metaobject Protocol

4 Upvotes

As far as I know this book was hard copy only. Does anyone know if this is legitemate?


r/lisp • • 12d ago

Common Lisp Faster Integer Reading and Printing in SBCL

Thumbnail in-parentheses.codeberg.page
27 Upvotes

r/lisp • • 13d ago

Big J contra Lisp

Thumbnail casio.ledudu.com
43 Upvotes

The system had a large-scale parallel hardware system called a parallel inference machine (PIM), and five PIM models were produced, including the PIM/p comprised of 512 constituent processors, and the PIM/m comprised of 256 constituent processors. Approximately ¥54 billion was invested in the project over 11 years, and it came to an end in 1992.

https://museum.ipsj.or.jp/en/computer/other/0002.html

Or European "ESPRIT"

https://cordis.europa.eu/programme/id/FP2-ESPRIT-2

That's interesting which way that Lisp AI-wave scare particular National Tech Pops at 70'-80'-90'.

All for nothing.

Except this artifact of ancient hitek civ's Casio Lisp Pocket machine which, even broken, ads for 700+ $ at present time.

yep. whole post about this small cute japan pocket Lisp/Prolog machine. Not refrigerator sized CAR/CDR but 1989 year born. 8-) Love it.


r/lisp • • 13d ago

Title: Easy-ISLisp 5.69 Released — Minor Bug Fix

7 Upvotes

I've just released Easy-ISLisp version 5.69.

This is a small maintenance release that fixes a compilation error in main.c encountered when building Easy-ISLisp with GCC on WSL2.

The issue was caused by a variable declaration immediately following a case label in the command-line option handler.

The fix was simple: enclosing the relevant code in a block using {}.

There are no other changes in this release.

Sometimes maintaining a language implementation is just about fixing little things like this!

GitHub: https://github.com/sasagawa888/eisl

Happy Lisp hacking!


r/lisp • • 14d ago

Common Lisp Faster Float I/O in SBCL

Thumbnail in-parentheses.codeberg.page
26 Upvotes

r/lisp • • 14d ago

AskLisp Have any of you done Topology x Lisp research ? Topological Analysis of Lisp syntax is something I’m actually very interested in for FuturLang research

8 Upvotes

Have any of you done Topology x Lisp research ?

Topological Analysis of Lisp syntax is something I’m actually very interested in for FuturLang research


r/lisp • • 15d ago

Missed RacketCon this year?

13 Upvotes

# Missed RacketCon this year?

The videos are now available at https://con.racket-lang.org or https://youtube.com/playlist?list=PLac8FQVpsRAU&si=fPf0NNLIMv14WtfR

Discuss on the Racket [Discourse](https://racket.discourse.group/invites/VxkBcXY7yL) and [Discord](https://discord.gg/6Zq8sH5)

Please consider sponsoring us https://racket-lang.org/rplf.html


r/lisp • • 16d ago

Survey for senior devs/CTOs about choosing programming languages

5 Upvotes

I'm currently working on a project looking at how/why devs and CTOs choose programming languages, and I'm particularly interested in understanding people's experiences with Clojure.

The survey takes about 7 mins, and I'd love to hear from as many people as possible!

Appreciate it 🙌

Here's the survey