feat: implement FParkan architecture foundation
Docs Deploy / Build and Deploy MkDocs (push) Successful in 35s
Test / Lint (push) Failing after 1m14s
Test / Test (push) Has been skipped
Test / Render parity (push) Has been skipped

Add the modular fparkan workspace, domain crates, adapters, apps, xtask policy/CI, acceptance evidence, and licensed corpus gates for the macOS-focused roadmap foundation.
This commit is contained in:
2026-06-22 13:12:27 +04:00
parent 7416fdc7e9
commit d0bdbaa1ed
128 changed files with 26720 additions and 12137 deletions
+93
View File
@@ -0,0 +1,93 @@
#![forbid(unsafe_code)]
//! Platform ports for clocks, input, events, windows, and graphics requests.
/// Monotonic instant.
#[derive(Clone, Copy, Debug, Eq, Ord, PartialEq, PartialOrd)]
pub struct MonotonicInstant(pub u64);
/// Monotonic clock.
pub trait MonotonicClock {
/// Current instant.
fn now(&self) -> MonotonicInstant;
}
/// Platform event.
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum PlatformEvent {
/// Quit requested.
Quit,
}
/// Platform error.
#[derive(Debug)]
pub enum PlatformError {
/// Backend failed.
Backend,
}
impl std::fmt::Display for PlatformError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{self:?}")
}
}
impl std::error::Error for PlatformError {}
/// Event source.
pub trait EventSource {
/// Polls events.
///
/// # Errors
///
/// Returns [`PlatformError`] when the backend cannot collect events.
fn poll(&mut self, out: &mut Vec<PlatformEvent>) -> Result<(), PlatformError>;
}
/// Physical size.
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct PhysicalSize {
/// Width.
pub width: u32,
/// Height.
pub height: u32,
}
/// Window port.
pub trait WindowPort {
/// Drawable size.
fn drawable_size(&self) -> PhysicalSize;
/// Presents.
///
/// # Errors
///
/// Returns [`PlatformError`] when the backend cannot present the current
/// frame.
fn present(&mut self) -> Result<(), PlatformError>;
}
/// Graphics profile.
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum GraphicsProfile {
/// Desktop core.
DesktopCore,
/// Embedded profile.
Embedded,
}
/// Version.
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct Version {
/// Major.
pub major: u8,
/// Minor.
pub minor: u8,
}
/// Graphics context request.
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct GraphicsContextRequest {
/// Profile.
pub profile: GraphicsProfile,
/// Version.
pub version: Version,
}