Подходит ли D для написания компилятора Tracing JIT?

Я хотел бы написать интерпретатор и трассировку JIT для языка программирования, который я разрабатываю. У меня уже есть многолетний опыт программирования на C++, но мне было интересно, может быть, новые альтернативы будут лучше. Во времена моего знакомства с C++ меня больше всего разочаровывало использование заголовочных файлов для работы с неуклюжей моделью компилятора с одним -проходом. Проблема в том, что не все языки одинаково подходят для этой цели. Для моей трассировки JIT,Мне нужно иметь возможность записывать исполняемый код в память и иметь вызов интерпретатора для этого кода. Мне также понадобится сгенерированный код, чтобы иметь возможность обратного вызова функций хоста.

Я начал смотреть на Go и увидел, что в языке есть указатели, но нет арифметики указателей. Это сразу показалось мне огромной проблемой. Я вполне могу захотеть написать свой собственный распределитель и сборщик мусора. Мне нужно будет внимательно следить за тем, как мои языковые объекты размещаются в памяти, и иметь возможность получать адреса определенных полей и писать в них. Если нет способов справиться с этим, похоже, что уровень Go не достаточно низкий -для моих целей.

Язык D кажется многообещающим. В нем есть арифметика указателей и четкое описание ABI, необходимого для входа и выхода из D. Я слышал о нем много хорошего. У него также есть сборщик мусора, который удобен для написания компилятора, но у меня все еще есть несколько вещей, в которых я не уверен:

  1. Есть ли в D стандартные библиотеки, которые позволят мне помечать участки памяти как исполняемые?

  2. Если я выделю большой кусок памяти, которым я хочу управлять сам, с моим собственным сборщиком мусора, и у меня будет куча указателей, направляющихся туда, создаст ли это проблемы со сборщиком мусора D?

  3. Насколько хорошо D взаимодействует с кодом C, по вашему опыту? Достаточно ли легко загружать динамические библиотеки C и вызывать их?

Наконец, есть целый аспект поддержки. Для тех, кто использовал D в Linux, насколько хорош набор инструментов? Есть проблемы? Кто-нибудь писал JIT-компилятор на D, и если да, то каков был его опыт?

5
задан Maxime C. 27 July 2012 в 21:08
поделиться