You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I recently learned about Mermaid diagrams, and I recently had a discussion with someone who gave me the idea to make a diagram to show how some of the parts in and around Mustang relate to each other. Here's what I came up with:
Mustang is the experimental project which currently includes c-scape and origin and some support tools to help compile programs to use them, allowing people to try them out on real programs such as ripgrep. This doesn't require any changes to std's code.
A sibling project is the port of std to origin and rustix. The port is not complete, though it is mostly usable since rustix calls can coexist with the existing libc calls. Compared to the Mustang approach, this approach results in simpler and more efficient code, since it avoids Rust calling through the C ABI, translating back into idiomatic Rust, and then translating into the C-like system calls or platform libc ABI. It stays in Rust until the syscalls. It also factors out a lot of low-level unsafe blocks and error handling from the higher-level logic of std.
Some people have asked about what an official Rust target using these components might look like. There are a variety of ways this could be done, though there's more work and reorganization needed. At this time, work toward this goal is on hold as there hasn't been sufficient community interest. If anyone has thoughts about what they'd like to see here, please reach out!
Both Mustang and the port of std to rustix serve as interesting testcases for rustix, so I hope to continue maintaining them for that purpose.
Rustix itself is a relatively mature project, which is used in production, and which is part of several much larger stories, including I/O safety and cap-std, which themselves are part of larger stories, so even though some of the goals are on hold, rustix will continue to have other goals, and I plan to continue to actively maintain rustix.
The text was updated successfully, but these errors were encountered:
I recently learned about Mermaid diagrams, and I recently had a discussion with someone who gave me the idea to make a diagram to show how some of the parts in and around Mustang relate to each other. Here's what I came up with:
Mustang is the experimental project which currently includes c-scape and origin and some support tools to help compile programs to use them, allowing people to try them out on real programs such as ripgrep. This doesn't require any changes to std's code.
A sibling project is the port of std to origin and rustix. The port is not complete, though it is mostly usable since rustix calls can coexist with the existing libc calls. Compared to the Mustang approach, this approach results in simpler and more efficient code, since it avoids Rust calling through the C ABI, translating back into idiomatic Rust, and then translating into the C-like system calls or platform libc ABI. It stays in Rust until the syscalls. It also factors out a lot of low-level
unsafe
blocks and error handling from the higher-level logic of std.Some people have asked about what an official Rust target using these components might look like. There are a variety of ways this could be done, though there's more work and reorganization needed. At this time, work toward this goal is on hold as there hasn't been sufficient community interest. If anyone has thoughts about what they'd like to see here, please reach out!
Both Mustang and the port of std to rustix serve as interesting testcases for rustix, so I hope to continue maintaining them for that purpose.
Rustix itself is a relatively mature project, which is used in production, and which is part of several much larger stories, including I/O safety and cap-std, which themselves are part of larger stories, so even though some of the goals are on hold, rustix will continue to have other goals, and I plan to continue to actively maintain rustix.
The text was updated successfully, but these errors were encountered: