~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 62388BCD7B58D1A10042C1C04F95F28A__1718926800 ✰
Заголовок документа оригинал.:
✰ LuaJIT - Wikipedia ✰
Заголовок документа перевод.:
✰ LuaJIT — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/LuaJIT ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/62/8a/62388bcd7b58d1a10042c1c04f95f28a.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/62/8a/62388bcd7b58d1a10042c1c04f95f28a__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 06:39:48 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 21 June 2024, at 02:40 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

LuaJIT — Википедия Jump to content

ИгратьДополнительно

Из Википедии, бесплатной энциклопедии
ИгратьДополнительно
Оригинальный автор(ы) Майк Полл
Стабильная версия
2.0.5 (позже также будет обновлена ​​версия 2.1.ROLLING, например в 2023 году) / 1 мая 2017 г .; 7 лет назад ( 01.05.2017 )
Репозиторий github /PlayJIT /PlayJIT
Написано в С , возьми это
Операционная система Unix -подобный, MacOS , Windows , iOS , Android , PlayStation
Платформа x86 , X86-64 , PowerPC , ARM , MIPS [1]
Тип Компилятор «точно в срок»
Лицензия МОЯ лицензия [2]
Веб-сайт ИгратьДополнительно .org

LuaJIT — это трассирующий JIT-компилятор для языка программирования Lua . Майк Полл, основной сопровождающий проекта, ушел в отставку в 2015 году, прибегая лишь к периодическому обновлению до будущей версии 2.1. [3]

История [ править ]

Проект LuaJIT был начат в 2005 году разработчиком Майком Поллом и выпущен под лицензией с открытым исходным кодом MIT. [4]

Вторая основная версия компилятора, 2.0.0, значительно увеличила производительность. [5]

Последний релиз 2.0.5 выпущен в 2017 году. Однако Майк Полл, создатель и сопровождающий, рекомендует использовать подсказку ветки v2.1 и не верит в релизы. [6]

Известные пользователи [ править ]

  • ЦЕРН за программное обеспечение «следующего поколения» для методического проектирования ускорителей для описания и моделирования ускорителей частиц. [7]
  • OpenResty , форк nginx со скриптами Lua. [8]
  • Neovim, текстовый редактор на основе vim, который позволяет использовать Lua для плагинов и настройки. [9]
  • Kong, шлюз веб-API [10]
  • Cloudflare , которые используют LuaJIT в своей брандмауэра веб-приложений. службе [11]
  • Многочисленные вредоносные программы-стилеры используют luajit в сочетании с обфускатором «Прометей», что делает их вредоносные программы полностью необнаружимыми. В настоящее время это одно из основных применений LuaJIT, поскольку luajit вышел за рамки использования субъектами угроз на уровне национальных государств и теперь широко используется в поддельных игровых читах. «Государственные субъекты раскрывают скрытное вредоносное ПО на основе LuaJIT» . https://www.securityweek.com/new-sandman-apt-group-hitting-telcos-with-rare-luajit-malware/ . {{cite web}}: Отсутствует или пусто |title= ( помощь )

Производительность [ править ]

LuaJIT часто является самой быстрой средой выполнения Lua. [12] LuaJIT также был назван самой быстрой реализацией динамического языка программирования. [13] [14]

LuaJIT включает интерфейс внешних функций , совместимый со C. структурами данных Его использование рекомендуется для численных расчетов. [15]

Отслеживание [ править ]

LuaJIT — это трассирующий JIT-компилятор . LuaJIT выбирает циклы и вызовы функций в качестве якорей трассировки, чтобы начать запись возможных «горячих» путей . Вызовы функций потребуют в два раза больше вызовов, чтобы начать запись в цикле. Как только LuaJIT начинает запись, весь поток управления, включая переходы и вызовы, встраивается в линейную трассировку. Все выполненные инструкции байт-кода сохраняются и постепенно преобразуются в LuaJIT с одним присвоением статическое промежуточное представление . Компилятор трассировки LuaJIT часто способен встраивать и удалять диспетчеризации из объектной ориентации, операторов и модификаций типов . [16]

Внутреннее представление [ править ]

LuaJIT использует два типа внутреннего представления. стековый байт-код используется Для интерпретатора , а статическая форма с одним присваиванием для JIT-компилятора — . Байт-код интерпретатора часто исправляется JIT-компилятором, часто для начала выполнения скомпилированной трассировки или для пометки сегмента байт-кода, вызывающего слишком большое количество прерываний трассировки. [14]

-- Цикл с оператором if 

 local   x   =   0 

 for   i  =  1  ,  1e4   do 
     x   =   x   +   11 
     if   i  %  10   ==   0   then   -- оператор if 
         x   =   x   +   22 
     end 
     x   =   x   +   33 
 end 
---- TRACE 1 start Ex.lua:5 
 ---- TRACE 1 IR 
 0001 int SLOAD #2 CI 
 0002 > num SLOAD #1 T 
 0003 num ADD 0002 +11 
 0004 int MOD 0001 +10 
 0005 > int NE 0004 + 0 
 0006 + число ADD 0003 +33 
 0007 + int ADD 0001 +1 
 0008 > int LE 0007 +10000 
 0009 ------ LOOP ------------ 
 0010 число ADD 0006 +11 
 0011 int MOD 0007 +10 
 0012 > int NE 0011 +0 
 0013 + число ADD 0010 +33 
 0014 + int ADD 0007 +1 
 0015 > int LE 0014 +10000 
 0016 int PHI 0007 0014 
 0017 число PHI 0006 0013 
 --- - ТРЕЙС 1 остановка - > цикл 
 ---- TRACE 2 start 1/4 Ex.lua:8 
 ---- TRACE 2 IR 
 0001 число SLOAD #1 PI 
 0002 int SLOAD #2 PI 
 0003 число ADD 0001 +22 
 0004 число ADD 0003 +33 
 0005 int ADD 0002 +1 
 0006 > int LE 0005 +10000 
 0007 num CONV 0005 num.int 
 ---- TRACE 2 стоп -> 1 

