- Lavandula एक C language-आधारित lightweight web framework है, जिसे modern web application development के लिए डिज़ाइन किया गया है
- यह सहज और तेज़ development environment प्रदान करता है और अनावश्यक features के बिना productivity और performance पर ध्यान देता है
- इसमें controller/routing system, middleware pipeline, test framework, SQLite/JSON libraries जैसी अधिकांश ज़रूरी सुविधाएँ शामिल हैं
- आगे चलकर ORM, session cookies, static file serving, और विभिन्न databases के integration जैसे features जोड़ने की योजना है
- CLI-आधारित तेज़ project generation, built-in unit tests, environment variables और logging support के ज़रिए developer convenience को अधिकतम किया गया है
Lavandula: lightweight और high-performance C web framework का परिचय
- Lavandula एक C language lightweight web framework है, जिसे modern web applications को तेज़ और सरल तरीके से बनाने के लिए डिज़ाइन किया गया है
- इसका मुख्य लक्ष्य simplicity, speed, और high productivity है; यह जटिल features की बजाय ज़रूरी हिस्सों पर ध्यान देता है और भारी frameworks की अनावश्यक जटिलता को कम करता है
मुख्य विशेषताएँ और उपयोगिता
- यह C-आधारित है और इसमें न्यूनतम dependencies शामिल हैं
- controller और routing system प्रदान करता है, जिससे HTTP endpoints को आसानी से कॉन्फ़िगर किया जा सकता है
- GET, POST जैसे HTTP methods का support और local/global middleware pipeline शामिल है
- CLI tool (
lavu) के ज़रिए तेज़ project generation और execution supported है
- built-in unit test framework, environment variable handling, logging, SQLite integration, और JSON library शामिल हैं
वर्तमान में उपलब्ध features
- controller/routing system
- HTTP methods के अनुसार endpoint support (GET, POST आदि)
- middleware pipeline (local/global)
- minimal dependencies (pure C code-आधारित)
- CLI से आसान project scaffolding
- built-in unit test framework
- environment variable support, logging system
- SQLite/built-in JSON library integration
विकासाधीन features
- HTTP JSON body parsing
- session cookies
- CORS policy configuration
- Lavender ORM
- ELA(Embedded Lavandula) HTML template engine
आगे की योजना (roadmap)
- rate limiting
- static file serving
- PostgreSQL, MySQL integration
- dependency injection framework candidate
- registrable endpoint/route list automation
- JSON model और CRUD functions का automatic generation (
lavu model command का उपयोग)
- URL parameter handling और dynamic routing
project creation और execution का संक्षिप्त तरीका
- CLI command:
lavu new my-project से project folder और basic structure अपने-आप बन जाते हैं
- अपने-आप बनने वाली files:
- config file (
lavandula.yml)
- main/controller/route source
- makefile
- test code आदि
- तेज़ execution: folder में जाने के बाद
lavu run से local server तुरंत चलाया जा सकता है, default port http://localhost:3000/
license और अन्य जानकारी
- license: MIT License
- open source भावना के अनुरूप, कोई भी इसमें सुधार या योगदान कर सकता है
- यह C(97.3%) पर आधारित है, और इसमें कुछ Makefile/Shell script भी शामिल हैं
Lavandula के फ़ायदे संक्षेप में
- C language ecosystem में बेहद दुर्लभ एक complete web framework है, जो resource-constrained environments या ultra-fast server implementation के लिए उत्कृष्ट है
- लोकप्रिय frameworks की तुलना में तेज़ speed और कम overhead के लिए विशेष रूप से उपयुक्त है
- CLI, built-in tools, और minimal structure के कारण learning curve छोटा और productivity अधिक है
1 टिप्पणियां
Hacker News राय
#ifdefconditionals या underscore से भरे बड़े प्रोजेक्ट्स की तुलना में यह C की सौंदर्य-बोध सीखने के लिए कहीं बेहतर उदाहरण लगता है। खासकर C में इस तरह test code लिखा हुआ मैंने पहली बार देखा। शानदार काम। मैंने मिडिल और हाई स्कूल के दिनों में C को अपनी पहली programming language के रूप में सीखा था, और घर के PC पर free software install करते हुए जाना कि ज़्यादातर programs C में बने थे। जब विश्वविद्यालय में पहली बार औपचारिक रूप से computer science पढ़ा, तब C++ में data structures और algorithms किए, लेकिन pointers पहले से समझता था इसलिए आसानी से ढल गया। अगर कई जटिल चीज़ों से बचा जाए तो C बहुत साफ़ और सरल भाषा है। बेशक, उस जटिलता तक सीधे पहुँच सकना ही C का आकर्षण है, लेकिन मुझे लगता है कि सही संतुलन ज़रूरी हैsnprintf,mallocआदि के return values जाँचने वाली कई जगहें नहीं हैं। यहाँ एक unused loop भी मौजूद है। ऐसा लगता है कि parallel processing वाला हिस्सा अभी supported नहीं है, इसलिए अभी यह बड़ी समस्या नहीं है, लेकिन webserver की प्रकृति देखते हुए आगे चलकर threading जोड़ना फायदेमंद होगा। implementation पर विचार करते समय libuv जैसी library इस्तेमाल करने की सिफारिश करूँगाव्यक्तिगत रूप से मुझे pure C की सादगी पसंद है, लेकिन AI-लिखित C-आधारित network code का संयोजन थोड़ा डरावना भी लगता है
appRoutemacro type और signature को धुंधला बनाता है और अनावश्यक indirection जोड़ता है, इसलिए इसे हटाना बेहतर होगा। औरAppContexttype में वास्तव में App + HTTP Request + DB जैसी चीज़ें मिली हुई हैं, इसलिएRequestContextयाControllerContextजैसे नाम अधिक उपयुक्त लगते हैं। इसके अलावा, बाकी लोगों की तरह मैं भी कोड की सफ़ाई देखकर प्रभावित हुआ, सच में शानदार प्रयास है