Rust-for-Linux
dosbox-staging
Our great sponsors
Rust-for-Linux | dosbox-staging | |
---|---|---|
79 | 105 | |
3,789 | 1,165 | |
1.5% | 4.0% | |
0.0 | 9.9 | |
1 day ago | about 19 hours ago | |
C | C++ | |
GNU General Public License v3.0 or later | GNU General Public License v3.0 or later |
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.
Rust-for-Linux
-
The Linux Kernel Prepares for Rust 1.77 Upgrade
At least according to the Github's language breakdown for https://github.com/Rust-for-Linux/linux, C is still 98.3% of the repository, and Rust is in the 0.1% of "others".
Rust is backwards compatible when you stick to stable features, but the kernel uses unstable features that can and do incur breaking changes.
-
Mark Russinovich: “Working towards enabling Windows driver development in Rust”
> How would this work?
Don't know exactly what you're asking.
> And why would it be a better idea?
Poorly written device drivers are a significant attack vector. It's one of the reasons Linux is now exploring using Rust for its own device drivers.[0] You may be asking -- why Rust and not some other language? Rust has many of the performance and interoperability advantages of C and C++, but as noted, makes certain classes of memory safety issues impossible. Rust also has significant mindshare among systems programming communities.
-
The Linux Kernel Module Programming Guide
Ctrl-F "rust"
https://rust-for-linux.com/ links to LWN articles at https://lwn.net/Kernel/Index/#Development_tools-Rust that suggest that only basic modules are yet possible with the rust support in Linux kernels 6.2 and 6.3.
Rust-for-linux links to the Android binder module though:
> Android Binder Driver: This project is an effort to rewrite Android's Binder kernel driver in Rust.
> Motivation: Binder is one of the most security and performance critical components of Android. Android isolates apps from each other and the system by assigning each app a unique user ID (UID). This is called "application sandboxing", and is a fundamental tenet of the Android Platform Security Model.
> The majority of inter-process communication (IPC) on Android goes through Binder. Thus, memory unsafety vulnerabilities are especially critical when they happen in the Binder driver
... "Rust in the Linux kernel" (2021) https://security.googleblog.com/2021/04/rust-in-linux-kernel... :
> [...] We also need designs that allow code in the two languages to interact with each other: we're particularly interested in safe, zero-cost abstractions that allow Rust code to use kernel functionality written in C, and how to implement functionality in idiomatic Rust that can be called seamlessly from the C portions of the kernel.
> Since Rust is a new language for the kernel, we also have the opportunity to enforce best practices in terms of documentation and uniformity. For example, we have specific machine-checked requirements around the usage of unsafe code: for every unsafe function, the developer must document the requirements that need to be satisfied by callers to ensure that its usage is safe; additionally, for every call to unsafe functions (or usage of unsafe constructs like dereferencing a raw pointer), the developer must document the justification for why it is safe to do so.
> We'll now show how such a driver would be implemented in Rust, contrasting it with a C implementation. [...]
This guide with unsafe rust that calls into the C, and then with next gen much safer rust right next to it would be a helpful resource too.
What of the post-docker container support (with userspaces also written in go) should be cloned to rust first?
-
The state of Flatpak security: major Projects are the worst?
Rust-for-Linux issue tracker
- rust devs in a nutshell
-
Rustproofing Linux (Part 1/4 Leaking Addresses)
Also, there already exists both issue: https://github.com/Rust-for-Linux/linux/issues/479
Yes, I definitely agree that it's a problem that pr_info implicitly wraps its arguments in unsafe {}. I wrote my own Pull Request with a trival fix.
-
how to compile a rust "hello world" with kernel 6.1?
Note that this template won't work with Linux 6.1, which has very minimal Rust support. You'll want the RustForLinux tree, or maybe Linux 6.2.
-
Rust in the 6.2 Kernel
> Also we’re bringing NPM style supply chain problems to the kernel now?
Nope. They've thought that through.
(In fact, cargo is only used to build test helpers. https://github.com/Rust-for-Linux/linux/blob/rust/Documentat...)
dosbox-staging
-
How to map joystick with more than 2 axis?
https://dosbox-staging.github.io/ Latest Staging version is 0.80.
-
What is the best solution to play mid to late '90s games on modern hardware and Windows 11?
Anyhow whioch dosbox? Well there were non release version somewhere on t he stage but it got fairly bad and https://dosbox-staging.github.io/ is probbaly a better choice.
-
Do yall have recommendations for games on gog?
The version of DOSbox the above games come with is very old, so you may want to look into something like https://dosbox-staging.github.io/, which will run those games much better on newer hardware.
-
What's your favorite DOS platformer game?
Alternatively, if you decide to play Duke Nukem II in Dosbox Staging, you will need to make sure you set CPU Cycles between 3000 - 4500, otherwise the gameplay will be too fast.
-
Looking for projects to contribute to
We're always happy to welcome new contributors to https://dosbox-staging.github.io/ :)
-
Improved Wine gaming with exeCute
Please note, for DOSBox it's much better to rely on FluidSynth built-in DOSBox Staging than on an external process. It will have lower latency, additional filters, optional crossfeed, pop-prevention, etc, etc.
-
Adding ISA to modern motherboards
I'm working on a library to make supporting all of these in apps easier. I've got some hacky, in-progress patches for chocolate doom and dosbox-staging to support these.
-
Fixed cycles for dosbox and fixed cyclesdown and up
I recommend switching to DOSBox Staging and adjusting the configuration file like this:
What are some alternatives?
dosbox-x - DOSBox-X fork of the DOSBox project
dosbox-pure - DOSBox Pure is a new fork of DOSBox built for RetroArch/Libretro aiming for simplicity and ease of use.
daggerfall-unity - Open source recreation of Daggerfall in the Unity engine
em-dosbox - An Emscripten port of DOSBox
boxtron - Steam Play compatibility tool to run DOS games using native Linux DOSBox
wine-staging - Staging repository for Wine; mirror of https://gitlab.winehq.org/wine/wine-staging - Bugtracker and Patches: https://bugs.winehq.org/
proton-ge-custom - Compatibility tool for Steam Play based on Wine and additional components
DOSBox-Optionals - Alternate DOSBox Fork for Windows with Special Features
jakt - The Jakt Programming Language
gccrs - GCC Front-End for Rust
UnderworldExporter - Updated Release 27th Oct 2018 Unity based port of Ultima Underworld I and II. Download under releases
UltimaHacks - Patches which add features to, and improve the usability of, the 1990s video games Ultima VII (BG and SI) and Ultima Underworld (I and II), along with a program to compile and apply these patches.