Size: a a a

Compiler Development

2020 December 01

VT

Vsevolod Tolstopyato... in Compiler Development
EgorBo
А знаком тут кто с Kotlin-Native, мне интересно насколько они счастливы с ref-counted GC и как борятся с цикличными ссылками? А то вот тут смотрю https://github.com/JetBrains/kotlin-native/blob/master/runtime/src/main/kotlin/kotlin/native/internal/GC.kt#L11-L14 - это что, два гц по сути?
Как правильно заметили, с циклами борятся отдельным проходом trial deletion.
Имплементация несмертельно сложная исключительно потому что мутабельные объекты нельзя шарить между потоками, а в случае атомиков циклы запрещены (не собираются и текут). Оригинальная задумка refcount -- бесшовный интероп с ObjC/Swift.
Но сейчас всё активно переписывается, потому что пришло понимание, что "нельзя шарить мутабельные объекты" -- очень неудобная модель памяти для промышленного программирования :)
источник

BD

Berkus Decker in Compiler Development
MaxGraey
Для эффективного jit-а нужно писать в исполняемую секцию. У wasm нет такой секции с доступом под запись, только линейтая память для данных и таблица для indirect calls и все это обязано провалидируется при инстанциации, без валидации ни одна vm не рискнет запускать wasm. Так что, что бы сделать jit. придется все разбивать на куски - модули и периодически их переинстанцировать. Это очень медленно будет, кроме того не все vm поддерживают мультимодульность, для них придется делать что то вроде динамической линковки, которая вообще вряд ли адекватно реализуема сейчас) Ну или полность каждый раз создавать новый модуль (если это скажем 2 мб) то лишь одно инстанцирование + валидация займут несколько секунд а то и больше без возможности стриминга) Оно ведь пойдет мимо кэша
источник

M

MaxGraey in Compiler Development
Не, вопрос не про jitting wasm -> native. А про jitting С# -> wasm =)
источник

M

MaxGraey in Compiler Development
Есть еще WAVM ксати. Он использует LLVM JIT под капотом
источник

M

MaxGraey in Compiler Development
Но jit этот не тот jit к которому все привыкли. Он однонаправленный (без интерпретатора и деоптимизаций)
источник

t

trsfrm2smgen in Compiler Development
Привествую всех,не могу понять зачем к токену всегда добавляют запись из таблицы символов,вдруг токен описывает какой то оператор или операцию? (это написано в книге про компиляторы,где дракон нарисован 2 издание)
источник

h

hazer_hazer in Compiler Development
trsfrm2smgen
Привествую всех,не могу понять зачем к токену всегда добавляют запись из таблицы символов,вдруг токен описывает какой то оператор или операцию? (это написано в книге про компиляторы,где дракон нарисован 2 издание)
Ты имеешь в виду, почему структура
Token {
   TokenType type
   String val
}

Абстрактно

А не
Token {
   TokenType type
   Union {string, Operator, Keyword, monostate} Tag
}

?
источник

t

trsfrm2smgen in Compiler Development
+
источник

h

hazer_hazer in Compiler Development
Давай в @LanguageDev
Здесь про компиляторы
источник

t

trsfrm2smgen in Compiler Development
это frontend AST
источник

t

trsfrm2smgen in Compiler Development
или здесь только backend и opt
источник

t

trsfrm2smgen in Compiler Development
?
источник

h

hazer_hazer in Compiler Development
Это больше тема дизайна. Тут скорее обсуждают компилирование в машинный код или, например, llvm ir, нежели структуру япов и синтаксис
источник

t

trsfrm2smgen in Compiler Development
hazer_hazer
Это больше тема дизайна. Тут скорее обсуждают компилирование в машинный код или, например, llvm ir, нежели структуру япов и синтаксис
:),а такие темы как траспилеры или трансляция src->IR ?)
источник

t

trsfrm2smgen in Compiler Development
именно не дизайн а сам внутренний процесс
источник

t

trsfrm2smgen in Compiler Development
трансляции в IR
источник

h

hazer_hazer in Compiler Development
trsfrm2smgen
:),а такие темы как траспилеры или трансляция src->IR ?)
Спроси лучше админа какого-нибудь/модератора. Меня один раз уже забанили)
источник

t

trsfrm2smgen in Compiler Development
понял)
источник

PS

Pavel Samolysov in Compiler Development
По моему вопрос именно для этого чата
источник

M

MaxGraey in Compiler Development
все нормально. В том чате теория, дизайн, философия и холивары. Здесь непосредственная практика и детали реализаций всего что касается компиляторостроения
источник