# Bovnar (BVNR)

**Einheitensichere Serialisierung für Wissenschaft und Industrie — mit einer C99-Referenzimplementierung.**

## Links

- **Website:** https://www.bovnar.io
- **IANA-Medientyp (`text/vnd.bovnar`):** https://www.iana.org/assignments/media-types/text/vnd.bovnar
- **DOI — Dokumentation & Spezifikation 1.1.0:** https://zenodo.org/records/21443296
- **DOI — Quellcode 1.1.0:** https://zenodo.org/records/21443009

## Überblick

In wissenschaftlichen und industriellen Systemen entstehen die teuren Fehler selten durch falsche Syntax — sondern durch Einheitenverwechslung: ein Wert wird in Pfund-Kraft gesendet und als Newton gelesen, Fuß als Meter. Die Zahl parst fehlerfrei; die Dimension ist falsch.

Bovnar schließt diese Lücke. Jeder Wert in einem `.bvnr`-Dokument trägt seine eigene Typfamilie, Bitbreite, Zahlenbasis und **physikalische Einheit** — direkt im Byte-Strom, ohne externes Schema. Die Einheit ist kein Kommentar und keine Namenskonvention; sie ist Teil des Wertes und wird vom Parser validiert. Wird eine Messung als `m/s` annotiert und eine unpassende Inline-Einheit geschrieben, schlägt das Parsen mit `error_unit_mismatch` fehl.

```bovnar
#!bovnar 1.1                                 # optional spec-version directive
# A self-describing configuration document
.config = {
    .host      = "api.example.com";
    .port      = <uint:16> 443;
    .limits    = {
        .timeout    = <float:64,s> 2.5;
        .max_packet = <uint:64,Mi~B> 16;
    };
};
.acceleration = 70.5 k~m·s⁻²;
.velocity     = <float:64,m/s> 9.81;
.price        = <float_dec:64,$USD> 19.99;
.btc_balance  = <uint:64,$BTC> 547820000;   # satoshis
.created      = <datetime:64,unix> 1750000000;   # a timestamp (spec 1.1)
.payload      = \x00 … binary stream … \x00;
.matrix       = [1, 2, 3]/[4, 5, 6];
.cell         = &.matrix[0][1];             # reference indexing (spec 1.1) → 2
```

## Dokumentation

*(Die Dokumentation ist derzeit auf Englisch verfügbar.)*

- [Tutorial](https://www.bovnar.io/docs/tutorial/) — Einführung in das Lesen und Schreiben von Bovnar-Dokumenten.
- [Spezifikation](https://www.bovnar.io/docs/spec/) — Die vollständige Formatspezifikation (Spec 1.1).
- [Einheitensystem](https://www.bovnar.io/docs/units/) — 163 physikalische Einheiten, SI/IEC-Präfixe und 216 Währungen.
- [C-Lese-/Schreib-API](https://www.bovnar.io/docs/api/) — Die C-Reader-/Writer-/DOM-API-Referenz.
- [Python-Bindings](https://www.bovnar.io/docs/python/) — Das reine ctypes-Python-Paket.
- [EBNF-Grammatik](https://www.bovnar.io/docs/grammar/) — Die formale Grammatik, kommentiert gegen die Referenzimplementierung.
- [FAQ](https://www.bovnar.io/docs/faq/) — Häufige Fragen zu Typen, Einheiten, Limits und der API.
- [Konformität](https://www.bovnar.io/docs/conformance/) — Die 319-Fall-Konformitätssuite und das IUT-Protokoll.
- [Einheiten- & Währungs-Spickzettel](https://www.bovnar.io/docs/cheatsheet/) — Alle Einheitensymbole, Präfixe und Währungscodes.
- [Streaming & Framing](https://www.bovnar.io/docs/streaming/) — Oktett-Streams, Frames, Multiplexing und eingebettete Dokumente.

Eine einzelne Datei mit der gesamten Dokumentation liegt unter [https://www.bovnar.io/llms-full.txt](https://www.bovnar.io/llms-full.txt); die englische Markdown-Startseite unter [https://www.bovnar.io/index.md](https://www.bovnar.io/index.md).
