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
Copy file name to clipboardExpand all lines: content/blog/2024-10-extending.md
+21-5
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
title = "Extending the Coreutils project - Rewriting base tools in Rust"
3
3
draft = true
4
4
date = 2024-10-01
5
-
authors = ["Sylvestre Ledru", "Terts Diepraam"]
5
+
authors = ["Sylvestre Ledru"]
6
6
+++
7
7
8
8
Over the last four years, we have been working on reimplementing some of the key Linux tools in Rust. We started with the [Coreutils](https://github.com/uutils/coreutils) and [findutils](https://github.com/uutils/findutils).
@@ -13,6 +13,18 @@ Given the overwhelming positive feedback around this initiative, we are going to
13
13
14
14
We also noticed a lot of contributions on these projects coming from a diverse group of hackers (503 different contributors on Coreutils alone!). With the growing enthusiasm for Rust and the eagerness to learn it, now is the best time to push this project forward. Rewriting in Rust will help with the long-term maintenance of the ecosystem, ensuring it stays robust, safe, and welcoming for new generations of contributors.
15
15
16
+
### Vision for the Future
17
+
18
+
As we expand the scope of the project, we envision a future where Rust becomes the backbone of essential Linux, Unix, and macOS system tools. Our focus will be on improving security, ensuring long-term maintainability, and optimizing performance for both modern and legacy systems. Through the uutils umbrella, we aim to create a more secure, efficient, and scalable alternative to the traditional GNU tools.
19
+
20
+
### Specific Benefits of Rust
21
+
22
+
Rust offers several advantages over C/C++, particularly in terms of memory safety, concurrency, and performance. By eliminating common security issues such as null pointer dereferences and buffer overflows, Rust allows us to build tools that are inherently safer. Its modern compiler tooling also enables us to optimize performance without sacrificing code safety, ensuring that our utilities can handle the demands of modern computing environments while remaining easy to maintain.
23
+
24
+
### Challenges and Opportunities
25
+
26
+
As with any large-scale reimplementation, there are challenges to overcome. Porting complex utilities from C to Rust requires careful consideration of edge cases and platform-specific behaviors. Additionally, ensuring full compatibility across Linux, Unix, and potentially macOS environments presents unique challenges. However, these challenges also offer opportunities for growth and innovation, allowing us to rethink and refine core system utilities for modern needs. Rust's modern design gives us the chance to improve both security and performance while maintaining cross-platform compatibility.
27
+
16
28
### Next Steps
17
29
18
30
For the next phase of the project, we are adopting the same approach: a drop-in replacement of the GNU C implementations. Here's what's coming next:
@@ -27,17 +39,21 @@ For the next phase of the project, we are adopting the same approach: a drop-in
27
39
28
40
These packages are part of the essential list for Debian and Ubuntu, and we're excited to push their Rust reimplementation further.
29
41
30
-
### GSoC 2024 Participation
42
+
### GSoC 2024 Participation: Proof of Our Commitment
31
43
32
-
This year, we had the privilege of mentoring three students during Google Summer of Code (GSoC) 2024, who contributed to the project in remarkable ways:
44
+
This year, as part of our ongoing commitment to enhancing and expanding Rust-based tools, we had the privilege of mentoring three students during Google Summer of Code (GSoC) 2024. Their work exemplifies the project's momentum and showcases the contributions of the next generation of developers:
33
45
34
46
1.**Sreehari Prasad TM** worked on improving the support of Rust-based coreutils in Debian. His focus was on making uutils compatible with the GNU coreutils test suite. Sreehari resolved most of the failing tests for the `cp`, `mv`, and `ls` utilities and significantly enhanced compatibility with Debian.
35
47
36
48
2.**Hanbings** tackled the implementation of key GNU `findutils` utilities like `xargs`, `find`, `locate`, and `updatedb` in Rust. His work focused on improving compatibility with the GNU suite while enhancing performance, resulting in major progress on missing features and test code.
37
49
38
-
3.**[Third GSoC Student]** worked on implementing the `procps` suite, which includes utilities like `slabtop`, `top`, `pgrep`, `pidof`, `ps`, `pidwait`, and `snice`. This project involved cross-platform support and optimization of performance, focusing first on Linux implementations with plans to extend to other Unix systems in the future.
50
+
3.**Krysztal Huang** worked on implementing the `procps` suite, which includes utilities like `slabtop`, `top`, `pgrep`, `pidof`, `ps`, `pidwait`, and `snice`. This project involved cross-platform support and optimization of performance, focusing first on Linux implementations with plans to extend to other Unix systems in the future.
51
+
52
+
These students made significant contributions to the Rust coreutils project, demonstrating our continued dedication to open-source development and our belief in Rust as the foundation for the future of system tools. The GSoC projects are a testament to our vision of building a sustainable, high-performance toolchain for the Linux/Unix world, ensuring its evolution and security for years to come.
53
+
54
+
### Call to Action for Contributors
39
55
40
-
These students made significant contributions to the Rust coreutils project, pushing forward both feature parity and overall performance improvements.
56
+
We are always looking for contributors who are passionate about system-level programming and Rust. Whether you're experienced with GNU utilities or just learning Rust, your contributions will be invaluable to this project. You can get involved by picking up good-first issues, reviewing code, or even helping us test new features across various platforms. The [uutils GitHub organization](https://github.com/uutils) has all the information you need to get started. You can also sponsor the project through [GitHub Sponsors](https://github.com/sponsors/uutils).
0 commit comments