[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[ANN] Guile-SSH 0.9.0 released
[ANN] Guile-SSH 0.9.0 released
Thu, 24 Dec 2015 12:00:24 +0300
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)
I'm pleased to announce Guile-SSH 0.9.0:
Please find the package signed with my GPG key 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
* What is Guile-SSH?
Guile-SSH is a library that provides access to the SSH protocol for
programs written in GNU Guile interpreter. It is built upon the
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):
* Changes in version 0.9.0 (2015-12-24)
*** 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
*** '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-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.
*** 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
As usual, comments and bug-reports are very welcome.
Artyom V. Poptsov <address@hidden>; GPG Key: 0898A02F
Home page: http://poptsov-artyom.narod.ru/
Description: PGP signature
|[Prev in Thread]
||[Next in Thread]|
- [ANN] Guile-SSH 0.9.0 released,
Artyom Poptsov <=