announcements 2026-08-26

Carpaccio: borrow-checked native programming from Clojure 🐟 I've been experimenting with embedding https://www.eriksvedang.com/2026/08/10/metacarp_by_veit_heller.html from my friend Veit Heller as a low-level Clojure DSL. Carpaccio lets you write affine/borrow-checked native functions in familiar Clojure syntax, compose them with Rust crates, and invoke a larger native kernel across one low-overhead Panama boundary.

clojure
(defshared Particle [position :- Double])

(defcarp shift [dx :- Double] :- Double
  (Double/* dx 2.0))

(defnative advance!
  [particle :- (Ref Particle), dx :- Double] :- Unit
  (Particle/set-position!
    particle
    (Double/+ (copy (Particle/position particle))
              (shift dx))))
Code and examples: https://github.com/replikativ/carpaccio - I am interested in how people would like to dynamically program and push safe native code out of the VM and/or engage with Rust.

πŸŽ‰ 10

Functions in the same native generation call each other directly, shared records can cross the JVM/native boundary without copying, and the resident compiler exposes ownership analysis as data. The Rust importer generates stable-C-ABI adapters for supported crate APIs, so Rust calls can remain inside the native kernel rather than bouncing through the JVM. The project is early and experimental, but the Clojure REPL β†’ https://github.com/replikativ/metacarp Meta-Carp β†’ C/Rust β†’ Panama path is working, including versioned native reloads without restarting the JVM. On the way I also wrote a https://github.com/replikativ/carp-cbor and https://github.com/replikativ/carp-nrepl library for Carp.

πŸŽ‰ 1

haha nice, i think they should hear about this on the Carp discord

πŸ‘ 1

I’m very interested in using rust to let native code underpin stuff in both jvm and js via squint. carp could be a neat way to simplify that too

@wcohen Yes, I also think this. Which libraries would you like to use?

I’m working on some of the gis ecosystem in rust. It’s not quite ready for other languages yet β€” I’m working on getting them to add some additional bindings so non-rust-users can use it

Nice. I am working atm. to make Carp fit Rust's memory model, Carpaccio creates automatic bindings because of this, which I think is optimal to "script" Rust. I added the nrepl support, so you can basically use Carp with an LLM and clj-nrepl-eval to iterate on Rust-based prototypes with Clojure iteration times.

That is at least one potential I see. (argh my German capitalization got me...)

Lovely. I’ll poke around!

Working with Veit atm. to upstream the Metacarp patches for this, too. He is a super nice guy.

First release of https://glitter-uikit.b12n.app An AppKit renderer for glitter, so a Replicant-style Clojure UI drives native macOS views instead of GTK4. Jolt, so Clojure on Chez Scheme rather than the JVM. β€’ The pure half of an app is renderer-agnostic - the 7GUIs Temperature Converter and Flight Booker port from the GTK4 sibling with their domain logic unchanged, only the view and main differ β€’ 19 widget tags mapped onto AppKit: NSButton, NSTextField, NSStackView, NSSlider, NSPopUpButton, NSStepper, NSProgressIndicator, NSSwitch, NSScrollView and the rest β€’ 8 interactive demos, 6 of them 7GUIs tasks - one further than glitter itself, which stops at 5 β€’ 8 live-AppKit smokes that mount real windows and assert against real view state, never against the renderer's own bookkeeping β€’ No suppression set, by design: AppKit fires no action or delegate callback for a programmatic setter, so the machinery glitter.gtk needs is absent here - and a smoke asserts the absence β€’ MIT licensed, own copyright; ported from glimmer-uikit with file-by-file provenance in NOTICE

πŸ”₯ 7
πŸŽ‰ 10