17 पॉइंट द्वारा GN⁺ 2025-10-10 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 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 टिप्पणियां

 
GN⁺ 2025-10-10
Hacker News राय
  • मुझे लगा कि यह हाल में देखे गए C कोड में सबसे साफ़, सबसे modern और सबसे सुंदर कोड है। यह kernel नहीं है, लेकिन #ifdef conditionals या underscore से भरे बड़े प्रोजेक्ट्स की तुलना में यह C की सौंदर्य-बोध सीखने के लिए कहीं बेहतर उदाहरण लगता है। खासकर C में इस तरह test code लिखा हुआ मैंने पहली बार देखा। शानदार काम। मैंने मिडिल और हाई स्कूल के दिनों में C को अपनी पहली programming language के रूप में सीखा था, और घर के PC पर free software install करते हुए जाना कि ज़्यादातर programs C में बने थे। जब विश्वविद्यालय में पहली बार औपचारिक रूप से computer science पढ़ा, तब C++ में data structures और algorithms किए, लेकिन pointers पहले से समझता था इसलिए आसानी से ढल गया। अगर कई जटिल चीज़ों से बचा जाए तो C बहुत साफ़ और सरल भाषा है। बेशक, उस जटिलता तक सीधे पहुँच सकना ही C का आकर्षण है, लेकिन मुझे लगता है कि सही संतुलन ज़रूरी है
    • अक्सर सुनता हूँ कि pointers समझना मुश्किल है, लेकिन सच में वह इतना कठिन है या नहीं, यह मुझे ठीक से समझ नहीं आता। याद है कि पहली बार सीखते समय लगभग 15 मिनट में उसका मोटा-मोटा अंदाज़ा हो गया था। हाँ, उसमें निपुण होने में ज़्यादा समय लगा होगा, लेकिन pointers को लगभग पौराणिक कठिनाई की चीज़ माना जाता है, यह बात मुझे ठीक से समझ नहीं आती। यह प्रोजेक्ट भी मुझे शानदार लगा। बस उम्मीद है कि ऐसा प्रोजेक्ट किसी job seeker के portfolio में जाकर जल्दी archive होकर भुला न दिया जाए
    • आपने कोड की तारीफ़ की, यह मेरे लिए सच में बहुत मायने रखता है। मैं हमेशा कोड को वैसा बनाने के लिए बहुत मेहनत करता हूँ, इसलिए ऐसा सुनना मेरे लिए आभार की बात है
  • उम्मीद है लोग इस प्रोजेक्ट की ज़रूरत से ज़्यादा गंभीर आलोचना न करें या “PHP को replace कर सकता है या नहीं” जैसी निरर्थक analysis न करें। मेरे हिसाब से यह C भाषा में एक शानदार चुनौती लेने का बेहतरीन उदाहरण है। अगर HTML templates जुड़ जाएँ तो यह एक पूर्ण framework की दिशा में बढ़ सकता है
    • इतने अच्छे शब्दों के लिए बहुत धन्यवाद। HTML templates मेरी priority list में हैं और बाद में मज़े से implement करने का इरादा है
    • मैं मज़े के लिए C सीख रहा हूँ, और यह प्रोजेक्ट मुझे सच में बहुत शानदार लगा
  • कोड बहुत readable है और अच्छी तरह structured है। लेकिन error checking लगभग नहीं के बराबर है, इसलिए snprintf, malloc आदि के return values जाँचने वाली कई जगहें नहीं हैं। यहाँ एक unused loop भी मौजूद है। ऐसा लगता है कि parallel processing वाला हिस्सा अभी supported नहीं है, इसलिए अभी यह बड़ी समस्या नहीं है, लेकिन webserver की प्रकृति देखते हुए आगे चलकर threading जोड़ना फायदेमंद होगा। implementation पर विचार करते समय libuv जैसी library इस्तेमाल करने की सिफारिश करूँगा
    • इतना सोच-समझकर feedback देने के लिए धन्यवाद। parallel processing को बाद में जोड़ने की योजना थी, इसलिए आपका इसका ज़िक्र करना अच्छा लगा
  • मैंने Jetzig जैसा मिलता-जुलता framework मज़े से इस्तेमाल किया है और इस प्रोजेक्ट को भी बहुत अच्छा पाया। BSD C CGI और Postgres का संयोजन भी पसंद है। मैं मुख्यतः Python के साथ काम करता हूँ, लेकिन low-level languages और memory concepts को सीधे अनुभव करना सच में बहुत मज़ेदार है। कुछ लोग इसकी व्यावहारिकता पर सवाल उठाते हैं, लेकिन embedded devices जितने अधिक फैलेंगे, मुझे लगता है ऐसे low-level frameworks की value उतनी बढ़ेगी। मैं pico calc के साथ भी प्रयोग कर रहा हूँ, और अगर उसके लिए कोई "mobile app" बनाऊँ, तो framework code C में ही लिखूँगा। शानदार काम
  • मेरे हिसाब से यह प्रोजेक्ट सच में शानदार है। setup आसानी से पढ़ा जा सकता है, और अगर C की performance का लाभ मिल जाए तो यह फ़ायदे की बात है। खासकर Claude जैसे AI से framework के कुछ हिस्से आसानी से बनवाकर, ज़रूरत पड़ने पर जितना चाहिए उतना ही जोड़ना, और इस तरह एक हल्का तथा platform-independent web framework खुद तैयार कर पाना बड़ा फायदा है। मुझे उम्मीद है कि इसकी performance भी काफ़ी अच्छी होगी
    • maintenance nightmare checklist:
      • web frameworks को बदलते standards की वजह से शुरू से ही maintain करना कठिन होता है
      • AI द्वारा लिखा code ऐसा हो सकता है कि किसी को भी साफ़-साफ़ न पता हो कि वह कैसे काम करता है
      • C में लिखा गया है
        व्यक्तिगत रूप से मुझे pure C की सादगी पसंद है, लेकिन AI-लिखित C-आधारित network code का संयोजन थोड़ा डरावना भी लगता है
  • मुझे लगता है कि C में HTTP parser को शुरुआत से खुद लिखना बहुत जोखिमभरा है। इसमें बहुत गंभीर vulnerabilities आ सकती हैं, इसलिए अगर कोई वास्तविक deployment को ध्यान में रखकर web framework बना रहा है, तो libmicrohttpd, libevent_http, fastcgi जैसी tested libraries से शुरू करना ज़्यादा सुरक्षित है
    • मैं इस तरह की चेतावनी से काफ़ी सहमत हूँ। ऐसे में जिज्ञासा होती है कि आखिर C में एक सुरक्षित HTTP server बनाया कैसे जाए। यह सच में एक दिलचस्प किताब का विषय हो सकता है। अगर हर chapter में vulnerabilities को समझाते हुए एक mature HTTP library बनने के संरचनात्मक तरीकों पर बात हो, तो वह काफ़ी रोचक होगा
    • वास्तव में यह प्रोजेक्ट production environment में इस्तेमाल होने की संभावना नहीं लगती, लेकिन अगर कभी ऐसा विचार आए भी, तो उससे बाज़ आना बेहतर होगा
  • यह unsolicited feedback है: मुझे लगता है appRoute macro type और signature को धुंधला बनाता है और अनावश्यक indirection जोड़ता है, इसलिए इसे हटाना बेहतर होगा। और AppContext type में वास्तव में App + HTTP Request + DB जैसी चीज़ें मिली हुई हैं, इसलिए RequestContext या ControllerContext जैसे नाम अधिक उपयुक्त लगते हैं। इसके अलावा, बाकी लोगों की तरह मैं भी कोड की सफ़ाई देखकर प्रभावित हुआ, सच में शानदार प्रयास है
  • यह दिखाता है कि macros के उपयोग से कितनी चीज़ें संभव हो सकती हैं। वास्तव में modern web frameworks भी हर भाषा के metaprogramming जैसे जटिल tools का सक्रिय रूप से उपयोग करते हैं। आपने इसे खुद बनाया, इसके लिए मैं बहुत सराहना करता हूँ। यह कठिन काम है, लेकिन निश्चित रूप से मज़ेदार भी है। कुछ लोग पूछते हैं, "यह क्यों बनाया?", लेकिन मुझे नहीं लगता कि उसके लिए किसी विशेष कारण की ज़रूरत है। कोई इसे सिर्फ़ development के आनंद के लिए भी कर सकता है
    • बहुत धन्यवाद, और मैं पूरी तरह सहमत हूँ
  • उम्मीद है hardware vendors इस प्रोजेक्ट को अपनाएँ ताकि management web pages की quality थोड़ी बेहतर हो सके
  • यह देखकर हैरानी होती है कि इतने सोच-समझकर लिखे गए और अच्छे विचार वाले प्रोजेक्ट पर इतनी नकारात्मक प्रतिक्रिया आई। Ashton ने इस बार जो कौशल बनाया है, वह आगे भी उसके साथ रहने वाली एक कीमती संपत्ति है
    • आपने इस तरह आंका, इसके लिए मैं सच में बहुत आभारी हूँ