Kartoffels - Rust开发的tui游戏
Kartoffels是一个有趣的游戏,玩家需要使用Rust语言为一个马铃薯实现固件。作者最近将前端从JavaScript迁移到了基于Rust的TUI,集成了Ratatui和russh库,效果相当不错。目前大部分功能都在Rust端实现,这使得测试和通过ssh远程访问成为可能。在下一个版本中,作者计划关注单人模式,引入"挑战"标签,让玩家在多人对战区之外,解决诸如导航迷宫等特定问题。这无疑会让游戏更加有趣。
https://old.reddit.com/r/rust/comments/1ff7je9/kartoffels_a_robot_combat_arena_v04_released_feat/
filtra公司发布的2024年8月锈语言工作报告
filtra公司发布2024年8月锈语言工作报告。报告显示,8月份锈语言工作机会总数保持在801个,与7月持平。但使用锈语言的公司数量增加了2家,达到113家。报告列出了使用锈语言最多的前十大公司,其中亚马逊以184个职位排名第一,微软位居第二。科技公司、加密货币公司和生产力软件公司是使用锈语言最多的行业。此外,报告还分析了不同级别锈语言工程师的工作机会数量。总的来说,这份报告全面展示了目前锈语言职位市场的现状。
steady_state - 又一个actor框架
该框架基于actor模型实现异步多线程编程,无需使用trait。actor被监督并在panic时自动重启。有界通道支持批量处理和服务级别协议管理。关闭时可以通过级联机制干净地关闭所有actor。actor可以被分配专用线程或共享线程。内置了遥测功能,可以通过浏览器访问9100端口查看,并为Prometheus提供了指标供抓取。该框架在Crates.io上已经下载量超过10,000次,是一个值得关注的异步并发编程框架。
steady_state是一个用于在Linux系统上构建长期运行、低延迟的基于actor模型的服务框架。它提供了可视化的遥测功能,用于监视actor之间的数据流。steady_state使用了类似于Erlang的监督者模式来防止panic,并使用非阻塞的异步环形缓冲区进行actor之间的通信。这个crate最新版本是0.0.21,遵循MIT许可协议。它托管在GitHub上,总计有10,181次下载,最近90天的下载次数在统计图表中有显示。使用cargo add steady_state或在Cargo.toml中添加steady_state = "0.0.21"即可将其集成到您的Rust项目中。
https://crates.io/crates/steady_state
关于Rust编译的WebAssembly(WASM)模块中"资源"(resources)的细节问题
作者声明在一个导出的Rust接口中定义了一个名为state的资源,并希望能够从WASM宿主环境中创建这个资源的实例。
作者注意到wit-bindgen不仅生成了导出的构造函数mypkg/myinterface#[constructor]state,还生成了导入的[export]mypkg/myinterface#[resource-new]state和[export]mypkg/myinterface#[resource-drop]state函数。作者理解这些函数属于所谓的"规范内置"(canonical built-ins),但不太清楚它们的用途。
作者发现[resource-new]state函数似乎被编译后的构造函数调用,而在宿主环境中,作者目前只是简单地实现了一个返回参数的函数,该参数似乎是一个"类型索引"(type index)。作者想知道这样做是否正确,以及采用不同实现是否会有收获。
总的来说,这个帖子探讨了WASM模块中资源的细节,特别是wit-bindgen生成的相关函数的用途,以及在宿主环境中处理这些函数的正确方式。
https://old.reddit.com/r/rust/comments/1ffcilm/understanding_wasm_resources_and_mapping_to_low/
kartoffel - 机器人入门程序包
这个仓库包含了一个名为"kartoffel"的机器人入门程序包。用户可以克隆这个仓库,运行./build命令,然后将生成的./kartoffel文件上传到游戏中(或者通过ssh kartoffels.pwy.io访问)。这个程序包提供了一个机器人框架,主要用于游戏教程,但是在实际战场环境下可能无法生存太久。
创建一个"kartoffel"时,用户实现的是一个固件,因此无法访问标准库(如std::fs、println!()等)。不过,可以通过serial_send()进行通信,并且可以使用alloc crate提供的vec或format!()等高级功能。该机器人拥有64kHz的CPU和128kib的RAM。
该作品采用CC0 1.0通用许可,作者已将其权利在全球范围内完全开放,允许他人任意复制、修改、分发和表演该作品,包括用于商业目的。
https://github.com/patryk27/kartoffel
参加RustConf会议的心得体会
Rust全球大会9月10~13号正在加拿大蒙特利尔召开,作者分享了一些见闻。
以下是对博文内容的中文总结:
作者参加了Rust会议,分享了当天所听的一些精彩演讲。
-
cargo-mutants工具能对测试代码进行随机更改,帮助检查代码健壮性。
-
两个演讲分别介绍了用Rust构建MongoDB驱动和实时公交车地图应用的经验,深入探讨了数据库和前端应用的连接。
-
rustfmt代码格式化器背后的工作原理很复杂,需要生成中间表示并完全匹配编译器的代码解析。
-
rkyv是一个零拷贝反序列化框架,在现场发布了2.5年来的新版本。它能高效地将数据序列化为字节slice,但需处理指针、字节序等边缘情况。
-
演讲者赞赏了Rust社区的才华和热情,即使有时会感到"行业术语"让人有点迷惑。
总的来说,作者对Rust会议上展示的创新技术和项目有了新的认识和体会。
https://oneirical.github.io/rustconf1/
--
From 日报小组 Mike
社区学习交流平台订阅:
评论区
写评论还没有评论