Return a list of extension instead of alist
extension: Improve describe operation
evaluation: Handle zero-valued continuations
Asynchronous Reliable Extensible Sleek RPC Server for Guile. First of all it's a library providing a lot of tools for evaluating and exploring the code, from simple reflection API to interruptible asyncronous evaluation. In addition to that it provides an async RPC server implementation based on nREPL protocol and can be used for programmable interactions with a running guile processes, for implementing REPLs, IDEs, test runners or other tools. It also can be potentially used as a backend or library for LSP server.
WARNING: It's in early stage of development, the API is a subject to change.
guile-ares-rs
was previously known as guile-nrepl
(because it started
as just nREPL implementation in Guile Scheme). It was renamed to
avoid any confusion with network/socket REPL, guile-ares-rs
is not a
usual REPL, it's actually not a REPL at all, it's an RPC Server,
however it's possible to implement REPL-like experience with it (and
respective client).
It's intended for use with Arei IDE, but you can use it with other generic nREPL clients.
The are multiple ways to utilize Ares RS, but most straightforward is to spawn a standalone server and connect to it from a client (Emacs Arei for example):
guix shell guile-next guile-ares-rs -- \ guile -c '((@ (ares server) run-nrepl-server))'
Don't forget to add your project source code and other dependencies to load path.
It depends, on fibers, and on guile-next (custom textual ports), tests are executed with gider.
Send patches to rde-devel mailing list in format:
[PATCH guile-ares-rs 0/3] SUBJECT-HERE
.
Send feedback to rde-discuss.
Arei and Ares 1.0 milestone.
One of the reasons this project started is unfortunate missbehave of current REPL soultions in different situation and here is a list of some of them:
,i
in REPL, go to definition hangs up.Q: Can I use guile-ares-rs with an existing network REPL?
A: Theoretically it's possible to upgrade existing REPL to guile-ares-rs, see bootstrap and infect modules (they can be not implemented yet).
Thanks for inspiration, help, support and motivation to Jos´e Antonio Ortega Ruiz, Nikita Domnitskii, Maxime Devos, Andy Wingo, Bozhidar Batsov, Andrey Listopadov, Dmitrii Bogdanov, David Thompson, Dmitry Polyakov.
Created: 2024-07-26 Fri 15:30