You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
See [`r3_core`]'s crate-level documentation for a general description of kernel features and concepts used in R3.
20
20
21
+
<!-- Display a "some Cargo features are disabled" warning in the documentation so that the user can know some items are missing for that reason. But we don't want this message to be displayed when someone is viewing `lib.md` directly, so the actual message is rendered by CSS. -->
The `r3` package is built on top on [`r3_core`] and provides useful abstractions. A kernel, which is chosen by application code, is implemented for a specific major version of `r3_core` and not others. Separating the fast-changing part into `r3` prevents ecosystem split and maximizes code reuse.
The R3 ecosystem revolves around the [`r3_core`][] package. Applications and libraries, including this `r3` package, are built on top of `r3_core`'s application-side API. This is in contrast with the kernel-side API, which intentionally has a weaker [stability guarantee] for continuous optimization and improvement.
28
+
29
+
The following diagram shows a possible package configuration of an R3 application.
> **Notes:** Many items of this crate are re-exported from [`r3_core`][], and consequently their example code refers to them through paths starting with `r3_core::`. You can replace them with `r3::` in your application code.
70
80
71
-
<!-- Display a "some Cargo features are disabled" warning in the documentation so that the user can know some items are missing for that reason. But we don't want this message to be displayed when someone is viewing `lib.md` directly, so the actual message is rendered by CSS. -->
This package is versioned in accordance with [the Semantic Versioning 2.0.0][]. Requiring a newer version of [`r3_core`][] that breaks [the application-side API stability guarantee][] is considered a breaking change.
87
+
88
+
Increasing the minimum supported Rust version (MSRV) is not considered a breaking change.
-[Modules](#modules)<!-- this section is generated by rustdoc -->
29
30
-[Macros](#macros)<!-- this section is generated by rustdoc -->
@@ -641,6 +642,24 @@ Kernel {
641
642
642
643
</details>
643
644
645
+
646
+
# Stability
647
+
648
+
`r3_core` defines two levels of API stability:
649
+
650
+
-**The application-side API stability** applies to the API used by application code.
651
+
652
+
-**The kernel-side API stability** applies to the API used by a kernel implementation. The API coverage is strictly larger because a kernel implementation may use the application-side API as well, e.g., to install an interrupt handler for its own kernel timing mechanism.
653
+
654
+
All public and documented items are covered under the application-side API stability unless noted otherwise.
655
+
656
+
This release of R3-OS is considered a preview version. During the preview period, `r3_core` follows [the Semantic Versioning 2.0.0][] and considers breaking either level of stability as a breaking change. It's being planned to introduce a versioning scheme that maps each stability level to a distinct version component so that the kernel-side API can be extended substantially while maintaining compatibility with existing application and library code.
657
+
658
+
Increasing the minimum supported Rust version (MSRV) is not considered a breaking change.
0 commit comments