Sitter till och från och bygger en kompilator för ett språk jag kallar Carth: https://gitlab.com/JoJoZ/carth. Jag skriver i Haskell, vilket jag tycket är ett väldigt kul språk i allmänhet, och ett väldigt smidigt språk för att skriva kompilatorer i synnerhet. Goda tillgångar på bibliotek, papers, och guider för framförallt parsning och typcheckning, men också språkfunktioner som algebraiska datatyper gör jobbet smidigt.
Projektet är inte primärt ämnat att bli ett storslaget mainstream-språk, utan det är främst för mitt eget nöje jag kodar. Kanske får jag en dag till nog med features för att det ska kunna vara för egen nytta med ;).
Den grundläggande motivationen bakom själva språket (Carth) är att jag verkligen gillar Haskell, men saknar Lisp-syntaxen från Scheme. Även om det kan vara lite mer svårläst ibland så älskar jag simpliciteten med uniform prefix-syntax i Lisp-stil, och sådan syntax lämpar sig vidare väldigt väl för struktur-baserad kodredigering à la ParEdit - där problem med indentering och kodformatering är ett minne blott! Carth är alltså tänkt att ha ett statiskt typsystem likt Haskells, men syntax och "känsla" mer likt Scheme.
Hur väl det progresserar är lite svårare att svara på. Motivationen att hacka försvinner och återkommer var och varannan dag, så jag gör inte regelbunden progress. Ibland stöter jag på svårare problem med, som kräver att jag läser lite papers och lär mig nåt nytt om jag vill ha en implementation som inte absolut suger. Just nu har jag änna fastnat på hur jag ska implementera pattern-matchning. Jag har en tanke, och ett paper jag ska läsa, men jag har för tillfället tappat kodlusten inför detta hinder. Förhoppningsvis kommer jag igång snart igen. Vem vet, kanske når jag 1.0 inom 1~3 år?
Vad gäller framtida projekt har jag många idéer.
Jag tänker utveckla ett omfattande standardbibliotek till Carth med allt ifrån fil-hantering till parallelism.
Jag vill lära mig lite Vulkan - först grunderna, och sedan om deras ray-tracing extensions och compute shaders; jag vill skriva en pathtracer i Rust (språket); jag vill skriva en GPU accelererad path-tracer som funkar med både Nvidia och AMD kort; och jag vill lära mig om Radeon Rays. Förhoppningsvis, men inte alls säkerligen, är många av dessa punkter kompatibla så jag kan göra ett enda projekt.
Jag har flera spelidéer jag vill pröva. Här kan jag tänka mig att arbeta antingen i Unity, Godot, Rust, eller Carth, beroende på vad som är möjligt och lämpligt.
När Carth är "klart" vill jag skriva en grafikmotor, en fysikmotor, och ett spel baserat på dessa i språket. Detta hade också tjänat som en bra demonstration av vad man kan göra med språket. Skulle också vilja skriva lite guider, bloggposter, eller en bok om hur jag går till väga för att göra allt detta. Kanske skriva projektet med literate-programming och exportera en "bok" utav det?
Har också flera några idéer för embedded-projekt som uppfyller behov jag har i vardagen. Bland annat vill jag skapa en enhet som man pluggar in i en dator/spelkonsol/etc som visar sig som en ljudenhet, och strömmar ljud via wifi till en mottagar-enhet som man kopplar till en förstärkare eller receiver. Det skulle alltså vara lite som bluetooth-ljud, fast jag skulle praktiskt sett kunna ignorera bandbredds- och energiförbrukningsbegränsningar vilket hade låtit mig minska latensen. Det skulle potentiellt också kunna vara mer kompatibelt än bluetooth, då bl.a. Playstation 4 tillåter output av ljud till en USB-ljudenhet, men inte till en bluetooth-ljudenhet. Har säkert ett dussin STM32F103-kort jag köpte billigt på ebay liggandes, så så fort jag får tid är det bara att pilla.