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’.


Reply via email to