GNU Lightning

Тип |  библиотека функций и пакет GNU[вд]
Разработчик |  Проект GNU
Написана на |  Си[2]
Операционные системы  |  GNU/Linux[2], BSD[вд][2] и macOS[2]
Последняя версия |

* 2.2.3 (8 февраля 2024)[1]

Репозиторий |  git.savannah.gnu.org/cgi…
Лицензия |  LGPLv3.0+[вд][2]
Сайт |  gnu.org/software/… (англ.)

GNU Lightning — библиотека для быстрой генерации машинного кода во время исполнения программы (JIT-компиляции). Написана на языке Си.

Автор библиотеки GNU Ligtning — Paolo Bonzini. Она основана[3] на динамическом ассемблере ccg за авторством Ian Piumarta[4].

## Содержание

* 1 Назначение и особенности
* 2 Использование
* 3 Примечания
* 4 Литература
* 5 Ссылки

## Назначение и особенности

[править | править код]

Данная библиотека хорошо подходит для JIT-компиляции, однако, в отличие от таких инструментов, как LibJIT или LLVM, реализует более низкоуровневый подход. Lighting не использует какого-либо промежуточного представления программ, вроде байткода, но транслирует инструкции некоего абстрактного ассемблера виртуального RISC-процессора в машинный код одной из поддерживаемых архитектур. К таким архитектурам относятся i686, X86-64, MIPS, ARM, PowerPC, SPARC, IA-64 и hppa. Вследствие такой архитектуры библиотека не предоставляет каких-либо средств оптимизации.

Несмотря на машиннонезависимость набора инструкций поддерживаемого библиотекой виртуального ассемблера, он оперирует лишь с шестью целочисленными регистрами, а для операций с плавающей точкой используется специализированный стек[3]. Существует форк библиотеки, который называется MyJIT[5], в котором этих ограничений нет.

## Использование

[править | править код]

Библиотека используется в для реализации JIT-компиляции в частности в таких трансляторах, как Racket, GNU Smalltalk, и CLISP[6]; а также, начиная с версии 3.0[7], Guile[8].

## Примечания

[править | править код]

1. ↑ Andrade P. C. P. d. GNU lightning 2.2.3 released! (англ.) — 2024.
2. ↑ 1 2 3 4 5 Free Software Directory
3. ↑ 1 2 George Almasi, David A. Padua. MaJIC: A Matlab Just-In-Time Compiler // Languages and Compilers for Parallel Computing 13th International Workshop, LCPC 2000 Yorktown Heights, NY, USA. — Springer, August 10–12, 2000 Revised Papers. — С. 75. — ISBN 978-3-540-42862-6. Архивировано 13 июня 2018 года.
4. ↑ Ian Piumarta. ccg: dynamic code generation for C and C++  (неопр.) (1 мая 2004). Дата обращения: 22 января 2014. Архивировано 19 июня 2014 года.
5. ↑ MyJIT  (неопр.). Дата обращения: 22 января 2014. Архивировано 25 июня 2014 года.
6. ↑ Implementation notes for GNU CLISP  (неопр.). Дата обращения: 23 февраля 2009. Архивировано 1 декабря 2001 года.
7. ↑ Версия 3.0 находится в разработке, с октября 2018 года доступна версия GNU Guile 2.9.1 (beta) c реализацией JIT-компиляции для архитектуры x86-64.
8. ↑ GNU Guile 2.9.1 Released [beta]  (неопр.). lists.gnu.org. Дата обращения: 11 октября 2018. Архивировано 12 октября 2018 года.

## Литература

[править | править код]

Sandeep Koranne. 13.5.5 GNU lightning // Handbook of Open Source Tools. — Springer, October 29, 2010. — P. 269-271. — 520 p. — ISBN 978-1-4419-7718-2.

## Ссылки

[править | править код]

* gnu.org/software/lightning/ — официальный сайт GNU Lightning

Это заготовка статьи о программном обеспечении. Помогите Википедии, дополнив её.

|

Проект GNU

История|

* Манифест GNU
* Проект GNU
* Фонд свободного программного обеспечения
* история

Лицензии|

* GNU GPL
* GNU LGPL
* Affero GPL
* GNU FDL
* GPL linking exception[англ.]

Программное
обеспечение|

* GNU
* варианты[англ.]
* Hurd
* Bash
* GCC
* GNU Emacs
* GNU TeXmacs
* GNU Octave
* GNU Taler
* glibc
* GNU Coreutils
* Autotools
* GNUnet
* GNUzilla (IceCat)
* другие пакеты

Персоналии|

* Александре Олива
* Бенджамин Хилл
* Брайан Фокс
* Брэдли Кун
* Эбен Моглен
* Федерико Хейнц[англ.]
* Георг Греве
* Джошуа Гэй
* Лоис Дечэри
* Рикардо Галли
* Ричард Столлман
* Вильям Джон Салливан

Другие темы|

* Спор об именовании GNU/Linux
* Revolution OS
* BadVista
* Defective by Design