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