Побачив світ GNU Guile 3.0

Відбувся реліз GNU Guile 3.0вільної реалізації функціональної мови програмування Схема, що підтримує можливість вбудовування коду у додатки іншими мовами програмування. 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 з коректною верифікацією сертифікатів.

Джерело: opennet.ru

Додати коментар або відгук