haiku
managarm
haiku | managarm | |
---|---|---|
11 | 10 | |
1,765 | 1,306 | |
0.7% | 1.1% | |
9.8 | 9.5 | |
5 days ago | 5 days ago | |
C++ | C++ | |
GNU General Public License v3.0 or later | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
haiku
-
Haiku's (Kernel) Condition Variables API: Design and Implementation
Haiku uses the System V ABI (mostly.) So, we're doing the same things Linux and the BSDs are here, simply by using GCC or Clang without any special tuning here.
> I reckon that before trying to claim you've innovated here it might be a good sense check to compare baseline.
The baseline is "what are other operating systems' kernel- and userland-level condition variables APIs?" And none of the ones I looked at had anything like what Haiku has here, they all have something which is the more classical "lock-switched condvars" just like POSIX has.
The API itself does not depend on what memory ordering semantics are any more than a "mutex_lock()" API does. The implementation will be somewhat contingent on it, of course, but those are two separate matters.
> What exactly are the Haiku atomic operations, in terms of the C++ 11 Memory Model?
The atomic_() functions are (on most architectures, x86 included) implemented using GCC/Clang's __atomic_* functions, with various __ATOMIC_* orderings chosen as appropriate. You can see them defined in the system header here: https://github.com/haiku/haiku/blob/master/headers/os/suppor...
> because you're innovating before 2011, you're inventing the model
No, not really? GCC has had atomic builtins since at least 4.1.0 in 2006. The documentation (https://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins...) says: "In most cases, these builtins are considered a full barrier. That is, no memory operand will be moved across the operation, either forward or backward." -- which is basically equivalent to today's __ATOMIC_SEQ_CST.
> so Haiku is off in the jungle on its own and everybody else has a map now, figure out where you are on that map first.
We already did that years ago. The atomic_() functions linked above in SupportDefs.h have been implemented using the C++11-standard GCC builtins since 2014, and the older __sync_ builtins for years before that.
Anyway, the algorithm described in this article, even if Haiku's atomic functions were not 1:1 with C++11-standard definitions (which they are, as noted above), is clearly portable to other OS kernels. So I am not sure what basis your comment has, regardless.
-
Problems while building haiku from source
I'm currently trying to build Haiku from source (following https://github.com/haiku/haiku/blob/master/ReadMe.Compiling.md), but I'm getting errors while building with "jam -q -j12 @nightly-anyboot".
- Haiku R1/beta4 has been released
-
HaikuOS Device Driver References
Something like this? https://github.com/haiku/haiku/tree/master/src/add-ons/accelerants/radeon
- Haiku Beta4 Release Near?
- How to programmatically find out if computer is on
managarm
- RISC-V support (super-duper ultra WIP) by ElectrodeYT · Pull Request #534 · managarm/managarm
-
What are some C++ projects with high quality code that I can read through?
managarm is pretty clean from what I remember.
- The managarm Operating System: an asynch mirokernel OS with Linux compatibility
-
Tilck – A Tiny Linux-Compatible Kernel
Somewhat related, Managarm[0] also attempts to be Linux compatible, but has a microkernel, multiserver design.
0. https://github.com/managarm/managarm
-
Linux Kernel 6.1 LTS Released with Initial Support for the Rust Programming Language
Neat idea. There is some research done on fully async OSes like https://github.com/managarm/managarm
-
Creator of SerenityOS announces new Jakt programming language effort
If you haven't already, I'd hang out with the Managarm crew. Prety friendly, and what they're doing with C++ and async is very cool!
-
In Defense of Async: Function Colors Are Rusty
But well, maybe you should look at Managarm.
-
Managarm development stream VOD 6/11/2021 - Implementing /proc/self
You can find more information on the project on our github page here. It is mostly a hobby project, so me and the other developers like to work on it in our free time.
-
This Month in Rust OSDev (May 2021)
Not hosted on rust-osdev but the Managarm project (an OS that focuses on async and that is primarily written in C++ so far) recently gained a rustc port and ports of some basic utilities written in Rust (ripgrep, exa). Support for Rust drivers is in the works (but still requires adding support for some libraries first that wrap the low-level system call interface).
-
LakeOS: a hobbyist multiserver microkernel OS written in Rust
If you have never seen an async OS, then you must’ve missed Managarm, a fully asynchronous operating system written in c++20. It’s a cool thing to check out, runs on x86_64 (a port to a raspberry pi4 is in progress) and has an extensive userland with various Linux applications running on a custom written libc. In case you’re curious, the repo can be found here: https://github.com/managarm/managarm
What are some alternatives?
serenity - The Serenity Operating System 🐞
mlibc - Portable C standard library
Lemon-OS - The Lemon Operating System
WingOS - a little 64bit operating system written in c++ with smp support
skift - 🥑 The delightful operating system.
modern-cpp-tutorial - 📚 Modern C++ Tutorial: C++11/14/17/20 On the Fly | https://changkun.de/modern-cpp/
Simply-Love-SM5 - a StepMania 5 theme for the post-ITG community
entt - Gaming meets modern C++ - a fast and reliable entity component system (ECS) and much more
sweb - SWEB Educational OS
Beef - Beef Programming Language
Quaternion - A Qt-based IM client for Matrix
crystal - The Crystal Programming Language