Verano de código abierto de 2023 | Bienvenido a registrarse en proyectos relacionados con Rust_linux

Summer of Open Source es una serie de actividades de verano iniciadas por el Instituto de Software, la Academia de Ciencias de China y openEuler, cuyo objetivo es alentar a los estudiantes a participar activamente en el desarrollo y mantenimiento de software de código abierto y promover el desarrollo vigoroso de excelentes programas abiertos. comunidades de software fuente. El evento une a las principales comunidades de código abierto para proporcionar proyectos para el desarrollo y mantenimiento de importante software de código abierto y la inscripción abierta a estudiantes universitarios de todo el mundo.

¡La comunidad openEuler tiene actualmente 94 proyectos en línea! Todos los estudiantes universitarios pueden postularse de acuerdo con la dirección que les interesa o en la que son buenos

Hoy les traeré una introducción a las tareas en el campo de la tecnología Rust. La comunidad openEuler ha lanzado un total de 10 proyectos en el campo de la tecnología Rust. Las tareas son moderadamente difíciles. Todos son bienvenidos a participar en los proyectos. Le proporcionaremos abundantes recursos de aprendizaje y orientación técnica.

Proyecto 1: uso de Rust para openEuler para implementar un dispositivo de prueba de simulación que admita el protocolo CXL.mem

Descripción del Proyecto:

CXL es un bus de servidor de alto rendimiento de próxima generación que admite la coherencia de caché entre la CPU y los periféricos, y mejora en gran medida el rendimiento de la interacción de datos entre la CPU y los periféricos. Sin embargo, todavía hay pocos dispositivos de hardware que cumplan con la especificación CXL, y es necesario proporcionar un entorno de prueba de simulación CXL para facilitar el desarrollo y la depuración de controladores y aplicaciones relacionadas con la capa superior.

Este proyecto requiere el uso de Rust para Linux basado en openEuler para realizar la simulación de funciones de los dispositivos de tipo 3 que admiten el protocolo CXL.mem, que se utiliza para depurar el controlador del protocolo CXL o desarrollar aplicaciones de capa superior.

Estándar de salida:

1. Usar Rust para Linux para implementar las funciones del dispositivo del protocolo CXL.mem
2. Dar la evaluación de rendimiento del dispositivo de simulación CXL.mem.

requisito de habilidades:

1. Familiarizado con Rust para Linux
2. Familiarizado con el protocolo CXL.mem.

Mentor del proyecto:

Página de inicio del proyecto:

https://gitee.com/openeuler/open-source-summer/issues/I6YQ1X?from=project-issue

Proyecto 2: Realizar las funciones principales del Proceso No. 1 basado en tokio

Descripción del Proyecto:

El proceso No. 1 es el primer proceso iniciado en modo de usuario y es responsable de activar otros procesos en modo de usuario durante la fase de inicio. systemd es actualmente el proceso número 1 ampliamente utilizado por varios distribuidores.Sus características, como la resolución de dependencias y el inicio paralelo, aceleran el proceso de inicio de Linux. Pero ahora systemd se ha vuelto gradualmente demasiado grande, proporcionando una gran cantidad de módulos y características redundantes, lo que lo hace poco confiable.

Por lo tanto, esperamos implementar una versión simplificada de systemd basada en rust y un systemd altamente confiable y de alto rendimiento basado en IO asíncrono de tokio.

Estándar de salida:

Implemente las funciones principales de systemd basadas en tokio basado en rust u otros marcos asincrónicos. Criterio de elegibilidad:

1. Darse cuenta de las principales capacidades de análisis de dependencia de systemd, al menos incluyendo: Requiere, Quiere, Después, Antes, Conflictos

2. Realice la capacidad de inicio en paralelo, la activación del zócalo del servicio de soporte y la supervisión del punto de montaje

3. Ser capaz de activar el servicio sshd en el entorno del contenedor y conectarse normalmente con ssh

requisito de habilidades:

1. Familiarizado con el desarrollo del lenguaje rust, marcos asincrónicos como tokio

2. Familiarizado con el desarrollo del socket de dominio unix

3. Familiarizado con los módulos principales, como la unidad, el zócalo y el servicio de systemd, y el proceso de inicio de linux

Mentor del proyecto:

Página de inicio del proyecto:

https://gitee.com/openeuler/open-source-summer/issues/I6XN37?from=project-issue

Proyecto 3: entorno de prueba de simulación Transplant CXL para openEuler

Descripción del Proyecto:

CXL es un bus de servidor de alto rendimiento de próxima generación que admite la coherencia de caché entre la CPU y los periféricos, y mejora en gran medida el rendimiento de la interacción de datos entre la CPU y los periféricos. Sin embargo, todavía hay pocos dispositivos de hardware que cumplan con la especificación CXL, y es necesario proporcionar un entorno de prueba de simulación CXL para facilitar el desarrollo y la depuración de controladores y aplicaciones relacionadas con la capa superior.

