გამოვიდა GNU Guile 3.0

შედგა релиз GNU Guile 3.0, свободной реализации функционального языка программирования სქემა, поддерживающей возможность встраивания кода в приложения на других языках программирования. Guile может быть использован как язык для разработки расширений для приложений, определения конфигурации или разработки компонентов для связи различных примитивов, предоставляемых приложением. Guile является официальным языком разработки расширений для операционной системы GNU.

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

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

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

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

წყარო: opennet.ru

ახალი კომენტარის დამატება