Hello Guilers! I'm pleased to announce Guile-SSH 0.15.1: https://github.com/artyom-poptsov/guile-ssh/releases/tag/v0.15.1 As usual, this release tag is signed with my GPG key[1]. This is mostly a bugfix release as it fixes some segfaults that occur on garbage collecting of sessions and errors on remote side closing. Many thanks to Ludovic Courtès for useful bug reports that allowed me to investigate the observed problems and fix them. * 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. - Procedures for interaction with SSH agents. * 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.15.1 (2022-02-28) ** Fix session garbage collecting errors When a session is being destroyed by the Guile GC, the session garbage collector procedures try to close all the session channels. There was a bug that lead to accessing elements that are over the border of a channels list. Now the bug should be fixed. Reported by Ludovic Courtès in an email, here: ** Fix segfaults that occur on session closing When a remote side closing a channel Guile-SSH would fail as the libssh callback that marks the Guile-SSH channel as closed tried to convert a Guile channel object to the channel data and fails to do it. Now the problem should be fixed. Reported by Ludovic Courtès in an email, here: ** Add GNU Guix package definition to the repository Add =guix.scm= to the repository. The file contains GNU Guix package definition that allows to build Guile-SSH from Git. --8<---------------cut here---------------end--------------->8--- Many thanks to all the people who helped me with bug reports, pull requests and other hints. I added all contributors to "AUTHORS" and "THANKS" files -- please let me know if I forgot to thank someone or if there any typos. - Artyom References: 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 "avp" Poptsov Home page: https://memory-heap.org/~avp/ CADR Hackerspace co-founder: https://cadrspace.ru/ GPG: D0C2 EAC1 3310 822D 98DE B57C E9C5 A2D9 0898 A02F