Actualmente, la comunidad del kernel de Linux y la comunidad QEMU proporcionan un entorno de prueba de simulación CXL basado en QEMU, pero no se ha trasplantado ni se ha probado el rendimiento en el sistema operativo openEuler. Este proyecto requiere trasplantar el entorno de prueba de simulación CXL para el sistema operativo openEuler y dar una evaluación de rendimiento.

Estándar de salida:

1、把现有基于QEMU的CXL模拟测试环境移植到openEuler操作系统上;
2、对移植的模拟测试环境进行性能评估并给出性能指标。

技术要求:

1、熟悉Linux内核开发;
2、熟悉QEMU相关开发;
3、熟悉CXL协议。

项目导师:

项目主页:

https://gitee.com/openeuler/open-source-summer/issues/I6YO77?from=project-issue

项目4:用 Rust 实现基于 RDMA 的通用 RPC 框架

项目描述:

RDMA 是被高性能数据中心广泛使用的高性能网络协议栈,但是至今还没有一款好用的基于 RDMA 协议的 Rust 语言的 RPC 框架。本项目要求采用 Rust 实现一个基于 RDMA 协议的通用 RPC 框架。

产出标准:

1、基于 RDMA 协议实现完整的 RPC 框架;
2、完成所实现的 RPC 框架性能测试。

技术要求:

1、熟悉 Rust 语言;
2、熟悉 Rust 异步编程;
3、熟悉 RDMA 协议的 API;
4、熟悉至少一种常见 RPC 框架。

项目导师:

项目主页:

https://gitee.com/openeuler/open-source-summer/issues/I6YNC8?from=project-issue

项目5:提供基于Rust的高性能grep命令

项目描述:

描述:grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep依赖pcre2作为正则表达式的匹配组件,由于rust提供了更为高性能的正则表达式组件,因此本项目希望通过rust重写grep的方式,直接调用rust提供的整体表达式组件,提供更好性能的grep组件。

C2Rust为能够将C代码转换为Rust语言的转换工具,中科大基于原生C2Rust的基础上,提供更为高效和准确的转换工具,因此本项目在开发过程中可以借助C2Rust工具进行转换,并通过二次修改的方式,完成整个项目的开发。该项目的目标如下:

1、该项目使用Rust语言开发,并且正则表达式库调用Rust提供的组件。

2、新的项目提供名称为ogrep的二进制文件,该命令的参数同原有的grep完全相同。

3、该项目的功能同原有的grep相同,相同的测试用例在ogrep以及grep上相同。

4、基于现有的benchmark测试工程或者设计新的性能测试用例,对不同的grep组件进行性能测试,并提供性能测试对比报告。

产出标准:

1、需提供可以编译通过、正常运行、测试通过的源码以及对应的指导文档。

2、命令行的行为同原有的grep相同。

3、C2Rust转换之后,尽量使用安全的方法进行二次修改,并且需要提供修改过程中的关键修改过程。

4、注释/文档详尽。

技术要求:

1、熟练掌握Rust开发语言

2、熟练使用正则表达式

项目导师:

项目主页:

https://gitee.com/openeuler/open-source-summer/issues/I6YJ6A?from=project-issue

项目6: 用 Rust for Linux  基于 openEuler 实现 RDMA 设备驱动

项目描述:

RDMA是高性能网络协议栈,常用于超算中心和高端存储。目前RDMA的驱动是用C语言实现的。Rust for Linux是采用Rust语言来开发Linux内核模块的框架。

本项目要求采用Rust for Linux来实现RDMA设备驱动。

产出标准:

1、用Rust for Linux实现的驱动要能对接RDMA的API库libverbs;
2、支持常见的发送、接收、建立连接、内存管理等功能;
3、支持虚实地址转换数据、队列连接数据在RDMA设备和主存之间交换。

技术要求:

1、熟悉Rust for Linux;
2、熟悉RDMA协议。

项目导师:

项目主页:

https://gitee.com/openeuler/open-source-summer/issues/I6YRPB?from=project-issue

项目7:对devtmpfs文件系统下的非常规文件进行监控以及进程溯源

项目描述:

当前内核提供了多种文件系统监控技术,比如inotify、fanotify。其中inotify支持对devtmpfs等伪文件系统的监控,但是无法进行文件操作的进程溯源,而fanotify支持对常规文件的监控以及进程溯源,但是无法对devtmpfs这类伪文件系统下的非常规文件进行监控。

我们期望一种内核态到用户态的完整解决方案,既支持对devtmpfs下的非常规文件进行监控,并且支持对文件操作的进程进行溯源。

产出标准:

使用C或Rust语言,实现对devtmpfs下的非常规文件监控以及进程溯源的功能。

1、监控文件的IN_CLOSE_WRITE事件

2、支持对触发文件事件的进程ID溯源

3、提供技术演示。

注释/文档详尽。

项目导师:

项目主页:

https://gitee.com/openeuler/open-source-summer/issues/I6XLIK?from=project-issue

项目8: 为 Rust 编程语言的 Crate 设计独立文件格式并实现

项目描述:

