I created 2 libs: 1. https://github.com/vlaaad/ghosttyfx — pure Java library that provides a JavaFX terminal view using https://github.com/ghostty-org/ghostty 2. https://github.com/cljfx/ghosttyfx — Clojure library that provides a GhosttyFX wrapper for https://github.com/cljfx/cljfx
The Problem Persistent Data Structures use structural sharing to create an efficient in-memory representation, but these same structures can be a problem to serialize/deserialize: 1. the shared parts are duplicated in the serialised output which can lead to a large and inefficient representation. 2. when the process is reversed, deserialization doesn't recreate the original, shared, efficient in-memory representation because sharing information was lost in the original serialisation. The Solution - de-dupe 0.3.0 Originally written in 2015, yes, 11 years ago, and now freshly modernised for both clj and cljs so we can use it as part of the wire protocol for https://github.com/day8/re-frame2/tree/main MCPs https://github.com/day8/de-dupe
this is a nice bottling-up of a nice solution 👍 have done similar things for GC happiness reasons, receiving heavily indexed structures over wire
Is it used for client server data transfer as well?
Oh nice! I was having a similar issue with something I've been working on. Maybe this is my solution.
https://github.com/flow-storm/clojure 1.12.5 - A fork of the official Clojure compiler that adds support for execution tracing. • Nothing new, just rebases over the latest stuff in Clojure 1.12.5
I just open-sourced Winze — a persistent memory system for AI coding agents: https://github.com/coconutpalm/winze . It's both an MCP server and a native desktop application that lives in your system tray; built in Clojure using Clojure Desktop Toolkit (https://github.com/coconutpalm/clojure-desktop-toolkit). Babashka powers the MCP server.
The problem: every Claude Code session starts with a blank slate. No memory of what you decided last week, why you rejected an approach, or what's half-finished. Winze fixes this by indexing your planning docs (plain Markdown in a Plans/ directory) with vector embeddings, so an AI can recover full project context in seconds across sessions and projects.
The native desktop UI — as-you-type semantic search, rich Markdown editor, system tray icon — is a pretty thorough real-world CDT case study if you've been meaning to dig into it.
Babashka acts as a lightweight proxy to the long-lived JVM server process, keeping startup instant and the JVM warm between agent sessions.
I'm also in the job market for AI-centric roles if anyone is looking.
https://github.com/clj-easy/graal-build-time 1.0.6 - Initialize Clojure classes at build time with GraalVM native-image Highlights from the https://github.com/clj-easy/graal-build-time/blob/main/CHANGELOG.md#v106: • now supports namespaces with chars like + (thanks @borkdude!) Drop by #clj-easy should you have any questions.