Убачыў святло 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

Дадаць каментар