- 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
Komentar Hacker News
#ifdefdan 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.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.Secara pribadi saya menyukai kesederhanaan C murni, tetapi kombinasi kode jaringan berbasis C yang ditulis AI agak menakutkan juga.
appRoutemembuat tipe dan signature menjadi kabur serta menambahkan indirection yang tidak perlu. Mungkin lebih baik dihapus. Selain itu, tipeAppContextsebenarnya mencampur fungsi App + HTTP Request + DB dan lain-lain, jadi nama sepertiRequestContextatauControllerContexttampaknya lebih cocok. Di luar itu, seperti orang lain, saya juga kagum dengan kerapian kodenya, dan ini benar-benar usaha yang keren.