Обновить

Комментарии 16

Можете накидать идей для будущих фич

Лично для меня хорошая стандартная библиотека значит намного больше, чем синтаксис. Но это такая фича, что быстро её не сделать )

Я с самого начала был нацелен и настроен на то, что нужно будет написать не только стд, но и приятную стд, а не как у плюсов)

многопоточка, например есть mpsc в Rust оч удобная, правда из-за арк нюансы, но они невелируются удобной многопоточкой, поздравляю

Многопоточки пока что нет, но хотелось бы добавить её. Для начала мне стоит самому разобраться полностью как она работает и как воссоздать довольно удобное решение в IR дракона

Обычный следующий шаг в таких случаях - переписать компилятор языка с C++ на Onyx, в процессе и идеи будущих фич появятся :)

К этому я и пытаюсь стремиться) Но пока что не знаю как это делать без LLVM апи. Наверное придется траслировать код в IR

Обычно так и делается. У LLVM есть свой frontend и backend: frontend LLVM транслирует с какого-нибудь языка в IR, а бакенд транслирует с IR в машинные коды выбранной платформы. Между ними LLVM делает миллион своих оптимизаций над IR.

Все что вам надо, это написать frontend LLVM для Onyx на Onyx.

Понял, спасибо, попробую представить примерный концепт того, как это будет выглядеть. Правда реализовывать я это буду очень нескоро

Замечательная статья, продолжайте!

Вижу, что некоторые комментаторы подталкивают вас далеко вперёд, но я бы хотел обратить внимание на очень важный момент: на работу с памятью. Сейчас у вас лишь есть выделение памяти на стеке (alloca в llvm), но вы ведь 100% захотите выделять память и в куче тоже. Но тогда сразу нужно подумать о том, кто ответственен за это: или разработчик (как в C malloc/free, как в C++ new/delete) или язык (через GC как во многиех языках или посложнее) или как-то ещё.

Это обязательная история, но после этого вас остановит только фантазия

Вы абсолютно правы, и я бы не хотел повторять историю гошки, то есть без GC. Думаю, сделать операторы new/delete как в плюсах потому что они как по мне более красивые что-ли. Однако создание объектов в куче может быть полезным только в том случае, если в языке будут добавлены указатели. Сейчас указателей нет, хотя в скором времени планирую добавить. Спасибо за поддержку, я обязательно буду продолжать писать про свой язык) Ждите следующую пачку обновлений!

Можете попробовать реализовать RC вместо GC. Только в этом случае придется подумать как решать проблему циклических зависимостей - тут придется дописать генерационный GC. Либо пойти по пути владения-перемещения!

GC - не мой случай, так что либо буду пытаться добавлять владение, либо всё будет на совести разработчика :)

Я тоже пишу свой язык (с июля, я надолго забивал на разработку) на LLVM, и компилятор пишется на C# с созданием той структуры которая позволит потом перенести н свой ЯП, по синтаксису у нас выходит достаточно похоже, пока мой репозиторий компилятора закрыт, в компиляторе сейчас реализую правильную работу с функциями, переменными. У меня транслируется весь кодсначала в промежуточный, а потом в IR, из-за чего я внёс оптимизатор в свой компилятор, и могу легко реализовать интерпретатор, я уже давно реализовал работ с памятью, компиляцией нескольких файлов и многое другое.

Это очень круто проект, так держать!

Удачи тебе и Вертексу с проектами. Интересное дело.
Сама недавно полезла в такое дело и решила поискать инфу и забрела сюда. Правда, поначалу я просто хотела сделать аналог YAML для хранения конфига одного проекта, но меня занесло до введения слов if else function и всего остального зоопарка в концепцию… пришлось создавать проект на расте и заиметь больше мотивации на расте же и писать (по хорошему один мой старенький проект надо переписать с AHK на него…).
Даже как-то упрощается восприятие языков, когда ты потихоньку узнаёшь как оно выглядит под капотом (очень бегло проходилась по репозиториям cpython, lua и прочих).

Спасибо) Удачи тебе с твоим проектом! Я пытался читать репозитории GCC, Swift, Go, Rust, правда все что я понял - там слишком много страшного кода, который совершенно не понятен :(
Приходится как-то выкручиваться и самому изобретать велосипед, хоть и уже и так видно, что он получился так себе. Надо будет почитать книжек по компиляторам

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации