Відбувся реліз 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 з коректною верифікацією сертифікатів.