Skip to main content

zerodds_sys/
lib.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2026 ZeroDDS Contributors
3
4//! Stable C-ABI, basis for non-Rust bindings
5//!
6//! Crate `zerodds-sys`.
7//!
8//! Safety classification: **SAFE (Kern) / BINDING (FFI-Modul)**.
9//! Siehe `docs/architecture/02_architecture.md §3`, §4.4.3, §4.4.4 und
10//! `docs/architecture/04_safety_by_architecture.md §2`.
11//!
12//! Der `lib.rs`-Kern ist Safe/no_std und `#![forbid(unsafe_code)]`. Die
13//! tatsaechliche C-ABI-Oberflaeche (`extern "C"` Exports, `#[no_mangle]`
14//! Symbole) wird in einem separaten `mod ffi;` angelegt, das per
15//! `#![allow(unsafe_code)]` die Ausnahme lokal traegt. Safe-Audits des
16//! Kerns umfassen nicht das FFI-Modul.
17
18#![cfg_attr(not(feature = "std"), no_std)]
19#![forbid(unsafe_code)]
20#![warn(missing_docs)]
21
22#[cfg(feature = "alloc")]
23extern crate alloc;
24
25// ZeroDDS-Sys-Crate ist die historische C-ABI-Surface. Mit der
26// Veroeffentlichung von `zerodds-c-api` (Layer 6, RC1) ist die
27// vollstaendige spec-konforme C-FFI-Schnittstelle dort gebuendelt
28// (~115 Funktionen, ~4100 LOC, Spec-konform DDS 1.4 §2.2.2 +
29// DDS-PSM-Cxx 1.0 §7.5).
30//
31// Diese Crate bleibt als Workspace-Member bestehen, exportiert aber
32// keine Symbole — Konsumenten verlinken stattdessen gegen
33// `zerodds-c-api` (cdylib `libzerodds.dylib` / `.so` / `.dll`).
34//
35// Siehe `crates/zerodds-c-api/include/zerodds.h` und
36// `docs/specs/zerodds-c-api-1.0.md` fuer die vollstaendige API.
37
38/// Marker-Konstante: weist auf die voll spec-konforme C-FFI in
39/// `zerodds-c-api` hin.
40pub const REFERENCE_C_API_CRATE: &str = "zerodds-c-api";
41
42#[cfg(test)]
43mod tests {
44    use super::*;
45
46    #[test]
47    fn references_c_api_crate() {
48        assert_eq!(REFERENCE_C_API_CRATE, "zerodds-c-api");
49    }
50}