推荐项目 | 基础工具库 您所在的位置:网站首页 rust秘籍 推荐项目 | 基础工具库

推荐项目 | 基础工具库

2023-03-27 17:28| 来源: 网络整理| 查看: 265

推荐项目 | 基础工具库

聚焦 Rust 生态库

ouch: 压缩和解压缩工具

ouch代表Obvious Unified Compression Helper,是一个 CLI 工具,可帮助您压缩和解压缩多种格式的文件。

格式.tar.zip.bz, .bz2.gz.lz4.xz, .lzma.zst 支持的✓✓✓✓✓✓✓

https://github.com/ouch-org/ouch

Meadowlark: 数字音频工作站

Meadowlark 是一个(目前未完成)项目,旨在成为适用于 Linux、Mac 和 Windows 的免费开源 DAW(数字音频工作站)。它的目标是成为世界各地艺术家的强大录音、作曲、编辑、声音设计、混音和母带制作工具,同时还具有直观性和可定制性。

可以关注下此项目,看看它的目标能否实现

https://github.com/MeadowlarkDAW/Meadowlark

gpgpu-rs : 基于 wgpu 实现的 GPU 计算库

wgpu 是一个安全且可移植的 GPU 抽象库,实现 WebGPU API 。gpgpu-rs 在其之上创建了一个简单的 GPU 计算库。

https://github.com/UpsettingBoy/gpgpu-rs https://github.com/gfx-rs/wgpu libracity: 基于 Bevy 实现的益智游戏

LibraCity - 针尖上的城市规划!LibraCity 是一款益智游戏,您可以用一根针在平衡状态下建造一座城市。要取得成功,请利用建筑物的各种重量,并在确保城市保持稳定的同时放置它们。

https://github.com/djeedai/libracity

Chaos Theory : 一款小游戏

用 Rust 和 WASM 实现的一款 H5 小游戏,利用了一个小型的游戏引擎 ld-game-engine 。

https://github.com/necauqua/chaos-theory 在线玩:https://ld49.necauqua.dev/ soldank: 是 Soldat 游戏的 Rust 实现

soldat 是 是一款独特的2D(侧视图)多人动作游戏。 它受到了Liero,Worms,Quake和Counter-Strike等最好的游戏的影响,并提供了大量的鲜血和肉体的快节奏游戏体验。soldank 是这款游戏的 Rust 实现。

https://github.com/smokku/soldank

plotters :快速绘图工具

Plotters 是一个绘图库,设计用于以纯 Rust 渲染图形、绘图和图表。支持各种类型的后端,包括位图、矢量图、活塞窗口、GTK/Cairo 和 WebAssembly。

在有的人看来,这仍然不是"非常"便捷,尤其是在 debug 的时候,仍然需要花费一点精力来绘制。 debug_plotter 这个库帮我们实现了这个需求,通过 plot! 宏,可以快速完成图像绘制,可视化程序运行情况。

fn main() { for a in 0usize..10usize { let b = (a as f32 / 2.0).sin() * 10.0; let c = 5 - (a as i32); debug_plotter::plot!("My Plot"; a, b, c); } }

https://crates.io/crates/debug_plotter

rnet - 从 .net 中调用 Rust

这个 crate 原理仍然是将rust编译成 cdylib,然后在 c# 里面调用。不过将这个过程变得更容易了一点。

https://docs.rs/rnet/0.1.0/rnet/index.html

Rust-CUDA: 完全用 Rust 编写和执行快速 GPU 代码的库和工具生态系统

Rust CUDA 项目是一个旨在使 Rust 成为使用 CUDA 工具包进行极快 GPU 计算的一级(tier-1)语言的项目。它提供了将 Rust 编译为极快的 PTX 代码的工具,以及使用现有 CUDA 库的库。

过去,通用高性能 GPU 计算是使用 CUDA 工具包完成的。CUDA 工具包主要提供了一种使用 Fortran/C/C++ 代码与单一源的 CPU 代码协同进行 GPU 计算的方法。它还提供了许多库、工具、论坛和文档来补充单源 CPU/GPU 代码。

CUDA 是唯一的 NVIDIA 工具包。已经提出了许多用于跨平台 GPU 计算的工具,例如 OpenCL、Vulkan Computing 和 HIP。然而,到目前为止,CUDA 仍然是此类任务最常用的工具包。这就是为什么必须让 Rust 成为与 CUDA 工具包一起使用的可行选择。

