Hello Guilers! I'm pleased to announce Guile-SSH 0.7.0: https://github.com/artyom-poptsov/guile-ssh/releases/tag/v0.7.0
Also you can find the Guile-SSH 0.7.0 archive signed with my GPG key [1] on my FTP server: ftp://memory-heap.org/software/guile-ssh/ This release includes lots of changes, namely: - Migration to libssh 0.6.3 was done. - Bug with premature GC'ing of Guile-SSH objects was fixed: Objects such as sessions won't be GC'ed as long as their child objects (such as channels) are alive. - Bug with segmentation faults in (ssh channel) procedures was fixed: Procedures now handle freed channels by means of throwing of an exception. - Bug with predicates `public-key?' and `private-key?' was fixed: Predicates now return `#f' for a non-key object instead of throwing of an exception. - New (ssh log) module that provides a way to manage libssh logging facilities. As a consequence, Guile-SSH now works better with Emacs Scheme REPL mode thanks to the default log printer procedure which comments out libssh log messages with `;;; ', so they don't mix with the actual output from procedures. - New procedures: `userauth-public-key/try', `bytevector->hex-string', `session-get', `channel-get-session', `message-get-session'. - Some of procedures got better names (such as `userauth-public-key!'). - Printing of Guile-SSH objects was improved, consequently you can get useful information about objects at glance. - New bug-catching tests were added. - Examples of Guile-SSH usage were added to the documenation (see "Examples" chapter). Please note that some of the changes break the backward compatibility, so you will probably need to make some changes to your application to make it work with this release. Here is an excerpt from the NEWS file that contains longer and more detailed list of user-visible changes: --8<---------------cut here---------------start------------->8--- * Changes in version 0.7.0 (2014-08-31) ** Require GNU Guile 2.0 ** Require libssh 0.6.3 ** Change `get-public-key-hash' *** Move the procedure to (ssh key) *** Return the hash as a bytevector *** Accept a public key as the first argument *** Accept a hash type as the second argument Possible types are: 'md5, 'sha1 ** (ssh auth) procedures now throw an exception if the session is not connected ** (ssh channel) procedures now handle closed and freed channels - `channel-open?' returns `#f' if the channel has been closed freed. - `channel-open-session' and `channel-eof?' throw to `guile-ssh-error' if the channel has been closed and freed. - `channel-request-env', `channel-request-exec', `channel-request-pty', `channel-request-shell', `channel-set-pty-size!', `channel-set-stream!', `channel-get-stream' now throw `wrong-type-arg` if the channel is closed. ** Some (ssh session) procedures now throw an exception if the session is not connected These procedures are: - `get-protocol-version' - `authenticate-server' - `get-server-public-key' - `write-known-host!' ** Change `userauth-pubkey!' *** Rename it to `userauth-public-key!' *** Change arguments ** `blocking-flush!' now returns `error' symbol on error instead of throwing of an exception ** `connect!' now returns `error' symbol on error instead of throwing of an exception ** `authenticate-server' now returns `error' symbol on error instead of throwing of an exception ** `private-key-from-file' now takes only a file name ** New (ssh log) module ** Rename `userauth-pubkey-auto!' to `userauth-public-key/auto!' ** New `userauth-public-key/try' procedure in (ssh auth) ** New `bytevector->hex-string' procedure in (ssh key) ** New `session-get' procedure in (ssh session) ** New `channel-get-session' procedure in (ssh channel) ** New `message-get-session' procedure in (ssh message) ** Improve printing of Guile-SSH objects *** Print more detailed information about `session' object Print user name, host name and current state of a `session' object. *** Print object address for `channel' object *** Print object address for `message' object *** Print object address for `key' object ** Changes in tests *** Add tests for Guile-SSH keys *** Add tests for `authenticate-server' procedure ** Bug fixes *** Fix a GC issue Keep a reference to the parent session in channels and messages to prevent the session from premature GC'ing. Without that GC could free a session even if there are live channels and by that break the channels. *** `public-key?' and `private-key?' now produce correct result Functions now return `#f' if the given argument is not a Guile-SSH key object. ** Documentation update *** Fix old URLs to Guile-SSH repository in the `Installation' chapter *** Add an overview of programming with Guile-SSH to the "Examples" chapter --8<---------------cut here---------------end--------------->8--- Known bugs: --8<---------------cut here---------------start------------->8--- ** Guile-SSH does not work properly if libssh is compiled with GCrypt instead of OpenSSL. --8<---------------cut here---------------end--------------->8--- Guile-SSH 0.7.0 was tested on the following GNU/Linux distributions: Gentoo (Base System release 2.2), Debian 7.6 (wheezy). This release of Guile-SSH, as the previous ones, was prepared in hope that the program will be useful. So please don't hesitate to mail me any comments, sugguestions and (especially) bug reports. Thanks, - Artyom [1] http://pgp.mit.edu:11371/pks/lookup?op=get&search=0xE9C5A2D90898A02F -- Artyom V. Poptsov <poptsov.art...@gmail.com>; GPG Key: 0898A02F Home page: http://poptsov-artyom.narod.ru/