Skip to content

feat: openkal 0.3.0, implementations for Linux and macOS, and a C library above it - #222

Merged
Sunrisepeak merged 1 commit into
mainfrom
feat/openkal-0.3
Aug 19, 2026
Merged

feat: openkal 0.3.0, implementations for Linux and macOS, and a C library above it#222
Sunrisepeak merged 1 commit into
mainfrom
feat/openkal-0.3

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

The specification now covers eight interfaces rather than three. The five added
are derived from resource kinds, and each carries the evidence that it was
derived rather than borrowed.

  • openkal.fs is relative to a directory throughout and has no global namespace
    of paths, because a global namespace is unavailable on a capability-based
    kernel and an implementation upon one would have to construct it.
  • openkal.process starts a program rather than duplicating the caller, because
    duplication cannot be performed faithfully on every environment. A large
    portable program corroborates the choice: it spawns and calls neither of the
    duplicating operations.
  • openkal.task exposes the primitive that suspends a context upon a word.
    Mutexes and condition variables are constructions above it, which is
    observable in any C library that implements them.

Two implementations are registered rather than one, and the second is what turns
the specification from a description of one system into a portable one. Four
divergences are recorded in it, and each is a place where an interface could
have assumed a mechanism: the monotonic clock continues during suspension where
the other stops, names are compared without regard to case, the spawn has no
attribute setting the working directory, and there is no suspension primitive a
program may use.

openkal-libc tests the claim the specification makes. It performs the two
adaptations the specification deliberately places outside itself — resolving a
global name against the supplied directories, and constructing synchronisation
objects from the suspension primitive — and an ordinary program above it reads a
file by global path, consults a variable, measures an interval and starts
another program without containing any of that.

Earlier versions of the two openkal packages are replaced rather than retained:
a specification whose clauses have changed is a different specification, and two
of them under one name would be worse than the absence of the earlier.

… library

The specification now covers eight interfaces rather than three. The five added
are derived from resource kinds, and each carries the evidence that it was
derived rather than borrowed.

  * openkal.fs is relative to a directory throughout and has no global namespace
    of paths, because a global namespace is unavailable on a capability-based
    kernel and an implementation upon one would have to construct it.
  * openkal.process starts a program rather than duplicating the caller, because
    duplication cannot be performed faithfully on every environment. A large
    portable program corroborates the choice: it spawns and calls neither of the
    duplicating operations.
  * openkal.task exposes the primitive that suspends a context upon a word.
    Mutexes and condition variables are constructions above it, which is
    observable in any C library that implements them.

Two implementations are registered rather than one, and the second is what turns
the specification from a description of one system into a portable one. Four
divergences are recorded in it, and each is a place where an interface could
have assumed a mechanism: the monotonic clock continues during suspension where
the other stops, names are compared without regard to case, the spawn has no
attribute setting the working directory, and there is no suspension primitive a
program may use.

openkal-libc tests the claim the specification makes. It performs the two
adaptations the specification deliberately places outside itself — resolving a
global name against the supplied directories, and constructing synchronisation
objects from the suspension primitive — and an ordinary program above it reads a
file by global path, consults a variable, measures an interval and starts
another program without containing any of that.

Earlier versions of the two openkal packages are replaced rather than retained:
a specification whose clauses have changed is a different specification, and two
of them under one name would be worse than the absence of the earlier.
@Sunrisepeak
Sunrisepeak merged commit 9833915 into main Aug 19, 2026
8 checks passed
@Sunrisepeak
Sunrisepeak deleted the feat/openkal-0.3 branch August 19, 2026 20:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants