Hacker Newsnew | past | comments | ask | show | jobs | submit | o8vm's commentslogin

Thank you — this is very helpful feedback.

You’re absolutely right that I led with terminology instead of value. A simpler way to describe it is:

Hibana helps prevent protocol drift bugs in distributed systems. You describe the interaction once as a global choreography, and each role gets a projected local API. Because steps are affine (consumed once), invalid transitions like skipping, reusing, or taking the wrong branch are rejected by the type/protocol model.

So the practical goal is fewer hidden state-machine bugs, with one global source of truth for interaction order.

I appreciate the suggestion, and I’ll explain it this way in the next write-up.


Hibana( https://github.com/hibanaworks/hibana ) is an Affine MPST runtime for Rust. The key claim is type-system guardrails. In Hibana software behavior is written as global choreography, projected into role-local sessions, and invalid transitions are rejected by the type/protocol model instead of being handled ad hoc at runtime.

As one concrete example, hibana-agent( https://github.com/hibanaworks/hibana-agent ) applies the same model to constrain AI-agent action flow with session-typed branching.


In simple terms, userland just issues syscalls to the kernel. For a command, this could be as straightforward as mkdir dir in the shell or mkdir("dir") in Rust code. While this seems simple, it's not particularly convenient. To enhance usability, we're modeling it after Rust's standard library. For example, having access to handy features like `DirBuilder` makes developing in userland more efficient (see https://doc.rust-lang.org/std/fs/struct.DirBuilder.html). Aligning with Rust's standard library has other benefits, too. One is the absorption of compatibility issues. Rust is compatible with various platforms, and handling compatibility at the level of the Rust standard library, rather than through syscalls or libc, can be more efficient. The goal is that Rust code used on one OS can be recompiled to work on my OS. From a unikernel perspective, recompilation is natural, and if we're only using Rust for development, it enhances safety. By the way, in my OS, libc does not exist. The user library, akin to Rust's std, acts entirely as a wrapper over syscalls.


Thanks! Is this notation in the README not enough: https://github.com/o8vm/octox#license ?


If you like you can copy what I did: https://github.com/tbillington/bevy_toon_shader, which I copied from https://github.com/bevyengine/bevy/ (just that my repo has was less stuff, so might be easier to copy from).


Both those licenses require you to add the license text as a file to the codebase. Eg see the "How to apply the Apache License to your work" section in the Apache license link that you have there.

Since it's dual-licensed you can add one as LICENSE-MIT and the other as LICENSE-APACHE.


Oh, I see! Thank you very much. I'll add both later!


I would like to implement a plan9-like OS someday!


Thanks!For me https://pdos.csail.mit.edu/6.S081/2020/xv6/book-riscv-rev1.p... was quite helpful! but Someday I will write a book on how to implement this OS step by step in Japanese.


octox is also different in that the kernel, userland, mkfs, and build system are all implemented in Rust, and I think it is also different at the type level, for example, octox using mpmc for Pipe, and using OnceLock and LazyLock for static variable initialization.


Thanks. rxv64 kernel (the much harder part), syslib and ulib are in rust. Replacing userland C with rust would not be hard. Ideally a general purpose OS should support programs written in any of the common programming languages so it would make sense to have some programs in another language to keep the OS API "honest"!


octox aims to provide a user library similar to Rust’s std, but implementing it is somewhat difficult.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: