15 июля 2013 г.

Guile-SSH 0.3.1

Выпустил релиз Guile-SSH 0.3.1. Начиная с релиза 0.2 (который был первым релизом), внёс в библиотеку достаточно много изменений. Вот некоторые, наиболее значимые, из них:

  • Исправлены ошибки сегментации при освобождении неиспользуемых SSH-объектов сборщиком мусора. Ошибка проявлялась, если после удаления сессии сборщик мусора пытался удалить канал, связанный с этой сессией.
  • Библиотека теперь может безопасно использоваться в многопоточных приложениях (при использовании Guile-SSH нужно руководствоваться рекомендациями в инструкции по созданию многопоточных приложений с использованием libssh)
  • Улучшена работа с SSH-ключами. Дело в том, что libssh работает с ключами трёх видов: публичные ключи, приватные ключи и просто ключи. Так вот, публичные ключи могут представлять собой как объект типа ssh_public_key, так и ssh_string с бинарным содержимым. Это выглядит довольно странно, так что я постарался скрыть эти особенности библиотеки, и все виды ключей предстают программисту в Scheme, как единый тип <ssh:key>
  • Исправлена работа функции ssh:public-key-from-file
  • Добавлены новые функции: ssh:get-key-type, ssh:userauth-get-list, ssh:free-channel!
  • Исправлены ошибки в функциях ssh:private-key-from-file, ssh:channel-read, ssh:blocking-flush!, ssh:session-set!

Полный список изменений, видимых пользователю, можно найти в NEWS-файле, в корне репозитория. Подробный лог изменений находится в файле ChangeLog, там же.

Пример приложения, использующего Guile-SSH:
https://gist.github.com/artyom-poptsov/5650840

Готовых бинарных сборок пока нет. Инструкции по сборке Guile-SSH из исходных кодов можно найти на GitHub Wiki:
https://github.com/artyom-poptsov/libguile-ssh/wiki/Building-and-installation

- Артём