惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Vercel News
Vercel News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
雷峰网
雷峰网
有赞技术团队
有赞技术团队
罗磊的独立博客
博客园 - 叶小钗
Jina AI
Jina AI
博客园 - 司徒正美
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Tailwind CSS Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
Apple Machine Learning Research
Apple Machine Learning Research
阮一峰的网络日志
阮一峰的网络日志
Microsoft Security Blog
Microsoft Security Blog
大猫的无限游戏
大猫的无限游戏
量子位
MyScale Blog
MyScale Blog
V
Visual Studio Blog
博客园 - 聂微东
The Cloudflare Blog
Engineering at Meta
Engineering at Meta
小众软件
小众软件
宝玉的分享
宝玉的分享

See you soon

哟,好久不见,无线打印 | See you soon 试试将文章版本化管理吧 | See you soon 使用 Quadlet 将 Podman 中的 Postgres 当作 systemd 服务运行 | See you soon 大他者,那个无时无刻都在盯着你的东西 | See you soon Laws of Software Engineering,软件工程定律 | See you soon 浅记多因素身份认证 | See you soon Linux 内核中的度量单位 | See you soon 重置 GPG 智能密钥 | See you soon 向 NAS 引入 samba | See you soon 无法重复键入的 Fcitx5 | See you soon ZFS 降级事故 | See you soon 记被 XanMod Kernel 和 AppArmor 联合坑的一次踩坑 | See you soon agent 的 skill 与 toolcall | See you soon 记一次服务器被挂恶意挖矿二进制 | See you soon 活着的 Arc | See you soon 令 acme.sh 使用 Cloudflare 的 DNS API 签发与续签证书 | See you soon 于 Tokio 中卸载 CPU Bound 任务 | See you soon 如我所见,梦破碎的时候 | See you soon 74LS 家族手册 | See you soon JDK Projects 备忘录 | See you soon 关于历史 | See you soon 用 curl 下载 OnePlus 的 ROM | See you soon 实用命令切片 | See you soon 再见,Oh My Zsh。 | See you soon 你不应该复用 strings.Builder | See you soon 博客的明日 | See you soon 被 AppArmor 击杀的 Dockge | See you soon AI 时代的自我 | See you soon 支持删除的布隆过滤器 | See you soon 基于栈的虚拟机与基于寄存器的虚拟机 | See you soon
EN:The Journey of Rust and Procps | See you soon
Krysztal Huang · 2024-08-20 · via See you soon

Hi, I’m Krysztal Huang, a contributor to Debian’s uutils/procps.

I’m thrilled to have had the opportunity to participate in GSoC 2024, contributing to the uutils project and gaining a wealth of knowledge and skills along the way. :)

The Debian and uutils communities are incredibly welcoming, which has been fantastic. I’ve been using Debian as my primary operating system for about eight years now, drawn to its stability. I frequently rely on Debian for my personal services and various projects.

The procps project

The most widely used implementation of procps is the one under GPLv3, the procps-ng project. It provides a set of tools for system information statistics that have been used for many years and have served well. However, it is written in C and licensed under GPLv3.

This project has been in use for over thirty years, and its code is not as open as it could be because of its license. Moreover, it will likely remain in our operating systems for the foreseeable future.

But procps and C are getting old. Younger developers tend to prefer newer programming languages like Rust. As a result, procps may rely on the previous generation for maintenance, while the younger generation may have less interest in it due to their unfamiliarity with C. Consequently, those wanting to contribute may struggle to effectively fix issues.

The CVEs and Rust

Rust offers excellent memory safety and performance. Many CVEs associated with the original procps are related to memory safety issues (e.g., buffer overflows):

…and others.

However, with Rust, these issues are caught at compile time, thanks to its ownership system.

So…?

I’m working on rewriting procps under the uutils organization. The new implementation, simply called procps, has taught me a lot: from understanding the /proc pseudo-filesystem to the differences between *NIX (and *NIX-like) systems.

The initial implementation of uutils procps was focused on the Linux platform. However, to support the broader *NIX platform, including macOS and FreeBSD, it’s important to address the subtle differences in implementation across these operating systems. As of now, the uutils procps does not support macOS and FreeBSD.

Relevant issues:

The ultimate goal for uutils procps is to support both *NIX and Windows platforms. However, the threading models for Windows and *NIX platforms differ significantly, necessitating the abstraction of these models into a more general one.

Most importantly, uutils’ procps implementation is licensed using the MIT license, which is a very loose open source license. Meaning that uutils’ procps has virtually no restrictions from source distribution to use.

What did I do?

I’ve implemented the basic parts of some commands and they now run the most basic functions.

Relevant prs:


Thanks to my mentors and, without your help, I probably wouldn’t have fit into the community and development as well as I have :)