Расширения [ править ]

LuaJIT добавляет несколько расширений к своей базовой реализации Lua 5.1, большинство из которых не нарушают совместимость. [17]

  • «BitOp» для двоичных операций с 32-битными целыми числами без знака (эти операции также компилируются JIT-компилятором) [18]
  • «CoCo», который позволяет полностью возобновлять работу виртуальной машины во всех контекстах. [19]
  • Интерфейс внешней функции [20]
  • Переносимый байт-код (независимо от архитектуры, размера слова или порядка байтов, а не версии) [21]

ДинАСМ [ править ]

ДинАСМ
Разработчики) Майк Полл
Репозиторий
Написано в Луа , С [22]
Платформа x86 , X86-64 , PowerPC , ARM , MIPS
Тип Препроцессор , Линкер
Лицензия МОЯ лицензия [2]
Веб-сайт ИгратьДополнительно .org /диназм .html

DynASM — это легкий препроцессор для C, который предоставляет собственную разновидность встроенного ассемблера , независимую от компилятора C. DynASM заменяет ассемблерный код в файлах C на запись во время выполнения в «буфер кода», так что разработчик может генерировать, а затем вызывать код во время выполнения из программы C. Он был создан для LuaJIT 1.0.0, чтобы упростить разработку JIT-компилятора. [ нужна цитата ]

DynASM включает в себя простой заголовочный файл C , который используется во время компиляции для логики, генерируемой препроцессором. Фактический препроцессор написан на Lua.

Ссылки [ править ]

  1. ^ «ЛуаДЖИТ» . ЛуаЖИТ . Проверено 25 февраля 2022 г.
  2. ^ Перейти обратно: а б «LuaJIT/АВТОРСКИЕ ПРАВА на версию 2.1 · LuaJIT/LuaJIT» . Гитхаб . 7 января 2022 г.
  3. ^ «[ANN] Ищу новых сопровождающих LuaJIT — luajit — FreeLists» . www.freelists.org . Проверено 29 марта 2023 г.
  4. ^ «Проект LuaJIT» . luajit.org . Проверено 17 июня 2023 г.
  5. ^ Палл, Майк. «Re: [ANN] llvm-lua 1.0» . lua-users.org . Проверено 25 февраля 2022 г.
  6. ^ «Состояние проекта — выпуск №665 — LuaJIT/LuaJIT» . Гитхаб . Проверено 3 февраля 2023 г.
  7. ^ Денио, Лоран. «Lua (Jit) для расчета физики пучков ускорителей» . Сервер документов ЦЕРН . ЦЕРН . Проверено 25 февраля 2022 г.
  8. ^ «OpenResty® — Официальный сайт» . openresty.org .
  9. ^ «Луа — Документация Neovim» . neovim.io . Проверено 7 мая 2024 г.
  10. ^ «Конг/конг» . Гитхаб . Конг. 25 февраля 2022 г. Проверено 25 февраля 2022 г.
  11. ^ «Помогаем сделать Luajit быстрее» . blog.cloudflare.com . 19 октября 2017 г. Проверено 25 февраля 2022 г.
  12. ^ «Производительность LuaJIT» .
  13. ^ «Лоуренс Трэтт: Влияние мета-трассировки на проектирование и реализацию виртуальных машин» . Tratt.net . Проверено 2 марта 2022 г.
  14. ^ Перейти обратно: а б д'Андреа, Лоран (2019). Поведенческий анализ трассировки JIT-компилятора, встроенного в программное обеспечение для проектирования методического ускорителя (Диссертация). ЦЕРН . Проверено 31 июля 2022 г.
  15. ^ Палл, Майк. «Настройка численных вычислений для LuaJIT (было Re:[ANN] Sci-1.0-beta1) — luajit — FreeLists» . www.freelists.org .
  16. ^ Роттенколбер, Макс. «Позднее связывание: своевременная компиляция более молодого языка динамического программирования». ЭЛС. 2020 год
  17. ^ «Расширения» . ЛуаЖИТ . Проверено 25 февраля 2022 г.
  18. ^ «Семантика BitOp» . ЛуаЖИТ . Проверено 25 февраля 2022 г.
  19. ^ «Coco — True C Coroutines» . ЛуаЖИТ . Проверено 25 февраля 2022 г.
  20. ^ «Библиотека ФФИ» . ЛуаЖИТ . Проверено 25 февраля 2022 г.
  21. ^ «Расширения» . luajit.org . Проверено 25 августа 2022 г.
  22. ^ «Функции DynASM» . ДинАСМ . Проверено 25 февраля 2022 г.
Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 62388BCD7B58D1A10042C1C04F95F28A__1718926800
URL1:https://en.wikipedia.org/wiki/LuaJIT
Заголовок, (Title) документа по адресу, URL1:
LuaJIT - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)