Skip to content

Norm 0.15 ​

Norm 0.15 establishes the unified runtime boundary for standard-library system capabilities and delivers the first complete vertical slices for file reading, time, and I/O foundations.

System runtime ​

  • SystemPlatform is the backend-neutral capability entry point. platform-jdk implements the JDK file system and clock, and the CLI injects it at the application composition root.
  • ExecutionContext uses a builder to compose input, output, arguments, cancellation, module publication, and platform capabilities without a global service locator.
  • System intrinsics, opaque values, opaque resources, and ResourceScope provide one boundary for host calls and external-resource lifecycles.
  • builtin-abi.json defines intrinsic and system-exception mappings. Generated domain ABI contracts drive construction of catchable Norm exceptions at runtime.
  • Platform adapters normalize host failures into strongly typed operation and reason values before the Truffle boundary converts them into the corresponding Norm domain exception.

Standard library ​

  • std.system.SystemException provides stable error codes, and system operations uniformly report failures with domain exceptions.
  • std.io provides IOException, Bytes, ReadChunk, Resource, and explicit TextEncoding.
  • std.filesystem provides nominal Path, FileException, and UTF-8 readText.
  • std.time provides canonical Duration and Instant values, explicit Clock, systemClock(), and TimeException.
  • Bytes, Duration, and Instant validate and construct private implementations through a single public factory path, avoiding duplicate construction paths and nominal identities.

Execution and acceptance ​

Focused tests cover the JDK adapters, fixed clocks, platform-failure mapping, opaque dispatch, resource cleanup, and exception capture. Standard-library acceptance programs exercise file reading, time, bytes, read results, and resource closure through the real JVM and CLI paths.

Migration and boundary ​

Java execution embedders should compose contexts with ExecutionContext.builder() and provide a SystemPlatform when programs use system intrinsics. The 0.15 filesystem surface contains UTF-8 text reading only; file streams, writes, directory operations, networking, processes, HTTP, and concurrency remain future work.

See the system runtime architecture for the layering and extension rules.

Norm 0.25