REPL fixes + an nREPL server for editor-connected dev
The line REPL was broken (read-line called nil — the __stdin-read-line host seam the clojure.core *in* reader drives was never implemented on Chez) and didn't load the project, so (require '[some.lib]) failed. Now: - __stdin-read-line reads a line from stdin (get-line); read-line / read / the REPL work. - repl resolves the project first (deps on the roots, native libs loaded), so libraries are available — same context a run gets. - jolt.nrepl: a jolt-native nREPL server (bencode over a loopback jolt.ffi socket) speaking the real protocol — clone / describe / eval / load-file / close, with stdout capture, :ns-scoped eval (in-ns; binding *ns* doesn't drive load-string resolution here), and real error text. 'joltc nrepl [port]' applies the project then serves; writes .nrepl-port. Editors (CIDER/Calva/Cursive) connect and develop live; project libraries load in the session. - ex-message returns nil for raw Chez conditions, so jolt.host/condition-message exposes the condition text; the REPL and nREPL surface it instead of an opaque #<compound condition>. Why native, not real nREPL: nrepl.server is welded to java.util.concurrent executors, two compiled Java helper classes, a DynamicClassLoader, Compiler internals and a JVMTI agent — not faithfully shimmable. The wire protocol, which is what clients depend on, is small and implemented directly. Runtime .ss + jolt-core, no re-mint. Full gate green.
This commit is contained in:
parent
9a60922d61
commit
d33277c0b2
5 changed files with 220 additions and 2 deletions
|
|
@ -61,7 +61,8 @@ bin/joltc run -m NS [args] # resolve deps.edn, load NS, call its -main
|
|||
bin/joltc run FILE # resolve deps.edn, load a Clojure file
|
||||
bin/joltc -M:alias [args] # run the alias's :main-opts
|
||||
bin/joltc -A:alias [args] # add the alias's paths/deps, then run the rest
|
||||
bin/joltc repl # start a line REPL
|
||||
bin/joltc repl # start a line REPL (project deps + native libs loaded)
|
||||
bin/joltc nrepl [port] # start an nREPL server (default 7888) for editors
|
||||
bin/joltc path # print the resolved source roots (':'-joined)
|
||||
bin/joltc <task> # run a deps.edn :tasks entry
|
||||
```
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue