LINUX.ORG.RU

Есть ли в природе чуть более близкий к продашену аналог libtcc, тот что из tiny c compiler?

 ,


0

4

Сразу скажу, что интересуют вещи вроде tcc_compile_string. То есть возможность компилировать любой С код на лету, затем исполнять его.

Что значит ближе к продакшену, это значит что проект более-менее актуальный(tcc хоть и небольшой и его поддерживать можно, он всё же не поддерживается) и с хорошей поддержкой платформ(тут я понимаю, что он тогда должен использовать одну из инфраструктур на выбор: gcc, llvm).

Различные нюансы вроде: тянуть за собой жирнейший рантайм в виде gcc или llvm, накладные расходы на компиляцию, потенциальные дыры в безопасности и тд. Это я осознаю.

Возможна перформулировка вопроса: кто-то вообще подобное в реальных проектах использует? Встречались кто-нибудь?

★★★

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

В свете поддержки sbcl'ом армов это конечно заманчиво)

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

Да если бы чистый продакшен, вопроса бы не было, потому что если не ошибаюсь ничего такого для продакшена нету попросту. Запросы скромнее, гляну libgccjit.

ixrws ★★★
() автор топика

В принципе, луа тоже так может, а у него рантайм небольшой. И можно еще уменьшить при желании

anonymous
()

посмотри интерпретаторы: Ch, Cint, Cling (последние два отличаются бек-ендом gcc vs llvm)

надо только изучать на предмет встраивания и удобства для вас.

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

Первый смотрел давно, не помню уже что не понравилось, остальные гляну, спасибо!

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

Интересное мнение. Во-первых: они таки есть, и довольно неплохо оплачиваемые, но лиспером сложнее стать, чем жабником или жабоскриптером. Во-вторых: сабжевыми делами в продакшине не занимаются никто, вроде как, кроме тех же лисперов. Так что очевидный вывод это я не ради денег:)

ixrws ★★★
() автор топика
Последнее исправление: ixrws (всего исправлений: 1)

Как насчет того, чтобы взять язык, «из коробки» умеющий в eval? Python, lua? Или тебе нужна высокая производительность сгенерированного кода?

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 2)
Ответ на: комментарий от Manhunt

На данный момент уже использую такой язык - javascript. Важна типизация и не то чтобы высокая производительность(хотя это важно), а низкие накладные расходы _на исполнение_. Большинство динамических языков больны разбуханием памяти в силу наличия gc, хотя тут конечно сейчас ворвутся защитники, но я тут не спорить пришёл.

В общем мотив прежде всего предсказуемость поведения. То есть программист должен заранее знать какие конструкции тяжелы(например подгрузка объекта из исходника, компиляция), а какие ничего не стоят(дальнейшнее исполнение). Никаких скрытых вещей вроде объектов, которые сами решаются когда им удаляться.

Интерес отчасти академический, отчасти практический - сильно зависит от результатов прототипа просто:)

ixrws ★★★
() автор топика

+1 к lua же.

рантайм мелкий и даже покусать можно, если всякая фигня типа строк не нужна, встраивается легко

anonymous
()

lua, python

anonymous
()

А что мешает компилировать через любой компилятор вроде gcc в разделяемую библиотеку и подгружать в процесс через dlopen? Зачем нужны какие-то библиотеки? Если код небезопасный, то компилировать в бинарник, запускать его и общаться с ним через пайпы. Для простого кода без кучи инклудов компилятор работает очень быстро.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: комментарий от Legioner

Да, такой вариант раньше и рассматривался, просто прошло время, руки наконец дошли, вдруг что появилось. В целом вариант рабочий, согласен.

ixrws ★★★
() автор топика

подожди чуток - скоро появятся железки с достаточной мощностью: можно будет компилить из исходников на-лету

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

В сказки про это могут верить только те кому меньше 22(опыта мало, не видел что каждые 7-10 лет одно и тоже говорят) или у кого переодическая амнизия(а это вещь распространённая среди людей).

А теперь давайте посмотрим на факты. Большинство средненьких сайтов тормозят уже на атоме, про старые компы я даже не заикаюсь. Вещи вроде Полимера тормозят даже на средних камнях. Для простейших задач управления портами уже используют распбери. К чем это я? А вот к тому, что компилять на лету можно было уже тыщу лет назад, тот же tcc довольно быстро компилял ядро перед запускам. Но делать это каждый раз, просто потому что можешь - это дебилизм. Если что-то изменилось - компиляй. Если не изменилось - подгружай. И такая методика работала и в 80х, вообще-то.

А на эти ваши скоро железо позволит - всегда выкатывают такие средства разработки, которые уже требуют нового железа.

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

Большинство средненьких сайтов тормозят

Большинство средненьких сайтов пишется анонiмусами на JS. Сейчас чтоб открыть цуко сайт с новостями мне браузер подтягивает мегабайты какой-то муйни. из них новостей килобайты.

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

Определение возраста еще не гарантирует успешность умозаключений, равно и как 4-е ядра на мобильнике еще совсем не значит, что это и есть мощность.

Перекладывание вычислений на клиента еще не означает решение проблем, а скорее всего, означает попытку решения не проблем за счет клиентов.

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

вот это более похоже на реальность

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

Кстати да, все время вспоминаю смолтолк, в котором нереальнейшая даже по сегодняшним меркам среда разработки, она же рантайм. При этом с очень низкой производительностью, под предлогом того, что удобство и гибкость намного важнее оптимизаций, а железо однажды сведет разницу в скорости между всеми программами на минимум, которым можно будет пренебречь.

loz ★★★★★
()
Последнее исправление: loz (всего исправлений: 1)

LLVM + libclang

Deleted
()

жирнейший рантайм в виде gcc или llvm

LLVM разбит на множество модулей. Если собрать только нужное, дракон жирным быть не должен.

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

Это я понимаю, понимаю также и то, что современные вещи вроде python или perl тоже не являются лёгкими:) Просто упомянул, потому что многие находят таскание с собой компилятора чем-то ужасным.

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

современные вещи вроде python или perl тоже не являются лёгкими

Современные вещи это Rebol/Red, у которых рантайм и стдлиба 1Mb. А питон и перл уже говно мамонта.

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

Малый рантайм - малая функциональность. Форт умещается в совсем слабых контроллерах, но программное окружение будет там никакое.

С технической точки зрения разницы вообще ноль, немного иначе делать компиляцию это не значит быть шибко современным.

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

Малый рантайм - малая функциональность

Просто посмотри что умеет Rebol в одном мегабайте рантайма.

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