|
Aria 2.0.0
C++23 MVVM framework (C++20 minimum) — reactive, coroutine-first, ABI-layered
|
An MVVM framework supporting C++23, with C++20 as the minimum — one core, every platform.
Step-by-step, chapter-style documentation for library users:
| # | Chapter | Description |
|---|---|---|
| 1 | Reactive Core | Property<T>, Computed<T>, Effect, Subscription, batch, untracked |
| 2 | ViewModel | ViewModel base class, lifecycle, child composition, ViewModelScope, destroy hooks, common patterns |
| 3 | Async & Coroutines | Task<T>, AsyncCommand, AsyncResource, with_timeout, when_any, when_all, CancellationToken |
| 4 | Collections | ObservableList<T>, FilteredList, SortedList, MappedList, DistinctList, PagedList, GroupedList, ListChange |
| 5 | Validation | Validator<T>, FormValidator, ValidationState, ValidationKey, async rules |
| 6 | View Binding | BindingEngine, IViewAdapter, IView, Converter, two-way binding, feedback-loop suppression |
| 7 | Navigation | Navigator, push/pop/clear, push_for_result<R>, Modal vs Push, deep-link routing |
| 8 | Diagnostics & Debugging | TraceEvent, TraceSink, GraphInspector, ScopedTraceSink, disabled tracing fast path |
| 9 | Adapters | Platform-specific integration guides |
| Adapter | Guide | Platform |
|---|---|---|
| Qt6 | qt6.md | Desktop (Qt 6.x) |
| AppKit | appkit.md | macOS native |
| UIKit | uikit.md | iOS native |
| JNI / Android | jni.md | Android (NDK + Compose) |
| HTTP / REST / SSE | http.md | Browser (thin client) |
Task-oriented recipes — short, self-contained, grounded in shipped APIs:
The public API reference is generated from main. See the 2.0 migration guide when upgrading. To build the same Doxygen reference locally: cmake -B build/flavors/docs -DARIA_BUILD_DOCS=ON && cmake --build build/flavors/docs --target aria_docs → build/flavors/docs/docs/html/index.html.
Contract documents for framework developers and advanced users:
| Document | Description |
|---|---|
| API Style Contract | Naming, namespace, include-path, error-message, template-diagnostic, deprecation rules |
| Lifecycle & Threading | Thread-affinity, subscription release, view-destroy, coroutine race model |
| Error Model | ErrorKind taxonomy, aria::Error, per-surface protocol, when to throw vs set |
| Diagnostics Protocol | TraceEvent, TraceSink, per-subsystem hook points, disabled tracing fast path |
| List Diff Contract | ListChangeKind, event semantics, deterministic ordering, adapter conformance |
| Performance Baselines | Complexity bounds, measured baselines, anti-patterns |