guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[ANN] Guile-SSH 0.8.0 released


From: Artyom Poptsov
Subject: [ANN] Guile-SSH 0.8.0 released
Date: Tue, 04 Aug 2015 02:03:07 +0300
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (gnu/linux)

Hello Guilers,

I'm pleased to announce Guile-SSH 0.8.0:
  https://github.com/artyom-poptsov/guile-ssh/releases/tag/v0.8.0

A signed package can be found here:
  - ftp://memory-heap.org/software/guile-ssh/guile-ssh-0.8.0.tar.gz
  - ftp://memory-heap.org/software/guile-ssh/guile-ssh-0.8.0.tar.gz.sig

Guile-SSH is a library that provides access to the SSH protocol for GNU
Guile programs.  Guile-SSH 0.8.0 API is sufficient for building of SSH
servers and SSH clients.  In addition, it provides key management
facilities that allow to read and manipulate private and public keys,
and generate new keypairs.

Note that this release breaks bawkward compatibility with Guile-SSH
0.7.2 due to deletion of 'channel-open-forward/reverse' procedure from
(ssh channel) module (I suspect the procedure had no use anyway).  Aside
From that, an application that worked with Guile-SSH 0.7.2 likely will
work with Guile-SSH 0.8.2 with little or no modification.

The release includes an experimental distributed forms module that
contains procedures for interaction with remote REPLs (RREPLs) over SSH.
Here's an example of evaluation of scheme code on a RREPL by means of
'with-ssh' procedure:

--8<---------------cut here---------------start------------->8---
(use-modules (ssh session)
             (ssh auth)
             (ssh dist))

(let ((session (make-session #:user "alice" #:host "www.example.org")))
  (connect! session)
  (userauth-agent! session)
  (display (with-ssh (make-node session)
             (gethostname)))
  (newline))
--8<---------------cut here---------------end--------------->8---

And here's an example of 'dist-map' usage.  In this example, we're
spreading the job of multiplying the list of numbers to two RREPLs:

--8<---------------cut here---------------start------------->8---
(dist-map (list node-1 node-2)
          (lambda (n) (* n n))
          (make-list 10000 500))
--8<---------------cut here---------------end--------------->8---

Also there is a new (ssh tunnel) module that provides procedures for
making of SSH tunnels.  As a practical example, one could make a
Guile-RPC[1] call over an SSH tunnel as follows:

--8<---------------cut here---------------start------------->8---
(let ((t (make-tunnel session
                      #:port      12345
                      ;; Suppose a Guile-RPC server listens on
                      ;; 127.0.0.1:23456 on the remote host:
                      #:host      "127.0.0.1"
                      #:host-port 23456)))
  (call-with-ssh-forward t
    (lambda (socket)
      (RPC-PROGRAM-proc some-data #x123 socket))))
--8<---------------cut here---------------end--------------->8---

Here's an excerpt from the NEWS file:

--8<---------------cut here---------------start------------->8---
* 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)
   Low-level API for distributed nodes.
** New procedure 'channel-accept-forward' in (ssh channel)
** New procedure 'channel-listen-forward' in (ssh channel)
** Remove 'channel-open-forward/reverse' procedure from (ssh channel)
** Examples
*** Add an RPC client example
    Add an example program that does an RPC call over a secure channel using
    a Guile-SSH tunnel.  See 'examples/rpc' directory.
*** Add a RREPL example
    Add a demo program that connects to a remote REPL (RREPL).
** Update documentation
--8<---------------cut here---------------end--------------->8---

In addition, the structure of the Info documentation was updated, so it
should be easier now for a programmer to get started with Guile-SSH API.

As always, comments and bug reports are very welcome.  I'm especially
interested in comments related to new Guile-SSH features -- it was fun
to tinker with distributed forms and SSH tunnels, but I'd love to hear
your opinion, Guilers, on what features are really useful for you, what
aren't so useful and what needs to be fixed.

Thanks!

- Artyom

[1] https://www.gnu.org/software/guile-rpc/

-- 
Artyom V. Poptsov <address@hidden>;  GPG Key: 0898A02F
Home page: http://poptsov-artyom.narod.ru/

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]