Lamina - Bağımlılık olmadan sıfırdan yazılmış bir derleyici backend’i
(github.com/SkuldNorniern)Lamina, girdi olarak Intermediate Representation code (IR code) alıp makine kodu/binary üreten bir derleyici backend projesidir.
Son 4~5 yıldaki dil/derleyici çalışmalarım ve projelerim temel alınarak başlatıldı; derleyicilerle ilgilenenler için sezgisel olarak anlaşılabilecek basit bir referans olmasını umuyorum.
Şu anda desteklenen platformlar
- macOS (aarch64)
- Linux (x86_64)
- WebAssembly (wasm32/64)
Desteklenmesi planlanan platformlar
- Windows (x86_64)
- macOS (Intel)
- Linux (aarch64)
- Risc-V
Windows aarch64 için yazarın cihazı olmadığı için öncelik düşük ve bu nedenle şimdilik dahil edilmedi.
Mevcut durum
Şu anda derleyici optimizasyon pass’leri olmadığı için hız, C#’tan biraz daha yavaş seviyededir.
Bir sonraki güncellemelerden birinde Machine IR katmanının uygulanması planlanıyor ve bununla birlikte optimizasyon pass’lerinin de eklenmesi öngörülüyor.
Ayrıca 0.1 sürümünden önce Testcode ve codegen bölümlerinde yapay zeka kullanılarak üretilmiş içeriğin büyük kısmı silinip yeniden yazılacak.
Derleyici frontend örneği
Brainfuck-Lamina Repo - basit bir Brainfuck derleyicisi
Sonraki geliştirme için planlanan özellikler
- GPU code generation desteği (ileride sıfırdan yazılmış bir ML kütüphanesinin backend’i olarak kullanılacak)
- JIT derleme desteği
- Debugger gibi araç setlerinin sağlanması
- Sıfırdan yazılmış assembler ve linker sağlanması (mevcut yardımcı araç desteği korunacak)
2 yorum
Gerçekten harikasınız vay be
Henüz çok eksikleri olan bir proje ama
buna olumlu baktığınız için teşekkür ederim!
Projeyi geliştirmeye devam edip, derleyicilerle ilgili çalışan kişiler için iyi bir kaynak olmasını umuyorum