17 poin oleh GN⁺ 2025-10-10 | 1 komentar | Bagikan ke WhatsApp
  • Lavandula adalah framework web ringan berbasis bahasa C yang dirancang untuk pengembangan aplikasi web modern
  • Menyediakan lingkungan pengembangan yang intuitif dan cepat, dengan fokus pada produktivitas dan performa tanpa fitur yang tidak perlu
  • Sudah mencakup sebagian besar fitur penting seperti sistem controller/routing, pipeline middleware, framework pengujian, library SQLite/JSON
  • Ke depannya direncanakan perluasan fitur seperti ORM, cookie sesi, penyajian file statis, integrasi dengan berbagai database
  • Kemudahan bagi pengembang dimaksimalkan melalui pembuatan proyek cepat berbasis CLI, unit test bawaan, dukungan variabel lingkungan dan logging

Lavandula: gambaran umum framework web C yang ringan dan berkinerja tinggi

  • Lavandula adalah framework web ringan berbasis bahasa C yang dirancang agar aplikasi web modern bisa dibuat dengan cepat dan sederhana
  • Tujuan utamanya adalah kesederhanaan, kecepatan tinggi, dan produktivitas tinggi; alih-alih mengejar fitur yang rumit, framework ini berfokus pada hal-hal yang benar-benar diperlukan dan mengurangi beban yang tidak perlu dari framework berat

Fitur utama dan kegunaannya

  • Dibuat berbasis C sehingga hanya menyertakan dependensi seminimal mungkin
  • Menyediakan sistem controller dan routing sehingga endpoint HTTP dapat disusun dengan mudah
  • Mendukung metode HTTP seperti GET, POST serta dilengkapi pipeline middleware lokal/global
  • Mendukung pembuatan dan menjalankan proyek dengan cepat melalui alat CLI (lavu)
  • Memiliki framework unit test bawaan, pemrosesan variabel lingkungan, logging, integrasi SQLite, dan library JSON bawaan

Fitur yang sudah selesai saat ini

  • Sistem controller/routing
  • Dukungan endpoint berdasarkan metode HTTP (GET, POST, dll.)
  • Pipeline middleware (lokal/global)
  • Dependensi minimal (berbasis kode C murni)
  • Scaffolding proyek yang mudah lewat CLI
  • Framework unit test bawaan
  • Dukungan variabel lingkungan, sistem logging
  • Integrasi SQLite/library JSON bawaan

Fitur yang sedang dikembangkan

  • Parsing body JSON HTTP
  • Cookie sesi
  • Pengaturan kebijakan CORS
  • Lavender ORM
  • Mesin template HTML ELA (Embedded Lavandula)

Rencana ke depan (roadmap)

  • Rate limiting
  • Penyajian file statis
  • Integrasi PostgreSQL, MySQL
  • Kandidat framework dependency injection
  • Otomatisasi daftar endpoint/route yang dapat didaftarkan
  • Pembuatan otomatis model JSON dan fungsi CRUD (menggunakan perintah lavu model)
  • Pemrosesan parameter URL dan routing dinamis

Gambaran cara membuat dan menjalankan proyek

  • Perintah CLI: lavu new my-project untuk otomatis membuat folder proyek dan struktur dasarnya
  • File yang dibuat otomatis:
    • File konfigurasi (lavandula.yml)
    • Source utama/controller/route
    • makefile
    • Kode pengujian, dll.
  • Menjalankan dengan cepat: pindah ke folder lalu jalankan lavu run untuk langsung menyalakan server lokal, port default http://localhost:3000/

Lisensi dan informasi lain

  • Lisensi: MIT License
  • Sesuai semangat open source, siapa pun dapat memperbaiki dan berpartisipasi
  • Ditulis berbasis C (97.3%), dengan sebagian kecil Makefile/Shell script

