首页 > 其他分享 >开源之夏 2023 | 欢迎报名Rust相关项目

开源之夏 2023 | 欢迎报名Rust相关项目

时间:2023-05-20 13:08:01浏览次数:54  
标签:项目 实现 Linux 之夏 RDMA 2023 CXL Rust


开源之夏 2023 | 欢迎报名Rust相关项目_Rust

开源之夏是中国科学院软件研究所联合openEuler发起的开源软件供应链点亮计划系列暑期活动,旨在鼓励在校学生积极参与开源软件的开发维护,促进优秀开源软件社区的蓬勃发展。活动联合各大开源社区,针对重要开源软件的开发与维护提供项目,并向全球高校学生开放报名。

openEuler社区目前已上线94个项目!欢迎各大学子按照自己感兴趣或擅长的方向进行申请

今天给大家带来Rust技术领域的任务介绍,openEuler社区共发布了10个Rust技术领域的项目,任务难易程度适中,欢迎大家参与到项目中。我们将为大家提供丰富的学习资源和技术指导 。

项目1:用 Rust for   为 openEuler 实现支持 CXL.mem 协议的仿真测试设备

项目描述:

CXL是下一代服务器高性能总线,支持CPU和外设之间的缓存一致性,大幅度提升了CPU和外设之间数据交互的性能。但是目前符合CXL规范的硬件设备还很少,需要提供CXL的模拟测试环境,以方便驱动和上层相关应用的开发与调试。

本项目要求采用Rust for Linux基于openEuler实现支持CXL.mem协议的type3型设备功能仿真,用于调试CXL协议的驱动或开发上层应用。

产出标准:

1、用Rust for Linux实现CXL.mem协议的设备功能;
2、给出CXL.mem仿真设备的性能评估。

技术要求:

1、熟悉Rust for Linux;
2、熟悉CXL.mem协议。

项目导师:

项目主页:

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

项目2:基于tokio实现1号进程的核心功能

项目描述:

1号进程用户态启动的第一个进程,在开机阶段由它负责拉起用户态的其他进程。systemd是当前被各发行商广泛使用的1号进程,它提出的依赖解析、并行启动等特点加速了linux的启动流程。但是现在systemd逐渐变得过于庞大,提供了大量冗余模块、特性,导致它不够可靠。

因此,我们希望能够基于rust实现一个简化版本的systemd,基于tokio的异步IO实现高性能、高可靠的systemd。

产出标准:

基于rust的tokio或其他异步框架实现systemd的核心功能。合格标准:

1、实现systemd的主要的依赖解析能力,至少包含:Requires、Wants、After、Before、Conflicts

2、实现并行启动能力,支持服务的socket激活、挂载点监控

3、能够在容器环境上拉起sshd服务,并能正常ssh连接

技术要求:

1、熟悉rust语言的开发,tokio等异步框架

2、熟悉unix domain socket的开发

3、熟悉systemd的unit、socket、service等核心模块及linux的启动流程

项目导师:

项目主页:

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

项目3:为 openEuler 移植 CXL 模拟测试环境

项目描述:

CXL是下一代服务器高性能总线,支持CPU和外设之间的缓存一致性,大幅度提升了CPU和外设之间数据交互的性能。但是目前符合CXL规范的硬件设备还很少,需要提供CXL的模拟测试环境,以方便驱动和上层相关应用的开发与调试。

目前Linux内核社区和QEMU社区提供了基于QEMU的CXL模拟测试环境,但是尚未在openEuler操作系统上进行移植和性能测试。本项目要求为openEuler操作系统移植CXL模拟测试环境并给出性能评估。

产出标准:

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

活动日程及参与方式

目前正处于学生注册、沟通导师、提交项目申请环节。

开源之夏 2023 | 欢迎报名Rust相关项目_开源_02

标签:项目,实现,Linux,之夏,RDMA,2023,CXL,Rust
From: https://blog.51cto.com/u_14948868/6317326

