catacomb_ii-64k
doomretro
catacomb_ii-64k | doomretro | |
---|---|---|
1 | 4 | |
3 | 625 | |
- | - | |
10.0 | 9.9 | |
over 1 year ago | 6 days ago | |
C | C | |
GNU General Public License v3.0 only | 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.
catacomb_ii-64k
-
Emitting Safer Rust with C2Rust
Conditional to your definition of "serious", I did: https://github.com/64kramsystem/catacomb_ii-64k. I essentially don't do technical writing anymore (and I had the impression that this topic isn't generally considered interesting), however, my considerations are:
1. there are three levels of refactoring: removing the extensive (unbearable, to be honest) boilerplate that C2Rust introduces; converting the design from C to safe Rust; convert the design from unidiomatic Rust to idiomatic
2. as another poster pointed out, for non-trivial projects, writing refactoring tooling is a must (to remove the C2Rust boilerplate), in order to perform step 1
3. design refactoring (step 3) difficulty depends on the source code design; the code I worked with was hard to refactor, as it was old (school), in particular, lots of globals; the difficulty was not caused by the conversion C<>Rust, rather, the typical freedoms that C gives and Rust doesn't (in other words, the very obvious design differences between C and Rust)
4. regarding the code understanding, if one performs the translation in the three-steps mentioned in point 1, at the end of step 2, one has effectively a safe Rust codebase, "just" unidiomatic
5. beside a few steps, I was able to perform a conversion in self-contained steps, which is very good news for this type of work. Even better, it's possible (but that's a niche case) to port an SDL project by using at the same time the C library and the Rust one!
6. however, I can imagine projects like Wolfenstein 3d to be very hard, since it's hard to port memory allocators and similar
99. most important of all: just converting to Rust will quickly (even immediately) find bugs in the source; I've found approximately four bugs in the source code, including one by Carmack!
All in all, I find this tool great, but somebody needs to work on refactoring tools, and C2Rust's output must be improved in order to be found usable by the public.
doomretro
-
Lessons from Open-Source Game Projects
Doom Retro - Doom source port for Windows. C, SDL2
-
Can this run any game worth pirating?
Try doom
- what would be the first game you play with this controller?
- Release DOOM Retro v4.6
What are some alternatives?
openjpeg - Official repository of the OpenJPEG project
amdctl - Set P-State voltages and clock speeds on recent AMD CPUs on Linux.
ccleste - Celeste Classic C source port for 3DS and PC.
chocolate-doom - Chocolate Doom is a Doom source port that is minimalist and historically accurate.
woof - Woof! is a continuation of the Boom/MBF bloodline of Doom source ports.
SDL_mixer - An audio mixer that supports various file formats for Simple Directmedia Layer.
taisei - A free and open-source Touhou Project fangame
etlegacy - ET: Legacy is an open source project based on the code of Wolfenstein: Enemy Territory which was released in 2010 under the terms of the GPLv3 license.
Spiromorph - A mesmerizing morphing spirograph using SDL2
crispy-doom - Crispy Doom is a limit-removing enhanced-resolution Doom source port based on Chocolate Doom.
Gforth-SDL2-Bindings - Complete SDL2, SDL_image, SDL_mixer and SDL_ttf Bindings for Gforth with Examples.
cdogs-sdl - Classic overhead run-and-gun game