Port is a new minimalist Emacs client for Clojure's built-in prepl protocol, created by the CIDER maintainer after exploring prepl support within CIDER proved too architecturally complex. Unlike CIDER, which is built on nREPL, Port connects directly to a stock Clojure JVM with no external REPL server required. The post explains the key architectural differences between prepl and nREPL (no bencode, no middleware, no sessions, no ops, no request IDs), and how Port works around the lack of request correlation using two sockets per session and a bootstrap form. Version 0.1.0 is available with basic REPL features including interactive evaluation, stacktrace navigation, find-definition, and doc helpers. The author concludes that nREPL remains the better protocol for editor tooling, but found the exercise educational.

6m read timeFrom batsov.com
Post cover image
Table of contents
Scope, or what Port isn’tA few architectural notesZero dependenciesWhat’s there in 0.1Closing thoughts

Sort: