Roadmap AHA! Lang: Ke Mana Langkah Berikutnya?

Status terkini pengembangan, prioritas Phase 2 — dari type inference sampai self-hosting — dan cara ikut berkontribusi.

16 Agustus 2026

Roadmap AHA! Lang: Ke Mana Langkah Berikutnya?

Setiap bahasa yang serius butuh peta jalan yang jujur. Ini dia roadmap AHA! Lang — apa yang sudah tercapai, dan apa yang sedang dibidik selanjutnya.

✅ Sudah Terwujud

Fondasi bahasa lengkap dan diuji oleh 417 test otomatis di CI:

  • Lexer & Pratt parser dengan pelaporan error yang jelas
  • Tipe Int, Bool, String dengan type-checking pass di compile-time
  • Operator: aritmetika, perbandingan, &&/||, prefix, assignment
  • Kontrol alur: if/else (ekspresi), while, for i in a..b, break/continue
  • Fungsi: parameter, return, forward references, mutual recursion
  • String struct: konkatenasi aman, ==/!=, len() O(1)
  • Array literals & indexing (codegen)
  • Builtins: print, print_str, abs, min, max, len
  • Eksekusi JIT via LLVM
  • CLI: --file, --emit-ir, --version
  • Ekstensi VS Code untuk syntax highlighting (editors/vscode)
  • CI pipeline: cargo check, tes otomatis, cargo build --release

Struct (F1) — Selesai

Struct kini berfungsi penuh di runtime:

  • Literal struct: Point { x: 3, y: 4 } — dibangun via insertvalue LLVM
  • Akses field: p.x dibaca via extractvalue
  • Field bertipe: name: string, age: int — layout LLVM sesuai tipe, diperiksa saat kompilasi
  • Mutasi field: p.x = value — lvalue sejati, diperiksa tipenya
  • Struct sebagai parameter & return value: struct dioper by-value ke fungsi, dan fungsi bisa mengembalikan struct

Type Inference & Annotations (F2) — Selesai

  • Anotasi tipe: let x: int = 5 — eksplisit int, string, bool, atau nama struct; nilai diperiksa tipenya saat kompilasi
  • Inferensi tipe: variabel tanpa anotasi tipenya di-infer dari ekspresi
  • Inferensi return type fungsi: fn greet() { "hello" } mengembalikan String — len(greet()) bekerja
  • If-expression dengan cabang string menghasilkan string sungguhan

Generics / Parametric Types (F3) — Selesai

  • Fungsi generik: fn pick<T>(a: T, b: T) -> T — tipe konkret di-infer dari tiap call site
  • Monomorphization: setiap kombinasi unik (nama, tipe konkret) menjadi fungsi LLVM terpisah — nol biaya runtime
  • Banyak type params: fn first<A, B>(a: A, b: B) -> A
  • Anotasi return type: -> T, -> int

🚧 Sedang dalam Pengerjaan (Phase 2)

Inilah yang paling menarik — arah besar bahasa ke depan:

1. Module System & Package Manager (F4)

aha install — ekosistem paket untuk membagikan dan memakai pustaka. Pintu gerbang menuju proyek berskala besar.

2. Resource Lifetimes (F5) — Dibekukan Sementara

Manajemen memori manual yang aman — tanpa garbage collector, tanpa kebocoran memori. F5 sengaja dibekukan sampai F1–F4 stabil: stabilkan dulu, lalu melangkah sedikit demi sedikit.

3. Actor-Model Concurrency (F6)

Konkurensi dengan message passing — memanfaatkan banyak inti prosesor tanpa sakit kepala.

4. Self-Hosting (F7)

Tujuan akhir: kompiler AHA! Lang ditulis dalam AHA! Lang sendiri. Saat tercapai, bahasa ini membuktikan kedewasaannya.

Tata Kelola Pengembangan

  • Branch workflow: setiap fitur dimulai di branch experimental/<fitur>, digabung ke development hanya setelah stabil; main hanya menerima PR dengan CI hijau.
  • Setiap fitur ditelusuri: setiap perubahan dicatat di changelog (EN + ID) — kita butuh jejak.
  • PRD sebagai acuan: semua fitur wajib berasal dari roadmap di PRD.md, bukan ide ad-hoc.

Ingin Berkontribusi?

AHA! Lang adalah proyek open source (MIT). Cara terbaik untuk mulai:

  1. Baca kode: kompiler ~ribuan baris Rust — mulai dari src/main.rs.
  2. Cari issue: bug report dan ide fitur di GitHub Issues.
  3. Kirim PR: panduan lengkap ada di CONTRIBUTING.md.

Visi kami sederhana: bahasa yang easy to read, powerful to wield — dan kamu bisa ikut mewujudkannya.