Hi!
Artyom Poptsov <[email protected]> skribis:
> * Changes in version 0.8.0 (2015-08-04)
> ** Implement port forwarding
> ** Add distributed forms
> ** Require libssh 0.6.4 or 0.6.5
> ** New module: (ssh tunnel)
> The module provides hi-level procedures for SSH tunneling.
> ** New module: (ssh dist)
> The module provides distributed forms of 'map' and 'eval', as well as
> remote REPL (RREPL) implementation.
> ** New module: (ssh dist job)
> Low-level API for distributed jobs.
> ** New module: (ssh dist node)
Maybe this went unnoticed, but these are really awesome features!
A couple of comments on ‘with-ssh’. I think the manual should
explicitly remind people that the REPL server must already be running on
the remote machine. I wonder if it would make sense to offer an
alternate option where the calling machine invokes ‘guile’ on the remote
side and talks to it on stdin; this could simplify some use cases.
WDYT?
I tried something along the lines of the example that’s in the manual:
(let ((session (make-session #:user "ludo" #:host "xxx")))
(connect! session)
(userauth-agent! session)
(with-ssh (make-node session)
(use-modules (ice-9 q))
(list 1 2 3)))
This returns the 4 values, including '(1 2 3) as expected.
However, this:
(let ((session (make-session #:user "ludo" #:host "xxx")))
(connect! session)
(userauth-agent! session)
(with-ssh (make-node session)
(use-modules (ice-9 ftw))
(scandir "/")))
returns only two values, the language and the module.
Am I missing something?
Thanks,
Ludo’.