[Top][All Lists]

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

[ANN] Guile-SSH 0.9.0 released

From: Artyom Poptsov
Subject: [ANN] Guile-SSH 0.9.0 released
Date: Thu, 24 Dec 2015 12:00:24 +0300
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

Hello Guilers,

I'm pleased to announce Guile-SSH 0.9.0:

Please find the package signed with my GPG key[1] here:

This release includes some bugfixes and two new modules: (ssh sftp) and
(ssh popen).  Some parts of API were changed, so probably you'll need to
update your appilcations in order to use them with the new Guile-SSH

See the full list of user-visible changes and Guile-SSH features below.

Also the project now has its own logo:

As you can see, the logo represents a recursive secure shell that
produces lambda-bubbles (aka closures).  I'm expecting that the logo
will be evolving with the time, and the current version seems to be a
good start.

* What is Guile-SSH?

Guile-SSH is a library that provides access to the SSH protocol[2] for
programs written in GNU Guile interpreter.  It is built upon the
libssh[3] library.

Currently Guile-SSH provides the following features:
  - The API that is sufficient for building of standalone SSH clients and
    servers, or for embedding client/server functionality in your lispy Scheme
  - Several authentication methods are supported, including password
    authentication, public key and SSH agent authentication methods.
  - Key management procedures: you can make key pairs, read keys from files,
    get key hashes, get public keys from private keys etc.  DSS, RSA, RSA1 and
    ECDSA (by means of OpenSSL) are supported.
  - Port forwarding procedures and high-level API for creating of SSH tunnels.
  - Distributed forms ('dist-map', 'distribute', ...) that allow to spread the
    evaluation of Scheme code between remote hosts.  Or you can just connect
    to a remote REPL from Scheme using 'with-ssh' procedure and evaluate some
    expressions.  No special server needed on the remote side, just an SSH
    daemon and GNU Guile installed!
  - SFTP client API allows you to read and write remote files over the SSH
    protocol right from the Scheme code.
  - Remote popen API that allows you to make either input, output or
    bidirectional pipes to remote processes.
  - Detailed documentation in Texinfo format with examples included, even more
    examples in 'examples' directory.

* The list of user-visible changes

Here's the list of user-visible changes (an excerpt from NEWS file):

--8<---------------cut here---------------start------------->8---
* Changes in version 0.9.0 (2015-12-24)
** Bugfixes
*** Fix a bug in distributed forms in handling of REPL errors
    Distributed procedures now throw an 'node-repl-error' on an evaluation
    error instead of returning of an unspecified value.
*** Fix a bug in handling of strings in distributed forms
    The 'rrepl-eval' was always failing to send sexps that contain strings in
    the proper way because the procedure uses the human-readable printing to
    transmit the data.  As the result an RREPL fails to evaluate it and
    reports an error.  The bug is fixed by switching to the machine-readable
    data printing.
*** 'dist-map' and 'distribute' now raise an error if an evaluation failed
    instead of silently return an empty list.
*** 'channel-listen-forward' now returns a correct port number
    'channel-listen-forward' would always return garbage as the 2nd argument
    when called with port > 0.  Now when the port is explicitly specified then
    the procedure returns the specified port as the 2nd argument.
*** Add missing export of 'node-tunnel' from (ssh dist node) module
** Changes in API
*** Distributed forms now return the number of evaluation as a number
    instead of string.
*** 'with-ssh' is now capable of handling of multiple values
    'with-ssh' now returns a vector of values if an expression was evaluated to
    multiple values.  'distribute' and 'dist-map' only take the 1st value if
    multiple values were returned by an expression.
*** Nodes are now capable of starting and stopping a remote REPL (RREPL)
    The new behaviour is controlled by 'start-repl-server?' and
    'stop-repl-server?' keyed options of 'make-node'.  Stopping of a RREPL
    server is disabled by default.
*** Channels now can be created as input, output or bi-drectional ports
    The direction of a channel is controlled by the 2nd argument to
    'make-channel' procedure.
*** 'make-session' now takes 'config' option
    that allows to specify whether the SSH config should be parsed or not, and
    optionally the path to the config.
** New procedures
*** New procedure 'node-server-running?' in (ssh dist node)
*** New procedure 'node-run-server' in (ssh dist node)
*** New procedure 'node-stop-server' in (ssh dist node)
*** New procedure 'node-guile-version' in (ssh dist node)
*** New procedure 'session-parse-config!' in (ssh session)
** New modules
*** (ssh popen)
    Remote popen interface to interact with remote processes.
*** (ssh sftp)
    SFTP interface that allows to operate on remote files.
** Documentation
*** Move description of tunnels into a separate section
*** Add description of the new procedures
*** Update existing documentation
** Unit tests
*** Expand the test suite for distributed forms
*** Expand the test suite for tunnels
** Add the project logo
--8<---------------cut here---------------end--------------->8---

As usual, comments and bug-reports are very welcome.

Happy hacking!

- Artyom


Artyom V. Poptsov <address@hidden>;  GPG Key: 0898A02F
Home page:

Attachment: signature.asc
Description: PGP signature

reply via email to

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