Ringkasan keunggulan Lavandula

  • Sebagai framework web lengkap yang sangat langka di ekosistem bahasa C, framework ini sangat unggul untuk lingkungan dengan sumber daya terbatas atau implementasi server super cepat
  • Dibanding framework populer, framework ini dioptimalkan untuk kecepatan lebih tinggi dan overhead lebih rendah
  • Dengan CLI, alat bawaan, dan struktur minimalis, kurva belajarnya pendek dan produktivitasnya tinggi

1 komentar

 
GN⁺ 2025-10-10
Komentar Hacker News
  • Saya merasa ini adalah kode C yang paling rapi, modern, dan indah yang pernah saya lihat belakangan ini. Memang ini bukan kernel, tetapi dibandingkan dengan proyek besar yang penuh #ifdef dan underscore, saya rasa ini justru contoh yang bagus untuk mempelajari estetika C. Terutama, ini pertama kalinya saya melihat kode pengujian ditulis di C dengan cara seperti ini. Kerja yang keren. Saya pertama kali belajar bahasa pemrograman lewat C saat masih SMP dan SMA, dan ketika memasang perangkat lunak gratis di PC rumah, saya menyadari bahwa sebagian besar program dibuat dengan C. Saat pertama kali secara formal belajar ilmu komputer di universitas, saya mempelajari struktur data dan algoritme dengan C++, tetapi karena saya sudah memahami pointer, saya bisa beradaptasi dengan mudah. Jika menghindari berbagai elemen yang rumit, kita bisa melihat bahwa C adalah bahasa yang sangat rapi dan sederhana. Tentu saja, daya tarik C juga terletak pada kenyataan bahwa kita bisa langsung berurusan dengan kompleksitas itu, tetapi menurut saya keseimbangan yang tepat itu penting.
    • Saya sering mendengar bahwa memahami pointer itu sulit, tetapi saya sendiri kurang paham apakah memang sesulit itu. Saya ingat saat pertama belajar, dalam 15 menit saya sudah mendapat gambaran kasarnya. Tentu butuh waktu lebih lama untuk benar-benar mahir, tetapi saya kurang memahami kenapa pointer dianggap punya tingkat kesulitan yang nyaris mitologis. Saya juga menganggap proyek ini keren. Hanya saja, saya berharap proyek seperti ini tidak cuma masuk ke portofolio pencari kerja lalu segera diarsipkan dan dilupakan.
    • Pujian Anda terhadap kodenya sangat berarti bagi saya. Saya selalu berusaha keras untuk membuat kode seperti itu, jadi saya berterima kasih bisa mendengar komentar seperti ini.
  • Saya harap orang tidak mengkritik proyek ini terlalu serius, atau membuat analisis tak berarti soal semacam “potensi menggantikan PHP”. Menurut saya proyek ini adalah contoh yang sangat baik dari sebuah tantangan keren yang dicoba dengan bahasa C. Jika template HTML ditambahkan, rasanya ini bisa berkembang menjadi framework yang lengkap.
    • Terima kasih banyak atas kata-kata baiknya. Template HTML ada dalam daftar prioritas, dan nanti saya akan senang mengimplementasikannya.
    • Saya sedang belajar C untuk bersenang-senang, dan menurut saya proyek ini benar-benar keren.
  • Kodenya sangat mudah dibaca dan tertata dengan baik. Namun, hampir tidak ada error checking, jadi di banyak bagian nilai kembalian dari snprintf, malloc, dan sebagainya tidak diperiksa. Ada juga loop yang tidak digunakan. Sepertinya bagian pemrosesan paralel masih belum didukung, jadi belum menjadi masalah sekarang, tetapi mengingat sifat web server, nantinya akan menguntungkan jika threading diperkenalkan. Saat mempertimbangkan implementasinya, saya merekomendasikan penggunaan library seperti libuv.
    • Terima kasih telah memberikan masukan dengan sangat teliti. Pemrosesan paralel memang direncanakan untuk ditambahkan nanti, jadi saya senang Anda menyebutkannya.
  • Saya pernah menggunakan framework serupa bernama Jetzig dengan cukup menyenangkan, dan saya juga memandang proyek ini dengan sangat positif. Saya juga menyukai kombinasi BSD C CGI dan Postgres. Meski saya biasanya bekerja dengan Python, sangat menyenangkan bisa merasakan langsung bahasa level rendah dan konsep memori. Ada orang yang menyoroti aspek realistisnya, tetapi menurut saya semakin luas penyebaran perangkat embedded, semakin tinggi pula nilai framework level rendah seperti ini. Saya juga sedang bereksperimen dengan pico calc, dan kalau saya membuat “aplikasi mobile” untuk itu, saya akan menulis kode framework-nya dalam C. Kerja yang keren.
  • Menurut saya proyek ini benar-benar keren. Setup-nya mudah dibaca, dan jika bisa menikmati performa C maka itu jelas nilai tambah. Terutama, dengan AI seperti Claude, bagian-bagian framework bisa dibuat dengan mudah lalu hanya menambahkan yang diperlukan saat dibutuhkan, sehingga kita bisa menyusun sendiri web framework yang ringan dan independen terhadap platform. Saya juga berharap performanya akan cukup bagus.
    • Daftar periksa mimpi buruk pemeliharaan:
      • Web framework pada dasarnya sulit dipelihara karena standar yang terus berubah
      • Jika ditulis oleh AI, mungkin tidak ada seorang pun yang benar-benar tahu jelas bagaimana cara kerjanya
      • Ditulis dalam C
        Secara pribadi saya menyukai kesederhanaan C murni, tetapi kombinasi kode jaringan berbasis C yang ditulis AI agak menakutkan juga.
  • Saya rasa menulis parser HTTP sendiri dari nol dalam C itu sangat berbahaya. Kerentanan besar bisa muncul, jadi jika membuat web framework dengan tujuan deployment nyata, lebih aman memulai dari library yang sudah teruji seperti libmicrohttpd, libevent_http, fastcgi, dan sebagainya.
    • Saya sangat setuju dengan peringatan seperti ini. Kalau begitu, saya jadi penasaran bagaimana sebenarnya cara membuat HTTP server yang aman dalam C. Rasanya ini bisa menjadi topik buku yang sangat menarik. Akan menarik jika tiap bab menyoroti kerentanan sambil membahas cara-cara struktural untuk berkembang menjadi library HTTP yang matang.
    • Sepertinya proyek ini memang tidak akan pernah dipakai di lingkungan produksi, tetapi kalau sampai ada pikiran ke arah sana, sebaiknya urungkan niat itu.
  • Ini unsolicited feedback, tetapi saya rasa macro appRoute membuat tipe dan signature menjadi kabur serta menambahkan indirection yang tidak perlu. Mungkin lebih baik dihapus. Selain itu, tipe AppContext sebenarnya mencampur fungsi App + HTTP Request + DB dan lain-lain, jadi nama seperti RequestContext atau ControllerContext tampaknya lebih cocok. Di luar itu, seperti orang lain, saya juga kagum dengan kerapian kodenya, dan ini benar-benar usaha yang keren.
  • Ini menunjukkan bahwa banyak hal bisa dilakukan berkat pemanfaatan macro. Pada kenyataannya, web framework modern juga secara aktif memanfaatkan alat-alat kompleks seperti metaprogramming di masing-masing bahasa. Saya sangat memuji fakta bahwa ini dibuat sendiri; ini pekerjaan yang sulit, tetapi jelas juga menyenangkan. Ada juga pertanyaan “kenapa membuat ini”, tetapi menurut saya tidak perlu alasan khusus. Murni karena menikmati pengembangan itu sendiri.
    • Terima kasih banyak, saya sepenuhnya setuju.
  • Saya berharap vendor hardware mengadopsi proyek ini sehingga kualitas halaman web administrasi mereka bisa sedikit lebih baik.
  • Saya terkejut melihat begitu banyak respons negatif, padahal ini adalah proyek dengan ide bagus yang ditulis dengan penuh perhatian. Kemampuan yang Ashton bangun kali ini adalah aset berharga yang tidak akan hilang ke depannya.
    • Saya benar-benar berterima kasih dinilai seperti itu.