Я могу посоветовать написать парсер и компилятор простого языка с компиляцией в webassembly (можно взять синтаксис js и его минимальное подмножество вроде переменных, if-ы, циклы, скоупы и объекты как сахар над байтовым смещением).
Цель - реализовать минимальное необходимое количество конструкций языка достаточных для записи самого компилятора. То есть парсер и компилятор этого языка будет написан на этом же языке.
Вот пример такого проекта -
https://github.com/PierreRossouw/wats - комилятор мини-языка который умеет парсить и компилировать сам себя занимает всего лишь 3 тысячи строк кода.
В чем профит - опыт написания такого компилятора позволит понять принципы и функционирования языков изнутри - какие части относятся к парсеру (и являются всего лишь синтаксическим сахаром) а какие к самому компилятору, как работают переменные и скоупы, как работают объекты поверх плоской памяти, откуда берутся типы и строгая типизация (например для самого webassebly уже потребуется написать базовую типизацию и propagation типов переменных), какие фичи языка необходимы а без каких можно обойтись и т.д