nrepl 2026-07-03

it's interesting to see cljs.test support land! it's a shame there's no real way to detect support for it via the describe op.

I'm basically thinking that op: describe should somehow allow a piggiebacked session to report supported-ops: [eval, load-file] and leave out test (in older versions it would have, anyway)

Basically: provide feature detection that reflects what the session supports independently of the whole stack.

Now cider-nrepl ops have uniform responses if they don’t support ClojureScript, so I’m hoping this will help with the discovery.

You mean if they are attempted they will respond with something? I think I saw a change relating to that.

Yeah, exactly.

To me this seemed like the most reliable way to handle this, as I didn’t want clients to have to guess what works and what doesn’t.

Something feels wrong about trying and then falling back on failure when we have describe right there.

Other than "slower than just skipping" there's no real rational argument there.

In cider.el did test running just not work in cljs? in fireplace/etc. we've had fallbacks which eval'd code with a custom report-var for cljs.

There wasn’t an eval fallback for this in CIDER. In general I’ve trying to slowly phase those out, as they didn’t play well with some Clojure-like environments with different namespaces. I guess there’s a better approach than the current one for that particular problem, but it’s still an improvement over how things were. Perhaps one day running tests will be supported by nREPL itself and then we’ll have to think more about the API and UX.

Yes, some of the clojureish environments I have noticed behave... wildly 😄

Fireplace & my new plugin (campfire) both send a bit of pre-amble to load the namespace (like how cider sends (ns blah (:require ...))) and then you find out that some of these environments end up clobbering sessions when you do that and all sorts breaking *1, or just not preserving the state, all sorts.

let-go was irritating to support. I imagine you ran into some of the same things I did there.

Anyways, should the nrepl spec evolve so that piggiebacked/nested envs can properly report what they support? Nothing will fix that if you end up pointed at an older version ofc, but we can just gate on the versions in describe for now.

Hard to fit Piggieback in the nREPL spec IMO, as it’s just a middleware, unless I’m missing out on something.

I do have something to release, a couple people at work are using it... but I've not looked at the code at all 🙈 It's >6kloc at this point, so I'm tempted to try and start from scratch. But it's a vim plugin, lua-native fireplace-like nrepl client. It works annoyingly well for something fully vibed.

This is the way! 😁 I’ve vibe coded a lot of small projects for personal use in recent months and they all have been quite useful for me in practice. (especially the one for filing my annual tax declaration 😄 )