任务所指的 Crate 为 Rust 编程语言中的 Library Crate,当前 Crate 文件为 Library 源代码仓库的压缩包(去除了 .git 目录)。对于 Crate 文件的 Checksum 校验值,存储在对应的 Index 仓库中。

例如在 https://github.com/rust-lang/crates.io-index/blob/master/lv/gl/lvgl 的第一行存储了 lvgl 的 0.1.0 版本的所有信息,其中 cksum 是压缩包的校验值。

{"name":"lvgl","vers":"0.1.0","deps":[{"name":"cty","req":"^0.2.1","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"lvgl-sys","req":"^0.1.0","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"683a7099d37b83be0dd679b4daf4252c601348729ee6cd1769d23006d29a83a0","features":{},"yanked":false}
{"name":"lvgl","vers":"0.1.0","deps":[{"name":"cty","req":"^0.2.1","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"},{"name":"lvgl-sys","req":"^0.1.0","features":[],"optional":false,"default_features":true,"target":null,"kind":"normal"}],"cksum":"683a7099d37b83be0dd679b4daf4252c601348729ee6cd1769d23006d29a83a0","features":{},"yanked":false}

这样带来了几个问题:

1、Crate 文件不能单独分发,因为其文件格式不带校验值,所以无法确定是否被修改。

2、如果一个 crates.io 的代理服务即代理了 https://github.com/rust-lang/crates.io-index 仓库,同时缓存了 crate 文件就可以对这个轻易的对 Crate 文件进行修改并且使用代理的人并不感知。

为了解决这个问题,本次任务计划针对 Crate 设计一个文件格式,通过在 HEADER 中增加附属信息,提升 Crate 文件的易用性、安全性,使其能够独立的通过 Mirror 服务分发,降低 crates.io 的带宽压力。

产出标准:

1、对目前 Linux 中主流使用的各种文件格式有大概的分析,包括但不限于 rpm、deb 等

2、对有包管理方案的主流开发语言的 Library 格式进行分析,包括单不限于 Golang、Nodejs 、Python、Ruby 等

3、针对需求设计 Crate 文件的格式,并实现单 crate 文件和批处理能力的编码和解码功能

4、将以上的工作整理为英文文档,同时作为产出

5、针对 cargo 工具开发一个能使用此功能的 patch,能够兼容使用原压缩格式的 crate 文件

技术要求:

1、对 Rust 编程语言比较了解,有一定的 Rust 开发经验

2、熟练使用主流或非主流的 Linux 发型版

3、英语熟练

项目导师:

项目主页:

https://gitee.com/openeuler/open-source-summer/issues/I6XGL1?from=project-issue

项目9: 实现解析systemd格式配置的rust库

项目描述:

systemd是一个Linux系统的初始化系统和服务管理器,它使用一种特定的格式来描述系统服务和守护进程的配置。本题目的目标是编写一个Rust crate库,能够解析systemd格式的配置文件,并将其转换为Rust数据结构。具体而言,需要实现以下功能:

1、读取systemd格式的配置文件,解析其中的配置项和值。

2、将解析后的配置项和值存储到Rust数据结构中,例如HashMap或Struct。

3、提供一个简单的命令行界面,让用户可以输入配置文件路径并查看解析结果。

产出标准:

1、使用Rust语言编写程序, 提供lib形式的crate。

2、使用标准库或第三方库解析配置文件。

3、使用合适的数据结构存储解析结果。

4、注释/文档详尽。

技术要求:

1、熟悉linux

2、熟悉rust语言

3、熟悉systemd配置格式

项目导师:

项目主页:

https://gitee.com/openeuler/open-source-summer/issues/I6XKVU?from=project-issue

项目10: 用 Rust 基于 DPDK 在用户态实现 RDMA RoCEv2 协议

项目描述:

RDMA 被高性能数据中心广泛使用,RDMA RoCEv2 协议因为兼容以太网被各大互联网厂商和云计算提供商所广泛使用。RDMA 的极致性能需要通过专业的 RDMA 网卡实现,但是在某些环境中仍然需要软件模拟来实现相同的功能。现有使用叫广泛的软件模拟实现为 soft-roce 内核实现,该实现存在不稳定的问题,被 RedHat 踢出了发行版内核。

基于上述现状,本项目要求采用 Rust 语言异步编程的方式,基于 DPDK 实现用户态 RoCEv2 协议。通过 DPDK 在用户态实现 RoCEv2 协议一方面具有很高的灵活性,易于调试、便于修改,另一方面也能保证不错的性能。

产出标准:

1、在用户态完整实现 RoCEv2 协议;
2、对接 DPDK;
3、支持 libverbs 调用接口。

技术要求:

1、熟悉 Rust 语言,以及 Rust Async;
2、熟悉 DPDK;
3、熟悉 RoCEv2 协议。

项目导师:

项目主页:

https://gitee.com/openeuler/open-source-summer/issues/I6XGL1?from=project-issue

Calendario de eventos y participación

Actualmente en proceso de registro de alumnos, comunicación con tutores y presentación de solicitudes de proyectos.

Open Source Summer 2023 | Bienvenido a registrarse en proyectos relacionados con Rust_Rust_02