Sane C++ Libraries ist eine Reihe von C++-Plattform-Abstraktionsbibliotheken für macOS, Windows und Linux.
Grundsätze:
✅ Schnelle Kompilierzeiten
✅ Kein Aufblähen
✅ Einfach lesbarer Code
✅ Einfach zu integrieren
⛔️ Keine C++-Standardbibliothek / Ausnahmen / RTTI
⛔️ Keine Abhängigkeiten von Drittanbietern (bevorzugen Sie die Betriebssystem-API)
Weitere Informationen finden Sie auf der Dokumentationswebsite.
Bibliothek | Beschreibung |
---|---|
Algorithmen | ? Platzhalterbibliothek, in der Vorlagenalgorithmen platziert werden |
Asynchron | ? Asynchrone E/A (Dateien, Sockets, Timer, Prozesse, FS-Ereignisse, Thread-Aktivierung) |
Asynchrone Streams | ? Lesen, transformieren und schreiben Sie Daten gleichzeitig von asynchronen Quellen zu Zielen. |
Bauen | ? Minimales Build-System, bei dem Builds in C++ beschrieben werden |
Container | ? Generische Container (SC::Vector, SC::SmallVector, SC::Array usw.) |
Datei | ? Synchroner Plattendatei-I/O |
Dateisystem | ? Dateisystemoperationen { existiert, kopieren, löschen } für { Dateien und Verzeichnisse } |
Dateisystem-Iterator | ? Listet Dateien und Verzeichnisse innerhalb eines bestimmten Pfads auf |
Dateisystem-Watcher | ? Benachrichtigungen {hinzufügen, entfernen, umbenennen, geändert} für Dateien und Verzeichnisse |
Stiftung | ? Primitive Typen, Behauptungen, Grenzen, Funktion, Spanne, Ergebnis, markierte Union |
Hashing | ? Berechnen Sie MD5 , SHA1 oder SHA256 Hashes für einen Bytestrom |
HTTP | ? HTTP-Parser, Client und Server |
Plugin | ? Minimales, auf Abhängigkeiten basierendes Plugin-System mit Hot-Reload |
Verfahren | ? Untergeordnete Prozesse erstellen und verketten (auch mit der Async-Bibliothek verwendbar) |
Spiegelung | ? Beschreiben Sie C++-Typen zur Kompilierungszeit für die Serialisierung |
Serialisierungsbinärdatei | ? Serialisieren Sie mit Reflection in und aus einem Binärformat |
Serialisierungstext | ? Mit Reflection in/aus Textformaten (JSON) serialisieren |
Buchse | ? Synchrones Socket-Netzwerk und DNS-Suche |
Saiten | ? String-Formatierung/Konvertierung/Manipulation (ASCII/UTF8/UTF16) |
Testen | ? Einfaches Test-Framework, das von allen anderen Bibliotheken verwendet wird |
Einfädeln | ? Atomic, Thread, Thread-Pool, Mutex, Bedingungsvariable |
Zeit | ? Zeitverarbeitung (relativ, absolut, hochauflösend) |
Jede Bibliothek ist farblich gekennzeichnet, um ihren Status anzuzeigen:
Einige Bibliotheken verfügen über C-Bindungen
Bindung | Beschreibung |
---|---|
sc_hashing | Bindungen für die Hashing-Bibliothek |
Bibliotheken können unverändert verwendet werden, indem eine einzelne Datei zu Ihrem Projekt hinzugefügt wird, ohne dass ein Build-System erforderlich ist.
Siehe Erstellen (Benutzer), um nur die Bibliothek zu verwenden
Kurz:
SC_COMPILER_ENABLE_STD_CPP=1
, wenn Sie die Standard-C++-Bibliothek verwenden möchtenLibraries/[Library]/*.h
) CoreFoundation.framework
CoreServices.framework
libdl
verknüpfen ( -ldl
)libpthread
verknüpfen ( -lpthread
)SCExample demonstriert die Integration von Sane C++-Bibliotheken zusammen mit Dear ImGui- und Sokol-Bibliotheken (siehe Beispielseite).
Tests werden mit dem selbstgehosteten SC::Build-Projektgenerator erstellt und beschreiben die Builds in C++.
Aktivieren Sie Building (Mitwirkender), um die Tests auszuführen.
@pagghiu.bsky.social
@pagghiu_
@pagghiu
Alternativ lese ich auch die folgenden Discords:
@Pagghiu
von einem geeigneten Kanal oder einfach nur eine Direktnachricht, Englisch und Italienisch sind beide in Ordnung)@Pagghiu
von einem geeigneten Kanal oder einfach nur eine DM)Bitte nehmen Sie sich etwas Zeit, um die Prinzipien und den Codierungsstil zu lesen.
Anschließend können Sie den Leitfaden CONTRIBUTING.md lesen.
Sane C++-Bibliotheken sind unter der MIT-Lizenz lizenziert. Weitere Informationen finden Sie in LICENSE.txt.
Auf diesem YouTube-Kanal gibt es einige Videos, die Teile des Entwicklungsprozesses zeigen.
Auf dem Sane Coding Blog gibt es eine Reihe von Blogbeiträgen zu diesem Projekt.