相关文章

  • 2023/5/20
    %%订阅IMU话题四元数数据1.创建订阅者 订阅imu话题,消息格式:sensor_msgs/Imusensor_msgs/Imu消息格式:订阅者:ros::Subscriberimu_sub=n.subscribe("/imu/data",10,imucallback);2.imucallback回调函数处理四元数解算机器人方向2.1声明个四元数对象并赋值:tf::Quaternion......
  • 【BSP视频教程】BSP视频教程第26期:CAN/CANFD/CANopen专题,CANFD整个运行机制精讲,图文并
     上期视频教程为大家分享了很多CAN理论方面的知识,本期视频教程我们在实战应用中学习CANFD。CANFD涉及到的知识点非常多,我们本期重点是把CANFD整个运行机制搞明白,知其然知其所以然。视频:https://www.bilibili.com/video/BV1iX4y117Bv视频提纲:参考资料:1、【原创】H7-TOOL的CANFDT......
  • 【BSP视频教程】BSP视频教程第26期:CAN/CANFD/CANopen专题,CANFD整个运行机制精讲,图文并
     上期视频教程为大家分享了很多CAN理论方面的知识,本期视频教程我们在实战应用中学习CANFD。CANFD涉及到的知识点非常多,我们本期重点是把CANFD整个运行机制搞明白,知其然知其所以然。视频:https://www.bilibili.com/video/BV1iX4y117Bv视频提纲:参考资料:1、【原创】H7-TOOL的CANFDT......
  • 【数论】Rust使用Miller-Rabin primality test判别素数
    题目地址https://ac.nowcoder.com/acm/contest/57677/A代码usestd::io::{self,BufRead,Write};fnis_prime_triival(n:i128)->bool{ifn<=1{returnfalse;}ifn==2{returntrue;}ifn%2==0{retur......
  • 2023-05-19:汽车从起点出发驶向目的地,该目的地位于出发位置东面 target 英里处。 沿途
    2023-05-19:汽车从起点出发驶向目的地,该目的地位于出发位置东面target英里处。沿途有加油站,每个station[i]代表一个加油站,它位于出发位置东面station[i][0]英里处,并且有station[i][1]升汽油。假设汽车油箱的容量是无限的,其中最初有startFuel升燃料。它每行驶1英里......
  • 2023/5/19
    L1-031到底是不是太胖了分数 10全屏浏览题目作者 陈越单位 浙江大学据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材(即|真实体重 − 标准体重| < 标准体重×10%)。......
  • 2023-05-19:汽车从起点出发驶向目的地,该目的地位于出发位置东面 target 英里处。 沿途
    2023-05-19:汽车从起点出发驶向目的地,该目的地位于出发位置东面target英里处。沿途有加油站,每个station[i]代表一个加油站,它位于出发位置东面station[i][0]英里处,并且有station[i][1]升汽油。假设汽车油箱的容量是无限的,其中最初有startFuel升燃料。它每行驶1英里就会用......
  • APIO2023游记
    其实本可以不用来的。自然是没有什么人关心的,也自然是没有什么人看的。但还是想写。2023.05.19早上八点十分的飞机,五点半的起床。暗黑的天空中飘着不大的雨花,不由生出几分寒意。路上司机在放以父之名和夜的第七章,我凝视着窗外,默默地复习着压根听不清也念不出的歌词,恍惚间回到了......
  • 2023.5.19——软件工程日报
    所花时间(包括上课):6h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习。我了解到的知识点:1.了解了一些数据库的知识;2.了解了一些python的知识;3.了解了一些英语知识;5.了解了一些Javaweb的知识;4.了解了一些数学建模的知识;6.了解了一些计算机网络的知识;......
  • 会声会影2023旗舰版系统配置要求,会声会影序列号能用多少次
    会声会影2023旗舰版(CorelVideoStudio2023)是Corel旗下一款功能强大的专业视频制作软件的视频编辑软件及视频剪辑软件.会声会影2023旗舰版,可以用于剪辑合并视频,制作视频,屏幕录制,光盘制作,视频后期编辑,添加特效,字幕和配音等操作,无需专业的视频编辑知识,任何人都能快速上手.......