Compatibility Model¶
Tidemark does not try to be a full Linux kernel. It implements a browser-hosted RISC-V Linux userland environment whose supported guest-visible behavior should match the relevant primary source.
Semantic Compatibility Versus Host Strategy¶
The compatibility model separates two questions:
- What should a guest program observe?
- How can the browser/Node runtime implement that behavior?
The first question belongs to the kernel and must be grounded in RISC-V, ELF, Linux, POSIX, and project compatibility tests. The second question belongs to the runtime and SDK as long as it does not change guest-visible behavior.
flowchart TB
Sources["primary sources<br/>RISC-V, psABI, Linux man-pages, POSIX"]
Kernel["kernel semantics"]
Runtime["runtime orchestration"]
Host["browser/Node implementation strategy"]
Guest["guest-visible behavior"]
Sources --> Kernel
Kernel --> Guest
Runtime --> Guest
Host --> Runtime
For example, using workers, SharedArrayBuffer, typed messages, or a host network bridge is an implementation strategy. A guest-visible syscall return value, fd rule, signal behavior, or memory mapping rule is a compatibility contract.
Reference Sources¶
| Area | Reference source |
|---|---|
| RISC-V ISA | RISC-V ratified specifications |
| RISC-V ELF and calling convention | RISC-V ELF psABI document |
| Linux syscalls | Linux man-pages project |
| Portable system interfaces | POSIX System Interfaces |
| WebAssembly execution target | WebAssembly specifications |
| RISC-V ISA tests | riscv-tests |
| Linux compatibility tests | Linux Test Project |
Workload traces are useful for debugging, but they should not be the authority for syscall, ABI, ISA, or compatibility behavior. A workload may expose a bug; the fix still needs to reconcile with the relevant source.
Compatibility Evidence¶
The current repositories reflect this split through separate gates for RISC-V instruction behavior, syscall families, LTP classification, runtime ownership, state synchronization, worker scheduling, filesystem snapshots, fork/execve, host bridges, and consumer-style workload composition.
The purpose is to avoid treating a consumer command as the first definition of correct behavior. The consumer command should confirm that the lower-level contract holds in a realistic composition.