home.social

#компиляторы — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #компиляторы, aggregated by home.social.

  1. Архитектура RayQuiro: от синтаксического дерева и байт-код ВМ до нативного машинного кода через LLVM

    Привет, Хабр! Меня зовут mixitosik, я разрабатываю открытый язык программирования общего назначения RayQuiro . Когда берешься за создание собственного языка, большинство гайдов и туториалов быстро упираются в тупик: они учат писать либо «игрушечные» древовидные интерпретаторы (Tree-walk AST), либо простые трансляторы в C. На практике же любой язык общего назначения требует решения жестких системных задач: проектирования компонуемой модульной системы, многоуровневого пайплайна исполнения (для мгновенных итераций и для продакшена), кроссплатформенного рантайма и интеграции легковесного GUI без раздувания зависимостей до размеров Electron. В этой статье я по шагам разберу внутреннее устройство RayQuiro: структуру парсера и AST, архитектуру стековой виртуальной машины, генерацию IR для LLVM-бэкенда, а также инженерные грабли, на которые пришлось наступить при реализации динамического языка со строгим управлением памятью.

    habr.com/ru/articles/1098314/

    #виртуальная_машина #парсер #llvm #байткод #c++ #компиляторы #системное_программирование #яп #ast #rayquiro

  2. Почему число это плохой адрес для инструкции?

    В какой-то момент HydraScript перестал справляться со своей основной задачей — выполнять программы. Статический анализ падал на корректном коде, и его пришлось отключить. Кодогенерация назначала инструкциям неверные адреса: виртуальная машина зацикливалась или падала с исключением. Логика анализа и генерации кода была размазана по иерархии узлов AST. Добавлять возможности языка становилось всё сложнее, а разобраться в очередном баге было отдельной задачей. Пришлось остановиться и подумать, как вообще дальше развивать проект. Я решил отделить операции от дерева и выбрал для этого Visitor.

    habr.com/ru/articles/1097574/

    #инструкция #адрес #кодогенерация #компиляторы #compilers #трехадресный_код #instruction #addressing #codegen #intermediate_representation

Share on Mastodon

Enter the server where you have an account.