[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[ANN] Guile-SSH 0.11.0 released
From: |
Artyom V . Poptsov |
Subject: |
[ANN] Guile-SSH 0.11.0 released |
Date: |
Tue, 09 May 2017 10:25:42 +0300 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) |
Hello Guilers,
I'm pleased to announce Guile-SSH 0.11.0:
https://github.com/artyom-poptsov/guile-ssh/releases/tag/v0.11.0
Please find the package signed with my GPG key[1] here:
- ftp://memory-heap.org/software/guile-ssh/guile-ssh-0.11.0.tar.gz
- ftp://memory-heap.org/software/guile-ssh/guile-ssh-0.11.0.tar.gz.sig
This release adds support of GNU Guile version 2.2 (tested with GNU
Guile 2.2.2.3-0c102 on Debian GNU/Linux) and fixes some bugs, namely
procedures working with RREPL now handle compilation errors, unbound
variable errors and unknown objects.
Also there's a new (ssh shell) module that provides some useful remote
shell procedures, and procedures from (ssh dist) and (ssh dist node) now
can work without procps package.
To make things a bit easier, I prepared a Docker image that contains the
latest GNU Guile (version 2.2.2.3-0c102 at the moment) and Guile-SSH
installed -- which may be useful for testing and experimenting:
https://hub.docker.com/r/avvp/debian-guile/
When run in the Docker container, most of the Guile-SSH tests with the
latest GNU Guile are passing, although there are some occasional test
failures due to segfaults in test driver; I'm hoping to fix this in the
upcoming releases.
Thanks for all the contributions, they where very helpful. Contributors
listed in the documentation, 'AUTHORS' and 'THANKS' files included in
the distribution.
* 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
applications.
- 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.11.0 (2017-05-09)
** Add support of Guile 2.2
Tested with GNU Guile version 2.0.14 (on Gentoo GNU/Linux) and
2.2.2.3-0c102 (on Debian GNU/Linux.)
Many thanks to Ludovic Courtès for patches!
** New module (ssh shell)
The module provides some procedures build upon (ssh popen) module for
working with remote shell.
** Bugfixes
*** In (ssh tunnel)
**** 'main-loop' now handles "interrupted system call" errors
that sometimes occur on 'select' call.
*** In (ssh dist node)
***** 'rrepl-get-result' now handles compilation errors
The procedure would always fail to read compilation errors properly
because it considered the message as "undefined" result. Now this bug
should be fixed.
An example of an error that now should be handled is "no code for module"
due to using a non-existing module in 'with-ssh' expression.
Reported by Mathieu, in
<https://github.com/artyom-poptsov/guile-ssh/issues/3>
***** 'rrepl-get-result' now handles "unbound variable" errors
The procedure would always fail to read "unbound variable" errors
properly, returning wrong result with only two values (current module
name and current language name). Now this bug should be fixed.
Reported by Mathieu, in
<https://github.com/artyom-poptsov/guile-ssh/issues/3>
***** 'rrepl-get-result' now handles unknown # objects
The procedure would always fail to read unknown objects (e.g. instances
of Guile-SSH session) properly, raising an obscure errors like
"Unknown # object: #\<". Now the procedure raises 'node-repl-error'
with full evaluation result gotten from RREPL.
Reported by Mathieu, in
<https://github.com/artyom-poptsov/guile-ssh/issues/3>
** Changes in (ssh dist node)
*** 'node-eval' now can work without procps
The procedure now checks if procps package is present on a node and uses
fallback Guile-SSH implementation of 'pgrep' and 'pkill' if it is not.
The fallback implementation of 'pgrep' is built upon pure bash, and
'pkill' in addition requires Guile itself on the remote side.
*** New procedure 'node-loadavg'
The procedure can be used to get average load of a node.
** Changes in (ssh dist)
Procedures in the module now are capable of checking presence of procps
package on a remote side and switching to fallback implementation of some
of the procps tools when the package is not present -- thanks to updated
'node-eval' procedure (see above.)
At the end of the day it means that now the code can start/stop Guile REPL
server on a remote side even without procps installed.
** Update unit tests
*** Add test cases for (ssh shell) module
** Update documentation
*** Add documentation for (ssh shell) module
*** Describe project goals in "Introduction" section
--8<---------------cut here---------------end--------------->8---
Happy hacking!
- Artyom
[1] https://pgp.mit.edu/pks/lookup?search=0x0898A02F&op=index
[2] https://en.wikipedia.org/wiki/Secure_Shell
[3] https://www.libssh.org/
--
Artyom V. Poptsov <address@hidden>; GPG Key: 0898A02F
Home page: http://poptsov-artyom.narod.ru/
signature.asc
Description: PGP signature
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [ANN] Guile-SSH 0.11.0 released,
Artyom V . Poptsov <=