Einheitensichere Serialisierung
für Wissenschaft und Industrie.
Jeder Wert trägt Breite, Basis und physikalische Einheit direkt in sich — kein Schema,
nur menschenlesbarer Text. Ein bloßes 9.81 ist nie mehrdeutig, und eine
unpassende Einheit ist ein Parse-Fehler.
Ein Format, durchgängig — Konfiguration rein, dekodierte Werte raus.
Sie haben die Syntax gesehen — hier läuft ein Raumfahrzeug damit. Ein Format, der ganze Kreislauf:
Konfiguration rein, Telemetrie raus. Verändern Sie den Orbit; das Fahrzeug kodiert jede Messung in einen
.bvnr-Frame, und die Bodenstation dekodiert ihn — die sichtbare Bahn wird ausschließlich aus diesen
dekodierten Werten gezeichnet, ein vollständiger Round-Trip durch das Format. Einheiten, Bitbreiten und Typen reisen
im Datenstrom selbst mit; kein Schema nötig. Fahren Sie über eine Anzeige, um die Zeile hervorzuheben, aus der sie dekodiert wurde.
Jeder Frame wird von der C-Referenzimplementierung selbst geparst, übersetzt nach WebAssembly
und live in Ihrem Browser ausgeführt — exakt das bvnr_read() aus der nativen Bibliothek,
keine JavaScript-Nachbildung. Dieselbe Engine treibt alle drei Demos und den
Playground weiter unten an.
Wie es funktioniert — der vollständige Round-Trip
- Die Konfiguration links ist kein Formular — sie ist ein echtes
.bvnr-Dokument, das Sie frei bearbeiten können. Nichts ändert sich, bis Sie Übernehmen drücken. - Dann wird sie direkt aus dem Text gelesen. Ergibt etwas keinen Sinn, erhalten Sie eine verständliche Fehlermeldung mit Zeilenangabe, und die Live-Ansicht läuft mit der letzten gültigen Konfiguration weiter — eine fehlerhafte Änderung kann nichts kaputtmachen.
- Diese Werte setzen den Rahmen, den Rest übernimmt die Demo.
- Von da an wird jeder Messwert als
.bvnrgeschrieben und wieder eingelesen — dasselbe Format, das Sie eben bearbeitet haben. Einheiten und Typen reisen unmittelbar neben den Zahlen mit. - Anzeigen und Diagramme zeigen also ausschließlich das, was durch das Format zurückkam, nie eine Zahl auf Treu und Glauben. Schalten Sie das Rauschen ein und sehen Sie zu, wie ein beschädigter Frame einfach weggesteckt wird.
- Fahren Sie über eine Anzeige, um genau die Zeile hervorzuheben, aus der sie gelesen wurde.
bearbeiten→parsen→simulieren→kodieren→(beschädigen?)→parsen→anzeigen
Der echte Event-Stream.
Dies ist der on_verified-Callback-Stream des C-Referenzreaders, live in Ihrem Browser —
der unveränderte C-Kern, übersetzt nach WebAssembly, keine JavaScript-Nachbildung. Dieselben Events, in
derselben Reihenfolge, die auch bvnr_read() liefert. Nicht annotierte Werte erhalten die
vom Validator synthetisierte Standardannotation; Verletzungen von Typ, Wertebereich, Basis und Einheit erscheinen auf dem
separaten on_error-Kanal, genau so, wie der C-Kern sie meldet.
Der Kontext reist mit der Zahl.
In Wissenschaft und Industrie entstehen die teuren Fehler nicht durch fehlerhafte Syntax, sondern durch Einheitenverwechslung:
Pound-force als Newton gelesen, Fuß als Meter. Die Zahl lässt sich einwandfrei parsen; die
9.81 stimmt, aber der Kontext ist
falsch. Bovnar behält diesen Kontext — Breite, Basis und Einheit — direkt bei jedem Wert, als
schlichten, menschenlesbaren Text ohne externes Schema, und weist eine unpassende Einheit als Parse-Fehler
zurück, statt sie zu einem stillen Bug werden zu lassen.
uint:16 bleibt exakt 16 Bit breit: Er kann sich nicht stillschweigend auf 64 verbreitern und nicht als Float umgedeutet werden.11001010 nie für eine Dezimalzahl gehalten. Werte, deren Ziffern Buchstaben enthalten (etwa hexadezimal ff), werden als Zeichenketten in Anführungszeichen geschrieben: <uint:_16> "ff".s⁻²) oder ein reines ASCII-Caret (s^-2).s⁻², m²) und eine reine ASCII-Form, die ein Caret für den
Exponenten und * anstelle des Trennzeichens · verwendet. k~g*m*s^-2 und
k~g·m·s⁻² ergeben exakt dieselbe Einheit. Die ASCII-Form braucht keine exotischen Zeichen und ist damit die
natürliche Wahl, wenn Sie .bvnr von Hand schreiben. Der Writer gibt standardmäßig Unicode-Hochzahlen aus, oder
die Caret-Form, wenn Sie BVN_UNIT_ASCII_EXP setzen.
Das alles ist optional: Lassen Sie Annotationen weg und nutzen Sie klar definierte Standardwerte (uint:64,
float:64), oder ergänzen Sie sie für die vollständige Parser-Validierung. Beide Modi sind eindeutig —
und eine .bvnr-Datei bleibt UTF-8-Text, den Sie in jedem Editor lesen können, ganz ohne Toolchain.
Die Grammatik der Präzision.
Jede Zuweisung ist eine Deklaration: Die Annotation ist Teil des Wertes, keine Anmerkung dazu.
Gebaut für Exaktheit.
uint, sint
und float zusätzlich eine Zahlenbasis. Standardwerte sind definiert, nicht geraten. Annotieren Sie,
wo Präzision zählt; lassen Sie es weg, wo sie es nicht tut.
on_unverified / on_verified.
Während des Parsens selbst wird kein Heap-Speicher belegt.
NumPy-Brücke ohne Zwischenschicht, die typisierte Arrays direkt
in ein ndarray lädt, samt zugehöriger physikalischer Einheit.
In Minuten startklar.
bvnr_read_flags_t registriert. Beide Callbacks erhalten den Event-Typ und die geparsten Daten.loads / dumps-Schnittstelle. Reines ctypes — keine kompilierte Erweiterung nötig.loads(typed=True) verpackt jeden typisierten Wert in ein Quantity, das seinen exakten Text, seine Bitbreite und seine Einheit bewahrt. Geben Sie das Dict unverändert an dumps() zurück und Sie erhalten einen verlustfreien Round-Trip.numpy.ndarray — Bovnar-Breiten werden auf native dtypes abgebildet (float:32 → float32), und die Einheit des gesamten Arrays reist mit. NumPy ist ein optionales, verzögert geladenes Extra (pip install "bovnar[numpy]").libm.bovnar bench.Wenn eine falsche Einheit ein Ausfall ist.
Greifen Sie zu Bovnar, wenn Einheiten mit den Daten reisen müssen und der Empfänger möglicherweise kein gemeinsames Schema kennt. Jede Messung ist konstruktionsbedingt einheitensicher — eine unpassende Einheit ist ein Parse-Fehler und kein stiller Bug, der erst im Produktivbetrieb auffällt.
Messwerte bleiben selbstbeschreibend, vom Labortisch bis zum veröffentlichten Datensatz — Breite, Basis und physikalische Einheit reisen bei jedem Wert mit.
Drücke, Durchflüsse und Temperaturen überschreiten Prozessgrenzen ohne gemeinsamen Vertrag, und Dimensionsfehler werden schon beim Parsen erkannt.
Heterogene Geräte senden menschenlesbare, typgenaue Datensätze, die jeder Empfänger eigenständig validieren kann — ganz ohne zentrales Verzeichnis.
Was heute geschrieben wird, bedeutet auch in Jahrzehnten noch exakt dasselbe — die Bedeutung steckt in der Datei, nicht in verlorengegangenen Werkzeugen.
Alles, was Sie zum Ausliefern brauchen.
Zehn Dokumente — vom fünfminütigen Tutorial bis zur formalen EBNF-Grammatik und zum Konformitätsprotokoll. Lesen Sie sie unten direkt auf der Seite, oder laden Sie den vollständigen Satz als PDF herunter.
loads/dumps sowie Reader/Writer für Streaming.Die Dokumentation offline mitnehmen
Druckfertige, in sich geschlossene PDFs jedes Dokuments — oder der komplette Satz als ein Archiv.
↓ Alle herunterladen