然而,使用 Rust 的 CUDA 在历史上一直是一条非常崎岖的道路。到目前为止,唯一可行的选择是使用 LLVM PTX 后端,但是,LLVM PTX 后端并不总是有效,并且会为许多常见的 Rust 操作生成无效的 PTX,而且近年来已经一次又一次地表明随着 rust-gpu(用于 Rust -> SPIR-V)等项目的出现,GPU 上的 Rust 需要专门的解决方案。

我们希望通过这个项目,我们可以推动 Rust GPU 计算行业向前发展,并使 Rust 成为处理此类任务的优秀语言。Rust 提供了很多好处,例如__restrict__每个内核的性能优势、出色的模块/板条箱系统、使用 分隔 CPU/GPU 代码的不安全区域unsafe、高级包装器到低级 CUDA 库等。

https://github.com/Rust-GPU/Rust-CUDA

minijinja: Rust 实现的一款最小依赖的模板库

作者是 Python 框架 Flask 的作者,minijinja 基于 Python 的 Jinja2 模板引擎语法和行为而实现。

https://github.com/mitsuhiko/minijinja

appflowy: 一个开源的基于Rust和Flutter的Notion替代产品

@annieanqi 开源了一个基于 Rust 和 Flutter 的 Notion 替代产品 appflowy,目前是MVP状态,该项目还处于一个比较早的状态,欢迎各位开发者提出自己的想法。

官网 Repo Quinn: 0.8.0发布,正式支持 QUIC v1

Quinn是IETF QUIC传输协议的纯rust、异步兼容的实现。

目前刚发布 0.8.0 版本,正式支持了 QUIC v1标准.

https://github.com/quinn-rs/quinn/releases/tag/0.8.0

Docker Activity:获取docker容器的统计数据和能耗

Get stats and the energy consumption of your docker containers

Docker activity是一种用于监视Docker容器统计信息并输出其能耗的工具。

当前它还处于早期阶段,对于demoing来说,它很快就会变得更好。。。

Docker Activity

pixels - 一个微小的硬件加速像素帧缓冲区。

建立在现代图形 API 的基础上

wgpu:Vulkan、Metal、DirectX 12、OpenGL ES3。

DirectX 11、WebGL2 和 WebGPU 支持正在进行中。

使用您自己的自定义着色器来获得特殊效果。

完美像素边界上的硬件加速缩放。

支持非方形像素纵横比。

https://github.com/parasyte/pixels

Lemmy v0.14.0 发布

Lemmy 是一款 Reddit 替代品,使用 Rust 编写。在刚刚发布的 v0.14.0 中完成了与 Mastodon 和 Pleroma 联合。这意味着,如果你是 Mastodon 和 Pleroma 的用户,那么你也可以:

查看 Lemmy 社区,用户配置文件,帖子和评论 关注 Lemmy 社区获取新的帖子和评论 答复(提及)双向生效,包括通知

Lemmy Online: https://lemmy.ml

Lemmy (a federated reddit alternative written in Rust) Release v0.14.0: Federation with Mastodon and Pleroma: https://lemmy.ml/post/89740

hRPC:面向用户的 API 的简单 RPC 系统

hRPC 是一个 RPC 系统,在 Harmony 仓库中,作者们一直在用 hRPC 开发他们的去中心化聊天协议。hRPC 使用 PB 作为协议中间件,并支持流式传输。hRPC 使用 REST 对普通一元请求建模,使用 WebSockets 对流请求建模。因此,为不支持它的语言编写一个库应该很容易。

https://dev.to/harmonydevelopment/introducing-hrpc-a-simple-rpc-system-for-user-facing-apis-16ge elfshaker 一个高性能的针对二进制文件进行了优化的版本控制系统

400 GiB -> 100 MiB,访问时间为1s+;当应用于 clang 构建时。

Github链接

semver-explain: 语义版本解释工具

semver-explain,是一个 CLI 工具,用于解释语义版本控制 (Semantic Versioning)要求,将其转换为仅具有小于、大于或等于比较器的形式,其中主要、次要和补丁版本都是指定的。

SemVer 需求的确切含义解释来自于 Cargo。尤其是它不处理连字符范围或来自 JS node-semver 库的 x-ranges。

