Skip to content
Beskid Platform specification

Beskid

Jump to a Beskid service

Beskid

Jump to a Beskid service

Design model

Spec standingStandard

Owner
Piotr Mikstacki
Submitter
Piotr Mikstacki

Define runtime ownership of unrecoverable faults (panic) and platform IO (syscall_read, syscall_write). Front-end and corelib must not embed OS-specific syscall sequences in lowering.

ActorRole
LoweringEmits panic for unrecoverable checks; routes corelib IO to builtins
beskid_runtime::builtins::panic_ioLinux x86_64 syscall asm; stdio fallback elsewhere
Schedulerrun_blocking for syscall work without violating GC mutator rules
Corelib System.SyscallWraps builtins with descriptors (Console I/O streams)
MechanismUse
Option<T> (language)Expected errors — canonical in language-meta
panic / panic_strUnrecoverable faults, failed writes in v1 streams, allocation failures

Runtime panics terminate the process (trap). There is no Beskid stack unwinding across panics.

flowchart TB
  core[System.Input / Output / Error]
  wrap[Syscall ReadWith / WriteWith]
  builtin[syscall_read / syscall_write]
  os[OS read/write]
  core --> wrap --> builtin --> os
  trap[panic on hard fault] --> builtin

Syscall builtins accept file descriptor + buffer (syscall_write uses BeskidStr). They return integer status codes; corelib maps EOF/errors to Result.

Reference implementation: Linux x86_64 direct syscalls for performance. Other targets may delegate to std::io for fds 1/2 while preserving signatures (IO-ABI-003).