в мейнлайне - навряд ли, а так - есть clang, D портируют
LLVM так быстро движется, особенно если брать с учётом таких современных бэкендов как Rust или Zig. Трудно будет поддерживать их, если форк. Знаю по себе, так как есть опыт работы с LLVM плагинами - они API меняют чуть ли не каждый релиз.
LLVM-9 есть в ОС Эльбрус, я сейчас D портирую под него (компилятор LDC).
А можете рассказать в чём заключается портирование? Хотя бы в общих чертах
чтобы компилятор собирал код под e2k
Это понятно Я про другое: вот компилятор D отдаёт llvm какой-то её ассемблер, а дальше она генерит машинный код. Насколько я понимаю, llvm уже умеет выдавать машинный код эльбруса. В чём же тогда затык с компиляцией d без патчей? И в чём заключается фикс тогда?
Интрисинки какие-нибудь?
Нет, там IR код компилируется модифицированным lcc
какой-то её ассемблер - LLVM IR (расширение .ll или .bc) фикс заключается вот в чём: - самому D нужно было добавить поддержку e2k, т.к. вот этот LLVM IR он не совсем кроссплатформенный, а всё равно учитывает особенности архитектуры - заменить те комманды которые llvm на эльбрус не может перевести, к примеру он не знает fneg, инвертирование знака числа с плавающей запятой. - на эльбрусе llvm-9, а LDC собирается минимум с 10ой версией, лучше с 11ой, пришлось понижать версию. - написать druntime под архитектуру - написать биндинги к системным библиотекам, т.к. они хоть и похожи на линукс x86, но есть отличия
а не хотите написать страничку altlinux.org/эльбрус/D — вот прям с этим текстом для начала? :) на вики даже регистрироваться необязательно (тогда src ip в публичном логе осядет), ну или маякните, чтоб быстро подтвердил
Мы чуть позже сделаем отдельный сайт с нашей версией компилятора D + фреймворк для разработки кроссплатформенных приложений, там же будет и форум и чат для обсуждений языка D. И про все особенности портирования тоже там будем рассказывать. Но это будет попозже.
Кстати, почему именно D для e2k? Не самый популярный выбор.
Обсуждают сегодня