- Lavandula ist ein leichtgewichtiges Web-Framework auf Basis der Programmiersprache C, das für die Entwicklung moderner Webanwendungen konzipiert wurde
- Es bietet eine intuitive und schnelle Entwicklungsumgebung und legt ohne unnötige Funktionen den Schwerpunkt auf Produktivität und Performance
- Es enthält die meisten wesentlichen Funktionen wie Controller-/Routing-System, Middleware-Pipeline, Test-Framework sowie SQLite-/JSON-Bibliotheken
- Künftig sind Funktionserweiterungen wie ORM, Session-Cookies, Serving statischer Dateien und die Anbindung verschiedener Datenbanken geplant
- Mit schneller Projekterstellung per CLI, integrierten Unit-Tests sowie Unterstützung für Umgebungsvariablen und Logging wird die Entwicklerfreundlichkeit maximiert
Lavandula: Überblick über ein leichtgewichtiges Hochleistungs-Web-Framework in C
- Lavandula ist ein leichtgewichtiges Web-Framework in C, das dafür entwickelt wurde, moderne Webanwendungen schnell und einfach zu erstellen
- Die Hauptziele sind Einfachheit, hohe Geschwindigkeit und hohe Produktivität; statt auf komplexe Funktionen setzt es auf das Wesentliche und reduziert den Ballast schwergewichtiger Frameworks
Hauptmerkmale und Nutzen
- Auf C-Basis entwickelt und mit minimalen Abhängigkeiten
- Bietet ein Controller- und Routing-System, mit dem sich HTTP-Endpunkte leicht konfigurieren lassen
- Unterstützt HTTP-Methoden wie GET und POST und verfügt über eine lokale/globale Middleware-Pipeline
- Unterstützt schnelle Projekterstellung und Ausführung über das CLI-Tool (
lavu)
- Integriertes Unit-Test-Framework, Verarbeitung von Umgebungsvariablen, Logging, SQLite-Integration und eine eingebaute JSON-Bibliothek
Bereits fertiggestellte Funktionen
- Controller-/Routing-System
- Unterstützung von Endpunkten nach HTTP-Methode (GET, POST usw.)
- Middleware-Pipeline (lokal/global)
- Minimale Abhängigkeiten (auf reinem C-Code basierend)
- Einfaches Projekt-Scaffolding per CLI
- Integriertes Unit-Test-Framework
- Unterstützung für Umgebungsvariablen, Logging-System
- Integration von SQLite/eingebauter JSON-Bibliothek
Funktionen in Entwicklung
- Parsen von HTTP-JSON-Bodys
- Session-Cookies
- Konfiguration von CORS-Richtlinien
- Lavender ORM
- ELA (Embedded Lavandula) HTML-Template-Engine
Zukünftige Pläne (Roadmap)
- Rate Limiting
- Serving statischer Dateien
- Anbindung von PostgreSQL und MySQL
- Kandidat für ein Dependency-Injection-Framework
- Automatisierung registrierbarer Endpunkt-/Routenlisten
- Automatische Generierung von JSON-Modellen und CRUD-Funktionen (mit dem Befehl
lavu model)
- Verarbeitung von URL-Parametern und dynamisches Routing
Überblick über Projekterstellung und Ausführung
- CLI-Befehl: Mit
lavu new my-project werden Projektordner und Grundstruktur automatisch erstellt
- Automatisch erzeugte Dateien:
- Konfigurationsdatei (lavandula.yml)
- Quellcode für Main/Controller/Routen
- makefile
- Testcode usw.
- Schneller Start: Nach dem Wechsel in den Ordner kann mit
lavu run direkt ein lokaler Server gestartet werden, Standard-Port http://localhost:3000/
Lizenz und weitere Informationen
- Lizenz: MIT License
- Im Sinne des Open-Source-Gedankens kann jede Person Verbesserungen beitragen und mitwirken
- Geschrieben auf Basis von C (97,3 %), mit einigen Anteilen an Makefile/Shell-Script
Zusammenfassung der Vorteile von Lavandula
- Als sehr seltenes vollständiges Web-Framework im C-Ökosystem eignet es sich hervorragend für ressourcenbeschränkte Umgebungen oder die Implementierung extrem schneller Server
- Im Vergleich zu populären Frameworks ist es auf höhere Geschwindigkeit und geringeren Overhead spezialisiert
- Mit CLI, integrierten Tools und minimalistischer Struktur bietet es eine kurze Lernkurve und hohe Produktivität
1 Kommentare
Hacker-News-Kommentare
#ifdef-Bedingungen oder Unterstriche halte ich ihn eher für ein gutes Beispiel, an dem man die Ästhetik von C lernen kann. Vor allem ist es das erste Mal, dass ich Testcode in C auf diese Weise geschrieben sehe. Tolle Arbeit. Ich habe C in der Mittel- und Oberstufe als erste Programmiersprache gelernt, und als ich Free Software auf dem PC zu Hause installierte, wurde mir klar, dass die meisten Programme in C geschrieben waren. Als ich Informatik an der Universität zum ersten Mal formell kennenlernte, habe ich Datenstrukturen und Algorithmen in C++ gemacht, aber weil ich Pointer schon verstanden hatte, konnte ich mich leicht anpassen. Wenn man verschiedene komplizierte Elemente vermeidet, merkt man, dass C eine sehr saubere und einfache Sprache ist. Natürlich ist es auch ein Reiz von C, direkt auf diese Komplexität zugreifen zu können, aber ich denke, ein angemessenes Gleichgewicht ist wichtig.snprintf,mallocusw. nicht geprüft werden. Außerdem gibt es hier eine ungenutzte Schleife. Der Parallelisierungs-Teil scheint noch nicht unterstützt zu werden, daher ist das im Moment wohl kein Problem, aber wegen der Natur eines Webservers wäre Threading später vorteilhaft. Wenn man eine Implementierung erwägt, würde ich die Verwendung einer Bibliothek wie libuv empfehlen.Persönlich gefällt mir die Einfachheit von reinem C, aber die Kombination aus von AI geschriebenem C-basiertem Netzwerkcode macht mir auch etwas Angst.
appRoute-Makro macht Typen und Signaturen unklar und führt unnötige Indirektion ein. Es wäre vermutlich besser, es zu entfernen. Außerdem bündelt der TypAppContextin Wirklichkeit Funktionen von App + HTTP-Request + DB usw., daher wäreRequestContextoderControllerContextwohl passender. Davon abgesehen habe ich wie die anderen die Sauberkeit des Codes bewundert; wirklich eine tolle Leistung.