Size: a a a

Compiler Development

2020 November 08

а

а это кто in Compiler Development
@hazer_hazer на каком языке ты программируешь?
источник

h

hazer_hazer in Compiler Development
Проблема в том, что я не знаю других языков типа Java, которые компилятся в байт-код (шарпы для меня черный ящик в этом плане). Но я против всё—класс, поэтому сложно смотреть на java
источник

h

hazer_hazer in Compiler Development
а это кто
@hazer_hazer на каком языке ты программируешь?
плюсы
источник

а

а это кто in Compiler Development
ок
источник

h

hazer_hazer in Compiler Development
а это кто
UB значит undefined behaviour, поведение неопределённое стандартом языка

Если в памяти записано число типа double а программа считывает int, поведение не определно, не понятно какое int число будет
Я понимаю. Я к тому, что когда пишешь что-то вроде static_cast<int>(constantPool[offset]), а там double, то у тебя все сломается. Но как это можно словить? Следовательно это должно проверятся, но смысл же в том, чтобы не проверять типы на рантайме...
источник

AS

Aleksey Shipilev in Compiler Development
EgorBo
а у вас прям суровый верификатор в джите? на перф джита не влияет?
Верификатор на загрузке байткода. Максимум на стартап влияет, поэтому верификатор можно было (когда-то) выключить.
источник

h

hazer_hazer in Compiler Development
Aleksey Shipilev
Верификатор на загрузке байткода. Максимум на стартап влияет, поэтому верификатор можно было (когда-то) выключить.
А. Понял. То есть огромный код перед началом работы будет долго грузиться...
источник

а

а это кто in Compiler Development
hazer_hazer
Я понимаю. Я к тому, что когда пишешь что-то вроде static_cast<int>(constantPool[offset]), а там double, то у тебя все сломается. Но как это можно словить? Следовательно это должно проверятся, но смысл же в том, чтобы не проверять типы на рантайме...
В констпуле у каждой константы написан тип, нужно один раз проверить что код читает правильный тип и всё
источник

AS

Aleksey Shipilev in Compiler Development
hazer_hazer
А. Понял. То есть огромный код перед началом работы будет долго грузиться...
Ну... это вы ещё не JIT-компилировали. В верификаторе мало где есть нелинейных мест, а в компиляторе если O(n^2) в важных местах, то уже все пляшут и танцуют, так што... ;)
источник

h

hazer_hazer in Compiler Development
Aleksey Shipilev
Ну... это вы ещё не JIT-компилировали. В верификаторе мало где есть нелинейных мест, а в компиляторе если O(n^2) в важных местах, то уже все пляшут и танцуют, так што... ;)
Ну, важное, что я осознал, время компиляции должно оптимизироваться в последнюю очередь. Не рантайм ведь
источник

AS

Aleksey Shipilev in Compiler Development
JIT-компиляция ещё тот рантайм же ж.
источник

E

EgorBo in Compiler Development
источник

E

EgorBo in Compiler Development
это к "важное, что я осознал, время компиляции должно оптимизироваться в последнюю очередь"
источник

AS

Aleksey Shipilev in Compiler Development
Ну смотрите: пока код не скомпилируется, претензий к качеству сгенерированного кода не предъявишь. Вывод? Таракан без ног не слышит.^W^W^W^W^W Медленее компилируешь -- меньше претензий!
источник

M

MaxGraey in Compiler Development
EgorBo
это к "важное, что я осознал, время компиляции должно оптимизироваться в последнюю очередь"
Сначала так думают разработчики компиляторов и получают C++, потом так думаю разработчики фреймворков и получаю boost, потом так думаю рядовые пользователи и… понимают что пора мигрировать на Go, Rust, Zig, Kotlin =)
источник

E

EgorBo in Compiler Development
MaxGraey
Сначала так думают разработчики компиляторов и получают C++, потом так думаю разработчики фреймворков и получаю boost, потом так думаю рядовые пользователи и… понимают что пора мигрировать на Go, Rust, Zig, Kotlin =)
Rust в этом списке пока лишний 😉
источник

h

hazer_hazer in Compiler Development
MaxGraey
Сначала так думают разработчики компиляторов и получают C++, потом так думаю разработчики фреймворков и получаю boost, потом так думаю рядовые пользователи и… понимают что пора мигрировать на Go, Rust, Zig, Kotlin =)
Пусть все думают, что у меня там какие-нибудь супер-умные проверки внутри)
источник

M

MaxGraey in Compiler Development
EgorBo
Rust в этом списке пока лишний 😉
Ну почему же, с cranelift положение должно немного улучшиться по крайней мере для дебаг сборок)
источник

E

EgorBo in Compiler Development
а, тут кто-то недавно писал что он уже есть в найтли?
источник

M

MaxGraey in Compiler Development
EgorBo
а, тут кто-то недавно писал что он уже есть в найтли?
Да, уже есть в найтли)
источник