Доступен GNU Guile 2.2


После шести лет разработки подготовлен релиз проекта GNU Guile 2.2, в рамках которого развивается свободная реализация функционального языка программирования Scheme, поддерживающая возможность встраивания кода в приложения на других языках программирования. Guile является официальным языком разработки расширений для операционной системы GNU. Guile позволяет легко интегрировать в приложения расширяющие функциональность дополнения, модули и скрипты, дает возможность пользователям менять поведение приложения без углубления в его внутреннюю организацию.

Основу Guile составляет эффективная виртуальная машина, которая выполняет переносимый набор инструкций, генерируемый специальным оптимизирующим компилятором. Виртуальная машина Guile легко интегрируется с кодом приложений на языках Си и Си++. Кроме языка Scheme, для которого реализована поддержка спецификаций R5RS и R6RS, в рамках проекта Guile разработаны компиляторы и для других языков, таких как ECMAScript, Emacs Lisp и Lua (в процессе разработки). В состав пакета входит библиотека модулей, в которых реализованы типовые сервисные функции, такие как работа с протоколом HTTP, парсинг XML и использование методов объектно-ориентированного программирования.

Новый выпуск примечателен добавлением нового оптимизирующего компилятора и новой высокопроизводительной регистровой виртуальной машины. По сравнению с прошлой стабильной веткой 2.0 в Guile 2.2 отмечается увеличение производительности выполнения существующих приложений как минимум на 30%. В новой версии также снижено потребление памяти и ускорена работа интерпретатора "eval". Представлена новая система динамического распределения памяти для стека, которая устранила все ограничения, связанные с фиксированным размером стека, и теперь позволяет использовать рекурсивные вызовы любого уровня вложенности.

Отдельно выделяется расширение средств многопоточного программирования. В Guile 2.2 добавлена возможность распараллеливания обработчиков в пространстве пользователя, позволяющая организовать одновременное выполнения миллионов легковесных нитей (fibers). Многопоточные библиотеки могут использовать нити для перехода в спящий режим с пробуждением при возобновлении операции ввода/вывода. В новой версии также расширены средства работы с локалями, а в строковых операциях по умолчанию задействована кодировка UTF-8 и проведена оптимизация работы с многобайтовыми наборами символов. Предоставляемая в Guile реализация Elisp признана полностью совместимой с Emacs и теперь содержит все заявленные в спецификации Elisp возможности, а также учитывает специфичные для Emacs особенности.