Kompilator
(Projekt tworzony w latach 2007-2009)
Projekt rozpoczął swój żywot jako prosty język skryptowy - rozwinięcie mojego silnika do gier. Miał ułatwiać rozszerzanie funkcjonalności bez potrzeby rekompilacji kodu. Wraz z rozwojem projektu zauważyłem braki w już istniejących językach, oraz że użytkowników języków skryptowych narzeka na ich prędkość. Stąd narodził się pomysł na stworzenie rozwiniętego kompilatora dla języków dynamicznych stosującego optymalizacje dostępne dla języków statycznie typowanych.
Do dziś udało mi się stworzyć lekser/parser dla własnego języku programowania (stosowanego jako przykład działania kompilatora), wirtualną maszynę oraz pośrednie kroki od drzewa składniowego do kodu bajtowego. Podstawowe optymalizacje jak propagacja stałych oraz eliminacja wyrażeń podobnych są już zaimplementowane. W przyszłości będę wprowadzał nowe ulepszenia jak usuwanie martwego kodu czy optymalizacje budowane na formie pośredniej SSA.
Ostatnio wprowadzałem wiele zmian przez co backend chwilowo nie działa. Postaram się posklejać go najszybciej jak się da i już wkrótce dodam pliki wykonywalne kompilatora i wirtualnej maszyny.