unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
* [ANN] Guile-SSH 0.8.0 released
@ 2015-08-03 23:03 Artyom Poptsov
  2015-09-01 12:08 ` Ludovic Courtès
  0 siblings, 1 reply; 5+ messages in thread
From: Artyom Poptsov @ 2015-08-03 23:03 UTC (permalink / raw)
  To: Guile Users' Mailing List

[-- Attachment #1: Type: text/plain, Size: 4562 bytes --]

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 <poptsov.artyom@gmail.com>;  GPG Key: 0898A02F
Home page: http://poptsov-artyom.narod.ru/

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 472 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread
[parent not found: <mailman.71.1438704082.32144.guile-user@gnu.org>]
[parent not found: <mailman.95.1441123237.10692.guile-user@gnu.org>]

end of thread, other threads:[~2015-09-02 19:55 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-03 23:03 [ANN] Guile-SSH 0.8.0 released Artyom Poptsov
2015-09-01 12:08 ` Ludovic Courtès
     [not found] <mailman.71.1438704082.32144.guile-user@gnu.org>
2015-08-05 13:46 ` Artyom Poptsov
     [not found] <mailman.95.1441123237.10692.guile-user@gnu.org>
2015-09-01 18:06 ` Artyom Poptsov
2015-09-02 19:55   ` Ludovic Courtès

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).