#![allow(unused)] fn main() { $ semver-explain "^1.4.0" >=1.4.0, =0.5.3, =5.6.0, Display query result: shape: (4, 1) +------------------------------+ | email | | --- | | str | +==============================+ | "[email protected]" | +------------------------------+ | "[email protected]" | +------------------------------+ | "[email protected]" | +------------------------------+ | "[email protected]" | +------------------------------+ > Sending email to 4 receivers ... [email protected] ... ok [email protected] ... ok [email protected] ... ok [email protected] ... ok

Massage 配置文件格式如下:

# You can leave EITHER the text OR the html empty, but not both. Ideally, fill out both. # You MUST provide a subject. Personalize message by wrapping variables in curly brackets, eg. {firstname}. message: # The subject of your email subject: "Test subject" # The plaintext version text: "This is a test message (plaintext)." # The html version html: "This is a test message (html)."

GitHub:https://github.com/quambene/pigeon-rs

LibertyOS - 使用Rust语言从头开发的操作系统

LibertyOS完全从头开发,具体面向桌面还是IoT目前并不清楚,项目还在早期,感兴趣可参与。

https://github.com/LibertyOS-Development/kernel

Persy - 一个单文件数据库存储,类似于 sqlite

Persy完全由Rust开发,目前已发布1.1版本。在性能上有一些改进。

https://persy.rs/posts/persy-1.1.html

yap:一个小型的、基于迭代器的、零依赖的解析库

Yap是一个小型的、零依赖的解释器库,灵感来自于parser-combinator。我试图以简洁性换取简单性,并以迭代器接口的灵活性为基础。它的目标是使解析字符串和切片变得容易,并且易于使用。

在过去的几个星期里,我一直在构建和使用它,我认为它已经准备好向其他可能有兴趣使用它的人发布了!

下面是它的用法:

#![allow(unused)] fn main() { use yap::{ // This trait has all of the parsing methods on it: Tokens, // Allows you to use `.into_tokens()` on strings and slices, // to get an instance of the above: IntoTokens }; // Step 1: convert our input into something implementing `Tokens` // ================================================================ let mut tokens = "10 + 2 x 12-4,foobar".into_tokens(); // Step 2: Parse some things from our tokens // ========================================= #[derive(PartialEq,Debug)] enum Op { Plus, Minus, Multiply } #[derive(PartialEq,Debug)] enum OpOrDigit { Op(Op), Digit(u32) } // The `Tokens` trait builds on `Iterator`, so we get a `next` method. fn parse_op(t: &mut impl Tokens) -> Option { match t.next()? { '-' => Some(Op::Minus), '+' => Some(Op::Plus), 'x' => Some(Op::Multiply), _ => None } } // We also get other useful functions.. fn parse_digits(t: &mut impl Tokens) -> Option { let s: String = t .tokens_while(|c| c.is_digit(10)) .collect(); s.parse().ok() } // As well as combinator functions like `sep_by_all` and `surrounded_by`.. let op_or_digit = tokens.sep_by_all( |t| t.surrounded_by( |t| parse_digits(t).map(OpOrDigit::Digit), |t| { t.skip_tokens_while(|c| c.is_ascii_whitespace()); } ), |t| parse_op(t).map(OpOrDigit::Op) ); // Now we've parsed our input into OpOrDigits, let's calculate the result.. let mut current_op = Op::Plus; let mut current_digit = 0; for d in op_or_digit { match d { OpOrDigit::Op(op) => { current_op = op }, OpOrDigit::Digit(n) => { match current_op { Op::Plus => { current_digit += n }, Op::Minus => { current_digit -= n }, Op::Multiply => { current_digit *= n }, } }, } } assert_eq!(current_digit, 140); // Step 3: do whatever you like with the rest of the input! // ======================================================== // This is available on the concrete type that strings // are converted into (rather than on the `Tokens` trait): let remaining = tokens.remaining(); assert_eq!(remaining, ",foobar"); } https://github.com/jsdw/yap https://www.reddit.com/r/rust/comments/r3blx1/announcing_yap_a_small_iterator_based_zero/ amdfand v1.0.6发布

新版本的AMD显卡冷却和电压守护程序。

当前版本包括:

非常简单的电压管理

有关如何启用电压管理的信息 ...

https://github.com/Eraden/amdgpud

https://www.reddit.com/r/rust/comments/r1wyu7/release_amdfand_v106/



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有