< 返回版块

苦瓜小仔 发表于 2025-06-15 15:01

Tags:日报

SsoBox - 小尺寸优化的 Box

SsoBox 是一个类似 Box 的类型,它通过小尺寸优化避免了不必要的内存分配。

如果存储的值足够小,SsoBox 会将其直接存储在原本用于存储指针的空间中,从而节省了分配和释放内存的开销。

文章通过示例代码展示了其使用方法,并分析了其性能表现。虽然 SsoBox 在访问时会有一些额外开销,但在创建和销毁小尺寸对象时性能显著提升。

作者还讨论了其在 PinCoerceUnsized 等特性上的限制,并提出了未来可能的改进方向。

阅读:https://kmdreko.github.io/posts/20250614/a-simple-small-size-optimized-box/

仓库:https://github.com/kmdreko/ssobox

Reddit:https://www.reddit.com/r/rust/comments/1lbcqi5/a_simple_smallsize_optimized_box/

Xailyser - 深度数据包检测工具

Xailyser 一个基于 Rust 的深度包检测 (DPI, Deep Packet Inspection) 平台,用于分析网络协议。

DPI 是一种基于应用层的流量检测和控制技术,能够对网络数据包进行深入分析,识别和管理网络流量。

与 Wireshark 等单体工具不同, xailyser 分为三个部分:

  1. DPI 库:用于数据包捕获和协议解析的核心 Rust 板条箱,旨在作为添加您自己的自定义和其他未实现的协议的基础。
  2. 服务器:通过 libpcap 捕获数据包,分析流量并通过 WebSocket ( tungstenite‑rs ) 传输 JSON。
  3. 客户端:使用 egui 构建的跨平台桌面应用程序(Windows/Linux/macOS),可可视化实时流量图表、设备别名和数据包详细信息。

一些亮点:

  • 开箱即用,支持 12 种协议(ARP、DHCP v4/v6、DNS、Ethernet II、HTTP、ICMP、IP、TCP、UDP)
  • 实时字节/数据包计数器和图表
  • 通过 Wireshark OUI 数据库查找供应商
  • 使用 IANA 端口数据库进行服务识别
  • 用户配置文件和设备别名,方便监控
  • 完全可配置的压缩、本地化、主题等

仓库:https://github.com/xairaven/xailyser

Reddit:https://www.reddit.com/r/rust/comments/1lbo0se/introducing_xailyser_my_rustbased_deep_packet/

Untwine - 更漂亮的解析器生成器

Untwine 是一个用于解析语言的工具包,适用于编程语言、领域特定语言和用户友好型解析器。

它比 Pest 更优雅,错误信息更清晰,并有自动错误恢复功能。

Untwine 通过 parser! 宏提供自定义语法,避免手动使用解析器组合子。

它有一个教程,通过布尔表达式解析器和句子解析器的示例,展示了如何定义解析规则、处理操作符和括号、以及使用匹配语法简化代码。它还讨论了如何处理空白符、避免解析错误(如左递归和模式冲突),并提供了运行解析器的方法。

仓库:https://github.com/boxbeam

教程:https://github.com/boxbeam/untwine/blob/master/TUTORIAL.md

Reddit:https://www.reddit.com/r/rust/comments/1lbefyl/untwine_the_prettier_parser_generator_more/

Hypershell - 编写类型级 Shell 脚本的 DSL

Hypershell 是一个基于 Rust 的类型级领域特定语言(DSL),用于编写类似 shell 脚本的程序。

它通过上下文泛型编程(CGP)实现,允许用户扩展或修改语言的语法和语义。

Hypershell 的核心是 Handler 组件,通过 CGP 的依赖注入和特质实现高度模块化。

它支持多种 handlers,如 SimpleExecStreamingExec,并可通过 Pipe 组合处理器形成复杂管道。

Hypershell 的实现完全基于类型系统,利用 Rust 的零成本抽象实现高性能。

它还支持通过扩展预设(如 HypershellPreset)轻松添加新语法和功能,例如通过 ChecksumBytesToHex 实现原生哈希计算。

Hypershell 的设计目标是展示 CGP 在构建高度模块化 DSL 方面的能力,并激发开发者对 CGP 的兴趣。

阅读:https://contextgeneric.dev/blog/hypershell-release/

仓库:https://github.com/contextgeneric/hypershell

Reddit:https://www.reddit.com/r/rust/comments/1lb296n/announcing_hypershell_a_typelevel_dsl_for/

Rustle - 阻止扬声器进入休眠状态的小工具

Rustle 是一个基于 Rust 的轻量级音频流生成器,用于防止 Linux 系统中的扬声器因长时间无音频信号而进入睡眠模式。

它通过生成周期性的低频正弦波脉冲来重置扬声器的静默计时器。

仓库:https://github.com/rasmus-kirk/rustle

Reddit:https://www.reddit.com/r/rust/comments/1lb95v0/very_short_rust_program_that_keeps_your_speakers/

Shields.rs - 与 shields.io 兼容的徽章渲染器

shields.rs 是一个高性能的徽章渲染引擎,用 Rust 编写,支持 SVG 输出和字体解析。

它比 Node.js 的 badge-maker 快 10 倍以上,支持所有主要徽章样式(如 flatplastic 等),并提供链式 API 用于自定义徽章。

它可以获得更好的性能,并且允许 Rust 程序直接生成徽章 svg,而无需依赖外部服务。

而 shields.io 有一些限制,例如,如果请求的时间消耗超过 4 秒,它就无法获取正确的徽章,并且它有最短的缓存时间。这些限制在某些用例中可能会很烦人。

仓库:https://github.com/Jannchie/shields.rs

Reddit:https://www.reddit.com/r/rust/comments/1lb3wab/made_a_rust_shieldsiocompatible_badge_renderer/

--

From 日报小组 苦瓜小仔

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页