Hyperion: Minecraft game engine for custom events8 months agohttps://hyperion.rs/基于Rust构建,确保高可靠性,杜绝内存泄漏和段错误。支持垂直与水平双向扩展。经分析I/O是大规模事件的主要瓶颈,可通过横向扩展分流逻辑处理。核心游戏服务器采用纵向扩展方案。
A practical introduction to parsing in Rust8 months agohttps://jhwlr.io/intro-to-parsing/解析(Parsing)将文本转化为计算机指令,是编译器工作流程中的关键阶段。解析器将源代码转换为语法树,包括具体语法树(CST)和抽象语法树(AST)两种形式。本文引入一种受Rust启发的简易语言'simp',用于解析技术演示。词法分析(lexing)将源文本拆分为词法单元(tokens),通过匹配标记而非字符来简化解析过程。使用'Logos'库高效生成词法分析器,可处理关键字、运算符和字面量等标记。解析过程采用递归下降法,遵循语法规则将词法单元构建为语法树。解析器需处理语句(函数、变量)和表达式(算术运算、调用),同时管理运算符优先级和结合性。错误恢复与报告机制对用户友好的解析至关重要,建议每个文件支持多错误报告。性能优化包括竞技场内存分配(arena allocation)和最小化AST表示中的小对象分配。有效的解析器测试方案:采用快照测试(snapshot testing)验证AST结构和错误信息,推荐使用'insta'和'glob_test'等工具。
Linux 6.18 Expected to Land Google's Rust Binder Driver8 months agohttps://www.phoronix.com/news/Rust-Binder-For-Linux-6.18谷歌工程师用Rust语言重新实现了Android的Binder驱动,该驱动对进程间通信(IPC)至关重要Rust版Binder驱动已进入Linux 6.18队列,预计很快会被合并该驱动已在Android模拟器和Google Pixel 6 Pro上完成测试,完全支持C语言版本的所有功能此次重写解决了原Binder驱动存在的复杂性、技术债务和安全隐患问题选择Rust是因为它能有效预防引用计数错误和释放后使用等常见编程错误新驱动旨在降低复杂性并提升安全性,这对Android的沙箱隔离策略具有关键意义
Are We Chasing Language Hype over Solving Real Problems?8 months agohttps://dayvster.com/blog/are-we-chasing-language-hype-over-solving-real-problem...关于Ubuntu采用Rust重写版GNU核心工具的争论,突显了人们对重写稳定可靠软件的担忧对科技界热衷追逐新语言框架而非解决实际问题的批评,质疑此类重写的实际效益探讨软件开发中的'新奇事物综合症'——对新技术的热情往往掩盖了对其必要性的务实评估分析新编程语言的心理吸引力,包括其特性、社区生态及带来的新视角对Rust重写版GNU核心工具性能和安全主张的质疑,强调原版C语言实现数十年的优化积淀反思行业过度追捧新潮的风气,以React服务端组件、GraphQL等Web开发案例佐证呼吁聚焦真实问题而非追逐热点,主张基于技术实际价值进行审慎评估
Why Zig Feels More Practical Than Rust8 months agohttps://dayvster.com/blog/why-zig-feels-more-practical-than-rust-for-real-world-...Zig被认为比Rust更适合CLI工具开发,因其简洁性和手动内存管理更符合实际需求。Rust的所有权检查器在编译时强制保证内存安全,但增加了复杂性和认知负担。内存安全只是软件安全的其中一个维度,可预测行为、健壮性和性能同样至关重要。Zig通过分配器和defer语句实现手动内存管理,在避免Rust所有权检查器复杂性的同时保持控制力。对于小型CLI工具,Zig能提供更优的开发体验,使代码更易于编写和维护。Rust在需要编译期保证的大型多线程系统中表现卓越。Zig将开发者视为能力成熟的成年人,而Rust的严格规则对简单项目可能显得过度约束。
From Rust to Reality: The Hidden Journey of Fetch_max8 months agohttps://questdb.com/blog/rust-fetch-max-compiler-journey/本文探讨了Rust中`fetch_max`操作从高级代码到汇编语言的完整旅程。开篇以一个面试场景切入:候选人使用Rust的`fetch_max`进行原子操作,引发了作者的好奇心。作者深入研究Rust的`fetch_max`实现,揭示了编译器层层转换的过程。第一层是Rust源码本身,其简洁的语法为并发编程提供了安全保障。第二层涉及宏展开,Rust宏为各种原子类型生成对应的`fetch_max`实现。第三层深入LLVM中间表示(IR),高级原子操作在此被转换为底层中间代码。第四层剖析LLVM IR到比较交换(CAS)循环的转换过程,以x86-64架构为例。第五层展现最终的汇编代码,揭示CAS循环在硬件层面的具体实现。文章强调了现代编译器将复杂底层细节抽象化的强大能力。特别指出某些架构(如Apple Silicon的AArch64)具有原生原子最大值指令,无需CAS循环。作者最后赞叹Rust编译器优雅的抽象能力和高效处理复杂任务的智慧。
Engineering a fixed-width bit-packed integer vector in Rust8 months agohttps://lukefleed.xyz/posts/compressed-fixedvec/处理大型数据集时,内存使用往往成为瓶颈,特别是当存储的整数动态范围小于其类型容量时。位压缩技术通过将整数连续存储在紧凑的位向量中,有效减少内存浪费,被提出作为解决方案。文章探讨了在Rust中实现名为FixedVec的类向量数据结构,该结构在保持O(1)随机访问性能的同时,将整数压缩为位打包格式。FixedVec复刻了Rust标准Vec<T>的人机交互设计,支持可变访问和零拷贝切片功能。该结构使用u64字作为底层缓冲区,并预计算掩码以实现高效位提取。元素访问涉及计算比特位置、字索引和比特偏移,针对字内和跨字边界情况均进行了优化。通过利用非对齐内存访问减少跨字元素的内存操作次数,显著提升了读取性能。基准测试表明,对于较小位宽的存储,FixedVec因改进的缓存局部性而优于标准Vec<T>。迭代器采用状态保持设计,将内存访问成本分摊到多个next()调用中,优化了遍历性能。通过代理对象模式实现可变访问,为位压缩数据提供安全且符合人体工程学的修改方式。支持零拷贝视图和切片,无需数据复制即可高效处理子区域操作。文章最后讨论了未来方向,包括并发访问支持及针对偏态分布数据的变长编码方案。
STMicroelectronics official MEMS drivers, written in Rust8 months agohttps://github.com/STMicroelectronics/st-mems-rust-drivers该代码库包含用Rust编写的STMicroelectronics传感器底层平台无关驱动程序驱动程序遵循PARTNUMBER-rs命名规范(例如lsm6dsv16x-rs)包含'util'文件夹,内有库和crate等额外资源每个传感器驱动文件夹包含子模块仓库、示例和README文档驱动程序需要配置硬件总线(SPI/I2C)并提供已配置的总线实例BusOperation特性允许通用总线操作(I2C/SPI)提供基于Embassy和STM32框架的示例代码需要针对MCU的Rust编译器并满足最低MSRV要求示例主要基于STM32 NUCLEO_F401RE开发板,但可适配其他平台STMicroelectronics评估板原理图指导I2C/SPI引脚配置
Comparing Rust to Carbon8 months agohttps://lwn.net/Articles/1036912/Chandler Carruth在RustConf 2025大会上探讨了Rust与C/C++的互操作性,重点分析了两者与Carbon语言在实现路径上的差异与挑战。Carbon是一门实验性语言,旨在成为C++的替代方案,其通过优化语法和增强内存安全性来改进设计,同时保持与C++的完全兼容以实现渐进式升级。Carbon致力于实现无需更改编译器或构建系统的C++文件级迁移,不过目前该语言尚未成熟,仍有许多复杂细节待完善。Rust的互操作工具链(如bindgen、cxx crate和Crubit)对遗留C++项目支持有限,这类项目通常具有强耦合性,较新项目更难解耦重构。Carbon的设计哲学强调兼容现有C++生态,继承了独立编译、头文件等复杂机制,因此特别适合对历史悠久的C++代码库进行渐进式改造。Carbon通过引入'别名集合'(alias sets)机制处理API中的指针别名问题——这一特性是Rust所缺失的,从而无需重构就能准确表达复杂的C++接口。Carbon允许将编译器无法验证内存安全性的模式降级为警告而非错误,这种灵活性突破了Rust严格的安全检查机制。业界认为Rust与Carbon存在互补关系:Rust更适合全新项目开发,而Carbon专攻存量C++代码库的渐进式迁移。
Redox OS Development Priorities for 2025/268 months agohttps://www.redox-os.org/news/development-priorities-2025-09/Redox 2025/26年度开发重点包括稳定性提升、性能优化和兼容性改进。三大Redox变体:托管版Redox(Web服务运行时)、Redox服务器版(边缘计算与云)、Redox桌面版(日常使用)。关键开发领域:基于Redox的自举开发、标准合规、编程语言支持、性能优化、安全性、硬件支持、COSMIC/Wayland/GPU加速及无障碍访问。参与方式:捐赠、开发贡献、文档编写及申请资助项目。Redox正在招聘内核/核心开发者并持续申请开发资助。托管版Redox致力于成为安全的Web服务运行时,需改进网络协议栈、virtiofs、virglrenderer等组件。Redox服务器版专注Web服务安全托管,采用分阶段多租户容器化方案。Redox桌面版以用户体验为核心,支持COSMIC桌面环境并默认启用沙箱机制。Redox自举开发是优先事项,需提升网络性能、更新Rust编译器并优化工作流。合规性建设包括POSIX标准适配、Rust标准库测试及Linux应用移植。性能优化聚焦磁盘/网络环形缓冲区、调度器升级和硬件图形加速。安全强化将实施基于能力的保护机制和Capsicum风格方案。硬件支持涵盖固件、WiFi、USB、I2C、IOMMU及虚拟化技术。COSMIC桌面环境、Wayland协议和GPU加速是最高优先级,同时推进无障碍功能与国际本地化。
Wild: A Fast Linker Written in Rust, Aims to Outperform Mold Linker8 months agohttps://www.phoronix.com/news/Wild-LinkerWild是一款用Rust编写的新型高速链接器,旨在超越Mold等现有链接器的性能。该项目由David Lattimore主导,专注于Linux系统的快速链接,并支持迭代式开发。其核心设计目标包括增量链接功能——这是当前Mold尚未支持的特性。Wild已在Linux x86_64、ARM64/AArch64和RISC-V平台完成测试,但暂不支持非Linux系统及LTO优化。基准测试显示,Wild在特定场景下性能优于LLD,有时甚至超越Mold。采用Apache 2.0与MIT双协议许可,代码已开源发布在GitHub平台供开发者探索。
Rustroid, a Rust IDE for Android8 months agohttps://rustroid.is-a.dev/storyRustroid是一款在安卓设备上本地运行的Rust集成开发环境。开发者的旅程始于在手机上修改Minecraft模组,这让他意识到安卓平台缺乏开发者工具。在尝试Java和Android SDK后,开发者发现Rust生态并最终创造了Rustroid。该IDE通过安卓的Linux底层和Termux移植的软件包实现在安卓上运行Rust。功能包括基于LSP的代码编辑器、终端模拟器和文件管理器,使用Kotlin和Jetpack Compose构建。主要技术挑战包括实现分段文本缓冲区、语法高亮和LSP集成。该应用在Google Play以7美元价格发行,同时兼顾了可及性设计。未来计划包括支持更多编程语言,并采用Compose Multiplatform实现跨平台开发。
I built Foyer: a Rust hybrid cache that slashes S3 latency8 months agohttps://medium.com/@yingjunwu/the-case-for-hybrid-cache-for-object-stores-4b1f02...S3在现代数据系统中被广泛使用,因其无限容量、持久性和低成本而备受青睐,但存在高延迟问题。流式数据库RisingWave因实时处理需求,在使用S3时面临显著的延迟挑战。Foyer是RisingWave用Rust开发的混合缓存库,通过结合内存与磁盘缓存来降低S3延迟。Foyer架构包含低延迟访问的内存缓存、大容量的磁盘缓存,以及协调两层资源的统一管理器。Foyer支持两种模式:混合模式(内存+磁盘)和纯内存模式,并提供一致的API接口。通过Foyer的混合缓存,可减少S3请求、降低延迟与成本,同时保持扩展性和数据持久性。RisingWave将Foyer深度集成至存储层,用于管理磁盘I/O、数据预取和缓存预热。Foyer的设计使RisingWave能平衡S3的成本优势与流处理所需的低延迟。混合缓存对基于S3等对象存储的实时工作负载至关重要,使其能支撑高吞吐量应用场景。
Show HN: Cap'n-rs – Rust implementation of Cloudflare's Cap'n Web protocol8 months agohttps://github.com/currentspace/capn-rs在Rust中完整实现Cap'n Web协议支持基于能力的RPC与承诺流水线多传输协议支持(包括HTTP、WebSocket和WebTransport)生产就绪级代码,零恐慌设计及全面的错误处理包含IL表达式求值与JavaScript互操作性模块化组织为专注的crate:核心库、传输层、服务端、客户端及互操作性测试提供全面的测试套件和性能基准完全兼容JavaScript实现版本附有详细文档及编码规范采用Apache 2.0或MIT双协议授权
Level Up your Rust pattern matching8 months agohttps://blog.cuongle.dev/p/level-up-your-rust-pattern-matchingRust模式匹配基础包括枚举匹配、元组解构以及处理Option和Result类型。高级技巧涉及字面量匹配、变量匹配、通配符匹配以及元组和结构体的解构。处理数组和切片时可根据结构进行匹配,数组匹配要求元素精确对应,而切片模式可适配任意长度。进阶技术包括使用引用而非消耗值、通过匹配守卫处理复杂条件、以及用@绑定整个值。模式可用于不可反驳的上下文(let绑定、函数参数)和可反驳的上下文(match、if let)。最佳实践包括:热点路径需考虑性能、处理枚举时优先选用match而非if/else链、在单个模式中解构多个字段。使用matches!宏进行简单布尔检查比单分支match更简洁。核心要点包括掌握高级解构、引用模式、守卫、@绑定技术,以及选择恰当的模式匹配工具。
Bevy 0.17: ECS-driven game engine built in Rust8 months agohttps://bevy.org/news/bevy-0-17/Bevy 0.17版本发布,由278位贡献者提交了1311个拉取请求新实验性功能:Bevy Solari光线追踪照明系统改进的观察者/事件API,提供更灵活的文档支持推出无头Bevy UI组件和Bevy Feathers工具专用组件集Rust热补丁技术实现无需重启程序的热重载光效纹理功能支持艺术化光线强度调节Nvidia RTX显卡DLSS抗锯齿与超采样支持瓦片地图分块渲染实现高效绘制支持通过HTTP/HTTPS URL加载网络资源反射自动注册简化运行时反射配置帧时间图表助力Bevy应用性能调试UI渐变效果支持背景与边框渐变光线步进大气层渲染实现更精确光照虚拟几何体BVH剔除提升渲染性能事件/观察者系统重构为更清晰的APIBevy Feathers提供完整的工具类UI组件集无头UI组件提供标准化无样式组件光效纹理实现纹理调控光线强度系统热修补支持运行时修改系统DLSS集成带来更高画质与稳定性瓦片分块渲染是内置瓦片支持的第一步ViewportNode实现相机输出直渲UI节点光线步进大气支持太空视角精确渲染程序化太阳光斑实现真实日照效果网络资源加载支持缓存配置选项反射自动注册减少样板代码虚拟几何体BVH剔除取消集群限制帧时间图表可视化性能指标2D文本投影与背景色增强文本渲染UI渐变与分边边框色优化界面样式专用UI变换组件替代通用变换数据驱动材质重构实现动态处理实体生成标记追踪新建实体ButtonInput提供布局感知按键处理Val辅助函数简化UI值构造glTF正向语义配置确保模型方向一致渲染启动调度优化渲染器初始化组件传播简化层级状态协调children!宏支持无限子节点解耦Bevy公共API与渲染模块系统集命名规范提升代码清晰度未来计划包含BSN、UI框架升级和官方实体检查器
Pre-Emptive Multi-Tasking on Arm Cortex-M8 months agohttps://thejpster.org.uk/blog/blog-2025-09-28/文章讨论了使用Rust为Arm Cortex-M处理器编写抢占式多任务实时操作系统(RTOS)。背景:作者使用Rust编写嵌入式软件(包括安全关键系统),常需从基于C的RTOS迁移。C语言RTOS:列举了FreeRTOS、ThreadX、Zephyr等选项,强调它们在功能、许可证和安全关键评级上的差异。Rust语言RTOS:提及embassy、RTIC等用Rust编写的RTOS,指出其任务处理方式的不同。RTOS定义:解释RTOS提供实时性保证,与Windows等通用操作系统不同,能确保任务按可预测时序运行。Arm Cortex-M特性:详述Cortex-M处理器如何通过自动寄存器保存、SysTick定时器和PendSV异常等特性简化RTOS开发。用Rust编写RTOS:描述设置任务栈、利用PendSV进行上下文切换及管理任务状态的过程。示例实现:提供Rust代码示例,展示任务创建、栈管理和调度器初始化。结论:总结用约300行Rust代码即可有效利用硬件特性为Cortex-M编写RTOS,无需依赖C语言。
How to Avoid Fighting Rust Borrow Checker8 months agohttps://qouteall.fun/qouteall-blog/2025/How%20to%20Avoid%20Fighting%20Rust%20Bor...Rust的所有权系统形成树状结构,每个对象有且仅有一个父节点Rust的可变借用具有排他性,意味着可变借用期间不能共存其他借用Rust的借用具有传染性:借用子节点会间接借用其所有父节点由于保守特性,Rust的借用检查器可能拒绝部分正确的程序内存中的引用形态可分为树状结构(简单)和共享结构(复杂)共享不可变对象应使用不可变借用或引用计数(Rc/Arc)共享可变对象难以通过借用检查,需要特殊解决方案数据结构中的循环引用会使借用复杂化,需要谨慎处理非常规借用场景的解决方案包括:数据导向设计、ID/句柄、延迟变更传染性借用可能导致问题:借用对象局部会强制借用整个对象内部可变性(Cell/RefCell/Mutex)允许通过不可变引用进行修改使用ID/句柄替代引用可以解耦对象生命周期将变更操作转化为数据(命令模式)可以简化借用关系编程中的循环引用很常见,需使用弱引用(Weak)避免内存泄漏Rust可变借用的排他性对内存安全至关重要,特别是涉及内部指针时引用计数(Rc/Arc)因原子操作会产生性能开销碰撞分配器提供快速内存分配,但无法单独释放对象Unsafe Rust可以绕过借用检查,但需谨慎操作以避免未定义行为Send/Sync trait通过控制跨线程数据共享来保证线程安全Rust异步编程要求future满足Send和'static以保证线程安全临时生命周期延长和重新借用是Rust借用规则中的精妙细节Rust的权衡取舍:以开发灵活性和快速迭代为代价,换取内存安全与性能
DARPA project for automated translation from C to Rust (2024)8 months agohttps://www.darpa.mil/news/2024/memory-safety-vulnerabilitiesDARPA启动TRACTOR项目,旨在将遗留C代码自动转换为Rust语言,以消除内存安全漏洞C语言的内存安全问题源于直接内存操作和未定义行为,导致普遍存在的软件漏洞软件工程界一致认为缺陷检测工具治标不治本,主张采用内存安全语言等主动解决方案虽然内存安全语言Rust日益流行,但大规模重写遗留C代码库仍存在挑战TRACTOR计划通过软件分析与大语言模型(LLM)的创新结合,提升C到Rust的自动转换能力该计划将举办公开竞赛,测试基于LLM的转换方案,力求达到熟练Rust开发者的代码质量Rust的严格规则如同防护栏,既能保障内存安全,又让开发者专注更高层次的问题DARPA将于2024年8月26日举办提案日,供意向参与者深入了解TRACTOR项目细节
The Expression Problem and Rust8 months agohttps://purplesyringa.moe/blog/the-expression-problem-and-rust/软件设计中的表达式问题涉及在添加新数据类型和新操作之间保持可扩展性的平衡Rust的特征对象初看似乎能避免表达式问题,但实际解决方案并不简单Rust中两种常见方案分别是基于枚举(易于添加操作但难添加数据类型)和基于特征(易于添加数据类型但难添加操作)有人提出将单个特征拆分为每个操作对应多个特征的方案,但这会引发新问题,例如在数据类型定义中硬编码操作新提出的解决方案利用泛型允许函数动态指定所需操作或数据类型,从而避免硬编码列表在Rust中实现该方案需要复杂模式(如使用`Unsize`处理特征对象),对多数用例而言可能过度设计文章指出在静态类型语言(如Rust)中,有时坚持明确的设计选择比追求完美的可扩展性更为实际