28.09.2020

Доступен GNU Guile 3.0


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

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

Ключевым новшеством в GNU Guile 3.0 стало появление JIT-компилятора, помимо ранее предлагаемых интерпретатора и компилятора в байткод, выполняемый в специальной виртуальной машине, привязываемой к приложению в форме библиотеки. JIT позволяет генерировать машинный код на лету и существенно ускоряет выполнение Guile-приложений (тесты показывают ускорение до 4 раз). JIT-компилятор поддерживает работу на архитектурах x86-64, i686, ARMv7 и AArch64.

Некоторые их других улучшений:

  • Поддержки новой спецификации языка Scheme R7RS и определённых в ней библиотечных модулей;
  • В виртуальной машине Guile реализована поддержка более низкоуровневого байткода, позволяющего применить расширенные оптимизаци;
  • Поддержка комбинирования внутренних define-определений и выражений (например, «(define _ (begin (foo) #f))»);
  • Предложена унифицированная реализация структурированного типа данных («records»);
  • Переработана примитивы обработки исключений (throw и catch);
  • Определены биндинги для расширенного синтаксиса «else», «=›», «…» и «_»;
  • В http-request, http-get и других связанных с web-клиентом процедурах добавлена возможность загрузки контента по шифрованному каналу связи с использованием TLS с корректной верификацией сертификатов.

Источник: https://www.opennet.ru/opennews/art.shtml?num=52203

Добавить комментарий