1.2, Аноним (2), 09:55, 21/01/2020 [ответить] [﹢﹢﹢] [ · · · ]
| +4 +/– |
Бинарник собранный gcc 25 мегабайт? Что там? Эти тоже "забыли" стрипнуть?
| |
|
|
|
4.53, Аноним (-), 14:27, 21/01/2020 [^] [^^] [^^^] [ответить]
| –1 +/– |
> LLVM посчитать забыли, там гигабайт 20.
Как это? Пакет с либой весит 7 мегов?
| |
|
5.65, Аноним (2), 14:42, 21/01/2020 [^] [^^] [^^^] [ответить]
| –2 +/– |
>> LLVM посчитать забыли, там гигабайт 20.
> Как это? Пакет с либой весит 7 мегов?
Для начала необходимо выяснить, что именно они имели в виду. Если это зависимость, которую этот код будет использовать для компиляции и только она, то логично будет сравнивать с равноценным кодом из gcc (он тоже умеет во всё то же, что и llvm, и даже лучше). А то выглядит как очередное сравнение тёплого с мягким и ни у кого из них не возникает никаких вопросов, главное результат и красивые слайдики.
А компиляторы llvm в процессе сборки действительно потребляют десятки гигабайт, и на диске там не 7 мегабайт в результате выходит.
| |
|
|
|
|
3.66, Аноним84701 (ok), 14:47, 21/01/2020 [^] [^^] [^^^] [ответить]
| +2 +/– |
>> Бинарник собранный gcc 25 мегабайт? Что там? Эти тоже "забыли" стрипнуть?
> да какая разница, если статичная линковка, то это очень круто
Очередная перепись нечитавших новость?
> Here are the notes for each table row:
> [1]: Wall time of compilation of sieve code (without any include file and with using the memory file system for GCC).
> [2]: The best wall time of 10 runs.
> [3]: The stripped sizes of cc1 for GCC, and the MIR core and interpreter or generator for MIR.
сс1 (правда ни разу не статистически слинкованный) размер из того же gcc9, плюс-минус лапоть, совпадает с приведенным в табличке.
| |
|
4.74, Аноним (2), 15:02, 21/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
Тут уже предлагают libllvm сравнивать. Давайте тогда libcc1 считать вместо этого, он там около сотни килобайт.
| |
|
5.75, Аноним84701 (ok), 15:15, 21/01/2020 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Тут уже предлагают libllvm сравнивать.
Кто и с чем предалагает?
> Давайте тогда libcc1 считать вместо этого, он там около сотни килобайт.
Те, кому для сборки LLVM нужны "десятки гигабайт", могут сравнивать что хотят и с чем хотят – кто же им запретит-то? o_O
| |
|
6.76, Аноним (2), 15:18, 21/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
>потребляет десятки гигабайт
Я привык собирать в tmpfs, очень болезненно реагирую на десятки гигабайт. Приходится собирать, сохраняя файлы на диск, а это намного медленней. А что?
| |
|
7.78, Аноним84701 (ok), 15:39, 21/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
>>потребляет десятки гигабайт
> Я привык собирать в tmpfs, очень болезненно реагирую на десятки гигабайт. Приходится собирать, сохраняя файлы на диск, а это намного медленней. А что?
Ну например вот это вот:
> 57M 11 янв. llvm70/lib/libLLVM-7.so
из недавнего "самосбора" (кастом с clang, lld-gold, без доков, санитайзеров и lldb - конченый результат ~ 400МБ) , сборка в tmpfs с лимитом в 5GB, на машинке с аж 8GB ОЗУ.
Брат^W все нормально собралось в фоне.
| |
|
8.80, Аноним (2), 16:08, 21/01/2020 [^] [^^] [^^^] [ответить] | +/– | А что такое старьё то В 1 поток Я много чего раньше собирал в tmpfs, включая к... текст свёрнут, показать | |
|
7.98, Michael Shigorin (ok), 19:42, 21/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
> Я привык собирать в tmpfs, очень болезненно реагирую на десятки гигабайт.
Подключайте десятки гигабайт свопа -- tmpfs+swap работает всё равно быстрее ext4, например.
| |
|
|
|
|
|
|
|
2.118, GentooBoy (ok), 09:18, 22/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
Разные подход к снаряду, в GNU Lightning нет промежуточного языка.
Тут в пору спросить чем лучше wasm or polyglot
| |
|
1.4, A.Stahl (ok), 10:01, 21/01/2020 [ответить] [﹢﹢﹢] [ · · · ]
| –2 +/– |
Это что же, у нас будут интерпретаторы Си и Си++? Они понимают что через полгода после релиза питонисты и прочие ПХПшники начнут массово убивать себя от безысходности? Эти два интерпретатора вытеснят на серверах всё кроме Лиспа. По понятной причине...
| |
|
|
3.8, A.Stahl (ok), 10:16, 21/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
У тебя есть "подкроватный" сервер? Вот и попробуй выпилить оттуда Лисп и сам всё поймёшь.
| |
|
4.149, Аноним (149), 23:29, 25/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
# eix -I lisp
No matches found
ну в принципе да, нельзя вытеснить того, чего нет
| |
|
5.150, Michael Shigorin (ok), 23:38, 25/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
> # есть закурить?
> No matches found
"а если найду?"
>>> ну в принципе да, нельзя вытеснить того, чего нет
(простите (не . удержался))
| |
|
|
|
|
3.26, A.Stahl (ok), 11:34, 21/01/2020 [^] [^^] [^^^] [ответить]
| –2 +/– |
> Не вытеснят из-за порогов вхождения в Питоны и Пыхи.
Си прост, да и Си++ не сложен пока не возиться с шаблонами и не городить что-то нетривиальное с наследованием. "Питоны и Пыхи" просто станут не нужны. Я во всяком случае не вижу никаких их преимуществ.
| |
|
4.37, Аноним (37), 12:44, 21/01/2020 [^] [^^] [^^^] [ответить]
| –2 +/– |
Трoллинг глупостью в 2020 году смотрится уже немного архаично, не находите?
| |
4.136, юникснуб (?), 19:26, 23/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
Интересно, а зачем использовать C++, если не использовать его нетривиальные возможности? Захотелось просто так в ногу пострелять?
| |
|
5.142, A.Stahl (ok), 19:45, 23/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
Понятия не имею о чём ты говоришь. Хочешь -- используй, не хочешь -- не используй.
| |
|
|
7.148, A.Stahl (ok), 15:39, 24/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
>Для решения простых задач C++ зачастую не оптимален в качестве инструмента: дольше разработка, больше риски ошибок.
Для простых задач "тяжеловес" Си++ ничем не хуже других языков. Совсем. Более того: внятное объявление типов и очевидная работа с памятью пресекают бОльшую часть ошибок ещё на этапе до компиляции. И это более заметно именно на небольших проектах. На больших проектах всё равно придётся обложиться планами, тестами т.п.
>И говорить о C и C++ в одном контексте, право слово, почти всегда некорректно.
Может и так, но они оба входят во множество хороших и привычных языков программирования и использовались мной именно в этом контексте.
| |
|
|
|
|
|
|
3.58, Аноним (-), 14:30, 21/01/2020 [^] [^^] [^^^] [ответить]
| +1 +/– |
В каком месте R вообще замена си? Эт ж надо такое придумать! :)
| |
|
2.51, Аноним (48), 14:23, 21/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
> Эти два интерпретатора вытеснят на серверах всё кроме Лиспа. По понятной причине...
Есть такое малознакомое понятие как ИТ безопасность, вот именно по этому понятию интерпретаторов, тем более с JIT на серверах у людей не будет.
| |
|
3.54, Аноним (37), 14:27, 21/01/2020 [^] [^^] [^^^] [ответить]
| +1 +/– |
Такая "безопасность" работает только при условии, что у злоумышленника не хватит квалификации собрать статический бинарник под целевую платформу. То есть — от пользователей Kali, разве что.
| |
|
4.131, Аноним (131), 15:36, 22/01/2020 [^] [^^] [^^^] [ответить]
| +2 +/– |
У людей имеющих элементарные понятия ИТ безопасности вся память, включая дисковую подсистему, выделяется или exec,ro или noexec,rw. Это требование DAC.
А запуск бинаря через:
/lib/ld-linux.so.2 /tmp/virus
У дистрибутивах для людей не работает.
| |
4.132, Аноним (132), 16:06, 22/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
> Такая "безопасность" работает только при условии, что у злоумышленника не хватит квалификации собрать статический бинарник под целевую платформу.
Садись, опять двойка.
Речь идет о выделении оперативной память в режиме RX для исполняемых программ, RW для изменяемых данных или только R для не изменяемых данных. Это базовые, обязательные требования DAC. Выделять оперативную память в режиме WX категорически запрещается!
Использование JIT противоречит этим правилам изменяя исполняемую область памяти.
Как с этим всем связаны уязвимости с переполнение буфера местным двоечника тоже объяснять надо?
| |
|
5.137, юникснуб (?), 19:29, 23/01/2020 [^] [^^] [^^^] [ответить]
| +1 +/– |
Не противоречит. Современные приличные JIT делают простую вещь: сначала выделяют память как RW, потом меняют права на (R)X. Все довольны.
| |
|
|
|
2.56, Аноним (-), 14:29, 21/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
> Это что же, у нас будут интерпретаторы Си и Си++?
Скачай уже наконец TCC и вот оно счастье :D. Он таки это самое умеет, прям в ридми написано.
И таки да - он таки сперва компилит, потом запускает. Хоть и быстро и оптимизации рядом не стояли с gcc и шлангом, но по сравнению с питоном и пыхом... :)))
| |
|
3.102, funny.falcon (?), 21:11, 21/01/2020 [^] [^^] [^^^] [ответить]
| –2 +/– |
TCC - GPL. А это резко ограничивает возможности его применения. Собственно, мне кажется, потому он и не взлетел в качестве платформы для массового JIT.
| |
|
4.109, Аноним (-), 04:19, 22/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
Не очень ффтыкаю как GPL компилера "в режиме интерпретера" ограничивает что-то. Код с ним при этом не линкуется.
А если это про более серьезную кодогенерацию - там скорее "ограничивает" общая тривиальность конструкции, все заточено на быстрый компил и простой код компилера. Но вот оптимальность такого кода по сравнению с gcc/clang... гм...
| |
|
|
2.82, nelson (??), 16:31, 21/01/2020 [^] [^^] [^^^] [ответить]
| +6 +/– |
>> Это что же, у нас будут интерпретаторы Си и Си++?
Подумали в своё время умные люди и создали Perl.
| |
|
3.138, юникснуб (?), 19:31, 23/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
Забавно, но нет.
Perl создавался для решения задач, которые при создании C ещё не были толком актуальны, а при создании C++ не рассматривались как основные.
| |
|
|
|
|
|
4.63, Аноним (-), 14:40, 21/01/2020 [^] [^^] [^^^] [ответить]
| +2 +/– |
Весьма валидный пойнт. Но LLVM с шлангом они кажется все-таки малость подтроллили.
| |
|
|
|
1.6, Аноним (6), 10:13, 21/01/2020 [ответить] [﹢﹢﹢] [ · · · ]
| +4 +/– |
> Компиляция в MIR должна осуществляться как минимум в 100 раз быстрее, чем в GCC;
Остальное время будет добрано на целевых компьютерах во время выполнения.
| |
|
2.9, Moomintroll (ok), 10:31, 21/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
>> Компиляция в MIR должна осуществляться как минимум в 100 раз быстрее, чем в GCC;
> Остальное время будет добрано на целевых компьютерах во время выполнения.
Исполнение MIR с использованием JIT должно быть не более чем на 30% медленнее, чем производительность исполняемого файла, собранного на основе того же Си-кода в GCC (с оптимизациями "-O2");
| |
|
3.27, Аноним (27), 11:35, 21/01/2020 [^] [^^] [^^^] [ответить]
| –2 +/– |
про компиляцию в внутреннее представление JIT намеренно умолчали? или не знали о таком?
| |
|
2.15, bw (ok), 10:50, 21/01/2020 [^] [^^] [^^^] [ответить]
| –1 +/– |
Закон сохранения энергии.
Или как вариант, код будет передаваться на "облака" RedHat и этот MIR, на самом деле, просто frontend.
| |
|
3.25, Аноним (37), 11:33, 21/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
Интересно, по какому закону сохранения этот "frontend" будет работать без интернета (а он будет).
| |
|
|
1.10, Аноним (10), 10:31, 21/01/2020 [ответить] [﹢﹢﹢] [ · · · ]
| +3 +/– |
Зачем столько новых промежуточных представлений? Уже существующих недостаточно?
| |
|
2.12, Аноним (12), 10:43, 21/01/2020 [^] [^^] [^^^] [ответить]
| +4 +/– |
Это не считая того, что выходной x86(-64) код - тоже промежуточное представление, внутри проца оно совершенно иное :D
| |
|
1.11, Аноним (12), 10:42, 21/01/2020 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
> Исполнение MIR с использованием JIT должно быть не более чем на 30% медленнее, чем производительность исполняемого файла, собранного на основе того же Си-кода в GCC (с оптимизациями "-O2")
Эпическое ненужно.
| |
|
2.14, Аноним (14), 10:48, 21/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
С другой стороны они все верят что именно их xIT будет праивть миром. В то время пока рынок не могут поделить .NET реализация и Java реализация, а они блин были первые выдумщики.
Осталось только дождаться когда Python и PHP выпустит свой Just-In-Time транслаторы и все мир будет счастлив.
| |
|
3.22, X5asd5 (?), 11:20, 21/01/2020 [^] [^^] [^^^] [ответить]
| +3 +/– |
а почему нельзя просто скомпилировать бинарник?
ну или два бинарника: для x86-64 и для aarch64 .
| |
|
|
5.33, X5asd5 (?), 12:14, 21/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
а почему бы сразу не написать сюда на форум, действительно, зачем же нужен jit ?
наверное чтобы сожрать оперативную память на которую пользователь ПК потратил денег а теперь не знает какбы утилизировать? для этого?
или для того чтобы запускаемая программа имела бы непредсказуемую производительность, неуправляемые характеристики?
| |
|
6.35, Аноним (30), 12:36, 21/01/2020 [^] [^^] [^^^] [ответить]
| +1 +/– |
Потому что в принципе бессмысленно что-то объяснять, если человек не знает, где используются скрипты
| |
|
7.100, Аноним (100), 20:37, 21/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
Там где нет денег сделать из MVP и POC проекта полноценное решение?
Тут всем на помощь и приходят полурешения на JIT
| |
|
6.83, Аноним (19), 17:46, 21/01/2020 [^] [^^] [^^^] [ответить]
| –1 +/– |
Значит пользователь ПК потратил недостаточно денег на оперативную память, чтобы запускаемая программа имела бы предсказуемую производительность, управляемые характеристики.
| |
6.101, Аноним (100), 20:38, 21/01/2020 [^] [^^] [^^^] [ответить]
| –1 +/– |
Дык известно же что производители железа просто щемят программистов этим вот и все
| |
|
|
4.61, Аноним (-), 14:33, 21/01/2020 [^] [^^] [^^^] [ответить]
| –5 +/– |
> а почему нельзя просто скомпилировать бинарник?
Потому что в языке с динамической типизацией проблематично просчитать все возможные изменения переменных, например, на этапе компиляции. Просто по Тюрингу - компилер не может вынести вердикт о том чего будет с вон той переменной дальше. И поэтому не может сгенерить сколь-нибудь эффективный код, всегда надо предусматривать что переменная внезапно полностью сменила тип. А это стало быть конкретный кус кода навешивать придется. Медленный и жирный.
Потому что в случае eval() надо еще... внезапно притащить с собой ВЕСЬ КОМПИЛЕР. В рантайме. Ну или как eval() то выполнять без этого? :)
| |
|
5.73, Аноним (73), 14:59, 21/01/2020 [^] [^^] [^^^] [ответить]
| +4 +/– |
> Просто по Тюрингу
Вот с этого момента можно дальше не читать - уровень содержимого примерно такой же: "слышал звон".
| |
5.104, X5asd5 (?), 22:30, 21/01/2020 [^] [^^] [^^^] [ответить] | +/– | вообще первоначальный тезис был про С другой стороны они все верят что именно... большой текст свёрнут, показать | |
|
|
3.34, Аноним (2), 12:35, 21/01/2020 [^] [^^] [^^^] [ответить]
| –1 +/– |
Уже есть numba. Она даже cuda умеет. Результаты так себе, скажем, cython обеспечивает производительность равную си, а тут может ещё и хуже в зависимости от условий стать.
| |
3.93, 0ffh (??), 18:36, 21/01/2020 [^] [^^] [^^^] [ответить]
| –1 +/– |
так cython УЖЕ есть
правда жизни состоит в том что в том месте где живут питоны и пыхи - самое место итерпретаторам
а всякие ускорители выполнения они конечно хорошо - но ускорители написания - как бы важнее
| |
|
|
1.13, Аноним (13), 10:45, 21/01/2020 [ответить] [﹢﹢﹢] [ · · · ]
| +5 +/– |
(унас_было_14_стандартов.жпг)
Но идея годная. Если взлетит, будет хорошо.
| |
|
2.28, neAnonim (?), 11:35, 21/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
Они хотят "крутое" название из трех букв. н.р ( C компиляторы: pcc, tcc, lcc, gcc..) итд по другим пунктам
| |
|
3.38, Аноним (37), 12:47, 21/01/2020 [^] [^^] [^^^] [ответить]
| –2 +/– |
> Они хотят "крутое" название из трех букв.
Пусть обратятся к Russian Hackers, они подскажут. И даже отправят туда.
| |
|
|
1.18, myhand (ok), 11:07, 21/01/2020 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> под лицензией MIT ... не исключается возможность портирования GCC на использование
Ушли у батьки Столлмана конпилятор...
Эх, успеют корпорасты реализовать задумки из "Право прочесть" к 2096-му году.
| |
|
2.24, Аноним (37), 11:30, 21/01/2020 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Ушли у батьки Столлмана конпилятор...
К тем, кто будет использовать старый gcc — выедут специально обученные люди, настучат по почкам и отправят в Siberia.
| |
|
|
|
3.141, господи (?), 19:41, 23/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
А если ISO выпустят релиз, а все остальные на эту бамажку покладут известно что, то это всё равно будет стандарт? ;) Многие вещи стандартизируют задним числом, если вы не в курсе. В том числе и в ISO.
| |
|
2.103, Аноним (103), 22:18, 21/01/2020 [^] [^^] [^^^] [ответить]
| –1 +/– |
я что не понял - чем оно от вм и байткода ллвм отличается кроме того что написано другими людьми и имеет меньшее окружение?
| |
|
1.31, Аноним (31), 12:00, 21/01/2020 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Какая-то детская фиксация на цифре 100. В сто раз быстрее, меньше... Прям как "мой папа в сто раз сильнее твоего, он машину одной рукой поднимет".
| |
|
2.40, Аноним (37), 13:07, 21/01/2020 [^] [^^] [^^^] [ответить]
| +2 +/– |
Современные физики и инженеры с их «разница величин оценивается как минимум в два порядка» недалеко от них ушли.
| |
|
1.41, nelson (??), 13:38, 21/01/2020 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
>> Код проекта написан на языке Си
ну, хотя бы, подходящий язык для реализации выбрали, а не хипстерскую растишку, уже норм.
>> в будущем планируется реализовать возможность генерации MIR для WebAssembly, байткода Java, CIL (Common Intermediate Language), Rust и C++
в случае с растишкой - это правильное решение, всё равно этому языку ничего не светит в системном программировании, а пилить веб-фреймворки хипстерам будет сподручнее на языке, транслируемом в представление для последуюшей JIT-компиляции вот этим вот JIT-компилятором MIR, к примеру.
транслировать же С и С++ в промежуточное представление... хз. зачем, если есть жаба.
| |
|
2.42, Owlet (?), 13:46, 21/01/2020 [^] [^^] [^^^] [ответить]
| +4 +/– |
> всё равно этому языку ничего не светит в системном программировании
... говорят люди, не имеющие понятия ни о расте, ни о системного программировании...
| |
|
3.50, Аноним (37), 14:22, 21/01/2020 [^] [^^] [^^^] [ответить]
| +1 +/– |
Это всё гуманитарные дисциплины, и настоящему айтишнику их знать не надо. Вот философия Unix — это да, без неё — вон из профессии.
| |
3.79, nelson (??), 15:52, 21/01/2020 [^] [^^] [^^^] [ответить]
| +4 +/– |
растишка - это диверсия в сфере разработки системного ПО. язычёк, в котором манипуляция объектамм в памяти осуществляется посредством костылей, придуманных для неосиляторов адресной арифметики, объективно не нужен
| |
|
4.124, Анончик (?), 12:46, 22/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
Растишка переносит отлов багов с адресной арифметикой с этапа исполнения на этап компиляции. Вот такая простая идея.
А нужно ему или нет каждый решает сам.
| |
|
|
2.67, Аноним (67), 14:47, 21/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
> транслировать же С и С++ в промежуточное представление... хз. зачем, если есть жаба.
GCC и сейчас это до некоторой степени делает. Хоть и несколько своеобразно.
Зачем? А затем что компилеру целящему в более чем 1 архитектуру удобнее сперва сгенерить код "абстрактно" а потом это уже транслировать в конкретный набор команд с их особенностями. Вообще совсем целиком переписывать вообще все пути кода под каждую новую архитектуру несколько утомительно.
| |
|
3.81, nelson (??), 16:11, 21/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
речь о промежуточном представлении для компиляции JIT-компилятором. а в случае с GCC дело не только в трансляции под разные архитектуры. абстрактное представление позволяет также добавить поддержку нового ЯПа
| |
|
4.110, Аноним (-), 04:26, 22/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
Насколько я понял идею этой штуки - это предлагается как некий IR, более логичный и юзабельный чем LLVMовский. В том числе в этом вроде бы предполагается возможность притащить "абстрактный" бинарник а на целевой платформе его перегнать в нативный относительно малой кровью.
В случае LLVM они подобные юзкейсы не предусмотрели как класс, насколько я понимаю. Что довольно странно, но жираф большой, ему видней. В этом местя есть некий шанс подстебать этих господ, занвя кусочек "их" ниши.
| |
|
5.125, Анончик (?), 12:49, 22/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
Просто llvm очень жирный и долго работает перегоняя свой ir в наивный код. Автор делает тоже самое только его реализация маленькая и быстро делает наивный код за счёт минимальной оптимизации.
| |
|
|
|
|
1.44, None (??), 13:57, 21/01/2020 [ответить] [﹢﹢﹢] [ · · · ]
| –8 +/– |
Вообще всякие JIT нужны для того, чтобы не светить исходниками клиентам, для чего это конторе, которая вроде как опенсорсом занимается?..
ой, простите, совсем забыл, что там новый хозяин... тогда всё становится на свои места, понятно, кто задачку поставил...
| |
|
2.52, Аноним (37), 14:24, 21/01/2020 [^] [^^] [^^^] [ответить]
| –2 +/– |
Опять пятнадцатицентовые из оракла. Унылые и однообразные, как всегда.
| |
|
1.45, Урри (?), 14:01, 21/01/2020 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Еще один убийца джавы?
Весело год начался. Один выкатывает очередного убийцу мейка, эти выкатывают убийцу джавы. Кто у нас будет следующим, очередной шел?
| |
|
|
3.72, arisu (ok), 14:57, 21/01/2020 [^] [^^] [^^^] [ответить]
| +3 +/– |
> Судя по описанию - достаточно разные штуки.
авторы сами срвнивают свой продукт с gcc(jit) и llvm. про libjit и firm же стыдливо умолчали — потому что не вышло бы тогда броского сравнения. и пришлось бы признаться, что MIR стали делать только потому, что libjit и firm под мерзкой, ненавистной корпорастам GPL.
ах, ну да: ещё MIR героически внедрил инновацию отказа от SSA. SSA чуть позже завезут — когда придётся докидывать оптимизаций; но уже без шума и помпы. запомните этот твит.
| |
|
4.143, господи (?), 19:48, 23/01/2020 [^] [^^] [^^^] [ответить]
| +1 +/– |
Они об этом прямым текстом говорят, предсказатель вы наш: "If we implement more optimizations, SSA transition is possible when additional time for expensive in/out SSA passes will be less than additional time for non-SSA optimization implementation".
Ну или вы хотели как-то странно пошутить, но не вышло. Сочувствую, со всеми бывает.
| |
|
|
|
1.49, Аноним (49), 14:22, 21/01/2020 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> Промежуточный код MIR может быть представлен в бинарном и текстовом (читаемом) виде.
Хм, непосредственно править байт код ... хм.
| |
|
2.69, Аноним (67), 14:49, 21/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
> Хм, непосредственно править байт код ... хм.
Ассемблер же правят. А это чем хуже?
| |
|
3.71, Аноним (49), 14:54, 21/01/2020 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Ассемблер же правят. А это чем хуже?
Тут просто кто то спросил чем ЭТО лучше чем JAVA байт код.
| |
|
4.111, Аноним (-), 04:28, 22/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
Ну например JAVA выросла в адского переусложненного монстра который подразумевает немеряный рантайм и либы и половина перечисленных в сабже юзкейсов на основе жабы просто не выглядит жизнеспособно.
| |
|
|
|
1.57, Аноним (-), 14:30, 21/01/2020 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
>В текущем виде реализация MIR во многим опережает изначально поставленные цели: проведённые тесты показали, что производительность компиляции в MIR быстрее "GCC -O2" в 178 раз
ЭЭ братан, не надо сравнивать тёплое с мягким, ты знаешь как компилируется сишный код. Сначала, идёт добавление заголовочных файлов, затем работает синтаксический и лексический анализаторы, затем код ассемблируется, только после, всего этого ассемблерный код синтаксиса, трушно Юниксового AT&T, превращается в бинарь.
>производительность исполнения отстаёт от нативного кода на 6%, размер кода меньше в 144 раза
Конечно, интерпретируемая Природа всегда медленее компилируемой природы.
>реализация MIR JIT составляет 16 тысяч строк кода.
Это не показатель. Разработчики GCC пишут на С++.
| |
1.60, erthink (ok), 14:30, 21/01/2020 [ответить] [﹢﹢﹢] [ · · · ]
| +4 +/– |
Затея интересная, точно будет полезна для JIT-изации и получения переносимого промежуточного во многих случаях. Однако, MIR целенаправленно содержит минимальный набор инструкций без SIMD, CMOV, FFS/CLZ/CTZ/POPCOUNT, SIN/COS и т.д. Получается этакий PDP-11 с поддержкой 32/64-битных операндов.
Такое "обрезание" совершенно оправдано назначением MIR и позволяет в разы сократить как объем кода, так и затраты на оптимизацию. Но нужно видеть и обратную сторону медали:
- при трансляции из GCC и LLVM в MIR для каждого builtin-а придется выбирать одно из трех: инлайнить цепочку инструкций, оформлять вызов к runtime-библиотеки (которую нужно поддерживать и поставлять отдельно), генерировать ошибку (т.е. нарушать совместимость с GCC/LLVM).
- использование продвинутых инструкций CPU всех определенного в MIR минимума потребует затрат на вызов функции (и связанного с этим пере-распределения регистров).
- оптимизация MIR-представления до уровня GCC/LLVM будет очень дорогой, так как требуется восстановление/распознание builtin/intrinsic-паттернов из россыпи простых MIR-инструкций и runtime-вызовов.
Поэтому на некоторых задач MIR будет вносить существенное замедление и никогда не сможет догнать GCC/LLVM. Это совершенно не проблема, и даже не недостаток, а осознанный компромисс. Главное потом не устраивать героическую битву с этим компромиссом (как в JVM).
| |
|
2.114, GentooBoy (ok), 08:29, 22/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
>- при трансляции из GCC и LLVM в MIR для каждого builtin-а придется выбирать одно из трех: инлайнить цепочку инструкций, оформлять вызов к runtime-библиотеки (которую нужно поддерживать и поставлять отдельно), генерировать ошибку (т.е. нарушать совместимость с GCC/LLVM).
Там речь идет про LLVM IR он тоже довольно простой, особых проблем быть не должно.
> - оптимизация MIR-представления до уровня GCC/LLVM будет очень дорогой, так как требуется восстановление/распознание builtin/intrinsic-паттернов из россыпи простых MIR-инструкций и runtime-вызовов.
Этого делать не планируеться, MIR это на подобии C1 из JVM.Вся эта работа изначально делалась для Ruby. Там сейчас подобие C2 из JVM на основе LLVM/GCC, а теперь пилят C1. Хотя сомневаюсь что Ruby что то поможет.
Будем надеяться что у Владимира Макарова получиться, но работа очень большая в одного можно зарюхаться.
| |
|
3.116, arisu (ok), 08:52, 22/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
> Будем надеяться что у Владимира Макарова получиться, но работа очень большая в
> одного можно зарюхаться.
такова печальная судьба больных NIH-синдромом. пусть хрюкается, сам этого захотел.
| |
|
4.120, GentooBoy (ok), 09:25, 22/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
Ну все немного сложнее, изначально это был пет проект как я понимаю. Потом шапка разрешыла работать фултайм. Ну а идея была в том что бы добавить в Ruby jit, хотя у core team очень странное видение, они хотят все свое без внешних зависимостей.
| |
|
5.121, arisu (ok), 09:33, 22/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
(на всякий случай: я не имел в виду ничего негативного. просто автор сознательно пошёл в NIH-территорию, а там Свои, Особые Правила. ;-)
| |
|
|
3.123, erthink (ok), 11:50, 22/01/2020 [^] [^^] [^^^] [ответить]
| +1 +/– |
>>- при трансляции из GCC и LLVM в MIR для каждого builtin-а придется выбирать одно из трех: инлайнить цепочку инструкций, оформлять вызов к runtime-библиотеки (которую нужно поддерживать и поставлять отдельно), генерировать ошибку (т.е. нарушать совместимость с GCC/LLVM).
> Там речь идет про LLVM IR он тоже довольно простой, особых
> проблем быть не должно.
Вы принципиально неправы. На всякий уточню:
- в MIR только самые простые инструкции, см. https://github.com/vnmakarov/mir/blob/master/mir.h
- в LLVM IR в 2 раза больше базовых типов данных, в ~10 раз больше базовых инструкций и несколько сотен intrinsic-ов, см. https://llvm.org/docs/LangRef.html
- невозможно "просто так" преобразовать LLVM IR в MIR, возникают масса проблем, в том числе обозначенные мной.
- с GIMPLE в GCC ровно тоже самое.
| |
|
4.126, Анончик (?), 12:58, 22/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
Эти отключают оптимизации llvm, дабы генерить как можно более простой llvm ir. О полном один в один переносе речь конечно не идёт.
Если вы уже залезли в репу то посмотрите что там сделано в llvm2mir
| |
|
5.129, erthink (ok), 14:19, 22/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
> Эти отключают оптимизации llvm, дабы генерить как можно более простой llvm ir.
> О полном один в один переносе речь конечно не идёт.
Теоретически конечно можно генерировать "более простой llvm ir".
Но практически это не имеет ценности:
- вы должны обучить каждый ir-генератор (условный clang или rust) генерировать такой куцый ir (фактический отдельный диалект LLVM IR).
- соответственно вы должны выпилить из условного rust все возможности связанные с расширенными инструкциями сделав куцый вариант условного rust.
- совместимость с таким куцым условным rust потребует правки исходников.
> Если вы уже залезли в репу то посмотрите что там сделано в
> llvm2mir
Посмотрел, там ровно то, что я описал в первоначальном комментарии.
Есть чуть конкретнее, то llvm2mir просто сообщает "unsupported/unimplemented" почти во всех случаях, о которых я говорю.
Собственно это явно описано в README проекта, только в других формулировках.
| |
|
|
|
|
3.130, erthink (ok), 14:25, 22/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
> следующая версия будет содержать все инструкции :D
Понимая сарказм, уточню на всякий:
- никакая следующая версия MIR не может поддерживать "все инструкции" LLVM IR, ибо тогда MIR потеряет смысл и превратиться в LLVM.
- следующие версии llvm2mir очевидно будут поддерживать большие IR-инструкций и интринисков, но большинство из них вынуждено будет транслировать в вызовы дополнительной runtime-библиотеки.
| |
|
|
1.77, Аноним (77), 15:31, 21/01/2020 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
>В компании Rad Hat ведётся разработка нового легковесного JIT-компилятора MIR
>Код проекта написан на языке Си
Это все что надо знать о нужности современных язычков...
| |
|
2.84, Аноним (84), 17:48, 21/01/2020 [^] [^^] [^^^] [ответить]
| +2 +/– |
ну дак не на расте же писать, у тех девственниц истерика случается при виде указателя.
| |
|
|
2.107, Led (ok), 00:20, 22/01/2020 [^] [^^] [^^^] [ответить]
| +8 +/– |
В ложку питона сколько бочек мёда не докидывай - всё равно питоном останется.
| |
2.112, Аноним (-), 04:29, 22/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
Для какой-нибудь обкоцаной недо-версии с более-менее статическими типами и без всяких eval... ?
| |
|
|
2.145, Аноним (103), 13:53, 24/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
>Но WASM же делает то же самое. Нахера?
и ллвм делает почти тоже самое, даже больше. Если кто знает - напишите зачем оно нужно при наличии ллвм и остального?
| |
|
3.146, erthink (ok), 14:22, 24/01/2020 [^] [^^] [^^^] [ответить]
| +/– |
>>Но WASM же делает то же самое. Нахера?
> и ллвм делает почти тоже самое, даже больше. Если кто знает -
> напишите зачем оно нужно при наличии ллвм и остального?
MIR предлагает простой универсальный компактный JIT с пермиссивной лицензией, который легко использовать, поддерживать и интегрировать. При этом для более 90% задач выдается более 90% скорости от полноценной "нативной" оптимизации.
1. Использование MIR в условном вашем проекте потребует в ~5 раз меньше усилий в сравнении с LLVM.
При этом не возникает пропорции "один рябчик (ваш код) и один конь (код LLVM)". Вам в разы проще поддерживать ваш проект и "владеть" вашим кодом.
2. Добавление и поддержка новой CPU-архитектуры в MIR требует в 50-100 раз меньше работы в сравнении с LLVM или GCC.
3. Если взять средний интерпретатор, то основное падение производительности происходит в циклах при работе с нативными машинными типами данных. Использование MIR позволяет получить тут более 90% от нативной оптимизации LLVM, но для этого потребуется в 5-10 раз меньше ресурсов, как при интеграции MIR, так и при работе MIR в runtime.
Как-то так.
| |
|
|
1.151, Lockywolf (ok), 00:15, 03/02/2020 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Можно, наверное, написать ридер mir-ir для Схемы, если там так мало инструкций. И получится компилятор Руби в Схему. Отличное решение, я считаю.
| |
|