LINUX.ORG.RU
ФорумTalks

Легковесный embeddable scripting engine с JIT.


0

0

ЛОР, посоветуй-ка мне сабж.

Требования:

1) легковесный (монстры типа Java или Mono не покатят);
2) встраиваемый (линкуемый с программой на С);
3) скриптовой (синтаксис, близкий к математическому, приветствуется);
4) JIT обязателен.

Можно даже не полноценный scripting, а ограниченный expression language (наподобие Java EL). Предстоит много-много вычислять маленькие-маленькие выражения, задаваемые в рантайме, что принципиально. По сути это будут математические выражения с участием (кусочно-)линейных, логарифмических, полиномиальных функций. Но вычислений будет настолько много, что без JIT'а можно будет повеситься.

Склоняюсь к Mozilla JavaScript (в инкарнации TraceMonkey) или к Google V8. К первому - чуть больше, потому что вменяемое API, заявлено больше аппаратных платформ, да и Mozilla чуть меньшее зло, чем Google, хотя в TraceMonkey не обошлось без Б-гомерзкого Adobe.

Спасибо!

Ответ на: комментарий от tmp_LactyUCdzl

>> Это сказано про V8, да? Или про TraceMonkey тоже?

> Про LLVM же это сказано

Если ты еще не понял: V8 написан на Си++. Полагаю, TraceMonkey - тоже.

tailgunner ★★★★★
()

напиши сам :)

очень веселое занятие

ferro
()

блин, задолбали эти сишники со своим pure C. ну не используйте сомнительные фичи крестов. да щас без ООП уже как без рук. а если начнешь писать только функции и структуры, то плеваться потом будешь.

Tu3eK
()
Ответ на: комментарий от Tu3eK

Спокойно, без паники. Где я говорил, что проект будет на чистом С? Тебе всюду мерещатся оголтелые красноглазые pure-сишники.

Проект будет на одном из современных объектно-ориентированных языков, я не самоубийца, чтобы делать его на С. Но! Наличие у искомого scripting engine'a C binging'ов - необходимое условие для возможности байндинга к языкам типа Python/Ruby/Mono etc. Теперь понятно?

tmp_LactyUCdzl
() автор топика
Ответ на: комментарий от tailgunner

> Если ты еще не понял: V8 написан на Си++.

Уже понял.

> Полагаю, TraceMonkey - тоже.


Нет, TraceMonkey написан на C и предоставляет очень симпатичное C API.

Я ничего не имею против С++ там, где ему место. С++ - фундаментальный и уважаемый язык. Пусть scripting engine будет написан на чём угодно - главное, чтобы работал, генерил машкод и предоставлял C API. Потому что последнее - ключ ко всему современному ООП.

Вот взять TraceMonkey или Lua. Я прекрасно представляю, как внедрить эти движки в Python/Ruby/Mono/Java etc. С Google V8 уже возникают вопросы. Основная задача - не отфильтровать исключительно pure С-имплементации, а обеспечить байндинг к высокоуровневому современному ОО-языку, для чего C API - стандарт де факто. Вот и всё.

tmp_LactyUCdzl
() автор топика

Пора подводить итоги. По убыванию перспективности:

1. LuaJIT
2. Mozilla JS (TraceMonkey)
3. Самопальный транслятор в GNU Lightning/LLVM/Parrot

Всем спасибо!

tmp_LactyUCdzl
() автор топика
Ответ на: комментарий от KRoN73

Да, отдельное спасибо и ещё раз извиняюсь, что сгоряча обозвал петросяном :)

Постараюсь как-нибудь устроить бенчмаркинг вышеперечисленного на своих задачах и опубликовать результаты.

tmp_LactyUCdzl
() автор топика
Ответ на: комментарий от tmp_LactyUCdzl

Ещё пункт пятый, со звёздочкой: PLT Scheme. О нём, как ни странно, никто не вспомнил.

tmp_LactyUCdzl
() автор топика
Ответ на: комментарий от tmp_LactyUCdzl

> Ещё один петросян. Не додумался, надо было сразу написать: "LISP, Haskell, Forth, Brainfuck и прочие мемы не предлагать"

Так бы и сказал, что ты просто~--- быдломонкейкодер.

CL-USER
()
Ответ на: комментарий от CL-USER

> Так бы и сказал, что ты просто~--- быдломонкейкодер.

Трололо. Поздновато пришёл, зелёный друк - кормушка закрылась.

А всё потому, что раскормился тут, растолстел, передвигаешься медленно. Худеть надо.

tmp_LactyUCdzl
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.