guile-user
[Top][All Lists]
Advanced

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

[ANN] Guile-SSH 0.15.0 released


From: Artyom V. Poptsov
Subject: [ANN] Guile-SSH 0.15.0 released
Date: Mon, 03 Jan 2022 11:12:03 +0300
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux)

I'm pleased to announce Guile-SSH 0.15.0:
  https://github.com/artyom-poptsov/guile-ssh/releases/tag/v0.15.0

As usual, this release tag is signed with my GPG key[1].

In this release I fixed libguile-ssh library version that I forgot to
bump before the 0.14.0. Now the library version is properly bumped to
"0:14:0" according to libtool rules.

Also I removed a hidden build-time dependency on 'util-linux' package.

The most of the important changes were added in the 0.14.0 release (see
https://lists.gnu.org/archive/html/guile-user/2021-12/msg00057.html) so
I attached the list of changes between 0.13.1 and 0.14.0 as well --
please find it below.


* 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.0 (2022-01-03)
** Bump library version to "14:0:0" according to libtool rules
   In the 0.14.0 release of Guile-SSH the libtool library version wasn't
   properly changed.  This could lead to compatibility problems.

   Now the version is bumped to "14:0:0".
** Remove requirement for 'whereis' command
   Guile-SSH required 'whereis' from 'util-linux' package to find
   'guile-snarf' command.  Now this dependency is removed.

* Changes in version 0.14.0 (2021-12-20)
** API change: OpenSSH agent procedures are now in (ssh agent)
   Move agent procedures to (ssh agent) module from (ssh auth).

   The procedures are renamed and improved too. The current set of procedures
   provided by (ssh agent) is as follows:
   - ssh-agent-sock-get
   - ssh-agent-sock-set!
   - ssh-agent-start
   - ssh-agent-info

   The documentation is updated accordingly.
** API change: Remove 'sftp-init' from (ssh sftp)
   This procedure was not present in the module anyway, so this is more like a
   bugfix though.

   If you need to call SFTP init, you can use low-level '%sftp-init' procedure
   (although this is discouraged.)
** Guile-SSH channels are now explicitly blocking by default
** Fix snarfing errors on Fedora GNU/Linux
   Guile-SSH would fail to find 'guile-snarf' script on Fedora GNU/Linux when
   GNU Guile 2.2 installed because the snarfer installed as 'guile-snarf2.2'.
   Now the problem is fixed.
** Fix random segfaults due to libssh logging
   The library would sometimes get segfaults due to libssh logging.

   Guile-SSH used to pass Guile objects to a libssh logging procedure as a
   opaque pointers, and some Guile objects didn't make it to the point when an
   actual Scheme callback procedure called, GC'ted on the way. So when a
   Scheme logging callback tried to use its parameters, the parameters was
   freed already.

   Now Guile-SSH bypasses libssh logging altogether, calling a Scheme logging
   callback right away -- that provides more control over Scheme objects and
   allows to keep them from GC'ing.
** Fix "random" errors and segfaults in channels
   Guile-SSH would sometimes fail with segmentation faults and other errors
   when a remote side is abruptly closed the connection and the client side
   still tries to read data.

   Now in that situation reading a Guile-SSH channel results in EOF.
** Fix test failures due to 'primitive-fork' calls
   SRFI-64 doesn't really like tests that spawn new processes and try to do
   stuff after 'primitive-fork' without calling 'execle' (or similar)
   procedure: sometimes a test would fail even when all its test cases where
   successful.

   Now that should be fixed.

** Fix the tests for Guile 3.0.7
   There are differences in REPL welcome message between Guile 3.0.7 and older
   versions.  Now this difference is handled properly.

   Reported by Ludovic Courtès in
   <https://github.com/artyom-poptsov/guile-ssh/issues/28>

** Fix the tests for Guile 3.0.5
   The test-runner object is now reset to #f when calling the 'test-end'
   procedure. See the commit de5d1a7f99b8e952b115237ebc29633062f99bb9 in Guile
   (srfi-64: Reset test-runner-current if done) which introduced this change.

** The Guile-SSH building process now less verbose

** Update documentation
--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 <poptsov.artyom@gmail.com>
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

Attachment: signature.asc
Description: PGP signature


reply via email to

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