haiku
NXEngine
haiku | NXEngine | |
---|---|---|
11 | 2 | |
1,765 | 163 | |
0.7% | - | |
9.8 | 0.0 | |
5 days ago | over 1 year ago | |
C++ | C++ | |
GNU General Public License v3.0 or later | GNU General Public License v3.0 only |
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
NXEngine
-
Ask HN: Favourite Open Source Game?
I really enjoy Cave Story, It's a very cute metroidvania with a lot of soul.
https://github.com/EXL/NXEngine
-
Made My Rust Remake Of Cave Story Engine Run On
On top of what u/alulalol said, there is an open source reimplementation of Cave Story, called NXEngine. Usually, you'd use it through the libretro port.
What are some alternatives?
serenity - The Serenity Operating System 🐞
doukutsupsx - port of Cave Story to the PlayStation, based on CSE2
Lemon-OS - The Lemon Operating System
cave-story-md - A fan port of Cave Story for the Sega Mega Drive
skift - 🥑 The delightful operating system.
oolite - The main Oolite repository.
Simply-Love-SM5 - a StepMania 5 theme for the post-ITG community
BOB_Src - Rowan's Battle of Britain source
sweb - SWEB Educational OS
motoflash2sh - Convert Motorola flashfile.xml to fastboot shell script
Quaternion - A Qt-based IM client for Matrix
twrp_device_motorola_xpeng - Motorola Edge S30 (Motorola G200)