Hi! Artyom Poptsov <poptsov.art...@gmail.com> 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’.