iocraft - 一个用于在终端或日志中创建漂亮的文本输出和界面的 Rust 库
iocraft 是一个用于在终端或日志中创建漂亮的文本输出和界面的 Rust 库。它提供了一个声明式的 API,可以轻松构建复杂的布局和交互元素。主要特性包括:
使用简洁可读的语法定义 UI。 使用 flexbox 布局组织 UI 元素。 将有色且样式化的 UI 输出到终端或任何支持 ASCII 的地方。 创建动画或交互元素,并添加事件处理和钩子。 轻松构建全屏终端应用程序。 通过引用传递属性和上下文,避免不必要的克隆。
iocraft 借鉴了 React 的概念,但针对文本输出,并使用 Rust 语言实现。使用 element!
宏声明 UI 元素,库提供了一些内置组件如 Box、Text 和 TextInput,也可以使用 #[component]
宏定义自定义组件。该库受到 Dioxus 和 Ink 的启发,并采用 Apache 2.0 或 MIT 许可证授权。
https://github.com/ccbrown/iocraft
使用Rust和Bevy开发roguelike游戏
这篇博客文章介绍了如何使用Rust编程语言和Bevy游戏引擎开发传统的roguelike游戏的第一步,即绘制玩家角色。主要内容包括:
解释了传统roguelike游戏的特点和吸引力。
介绍了Bevy的基本概念,如App、实体(Entity)、组件(Component)和系统(System)。
创建了一个新的Rust项目,并在其中添加了Bevy依赖库。
定义了"生物"(Creature)组件包,用于表示玩家和其他生物。
编写了生成玩家角色的system函数。
添加了摄像机系统,让玩家角色可见。
引入了精灵表(SpriteSheet)和图集(TextureAtlasLayout)的概念,用于管理游戏中所有生物的精灵图像。
将精灵表相关组件整合到"生物"包中。
https://oneirical.github.io/1-drawing-the-player/
skiplist-rust - Rust的跳表实现
这个项目提供了一个并发、无锁的跳表实现,可用于高效的键值存储和检索。主要特性包括:
无锁并发操作 高效的插入和查找 支持迭代遍历 可配置最大高度和分支因子 使用安全的Rust编写,只有少量unsafe代码
使用方式是在Cargo.toml中添加依赖,然后在Rust代码中使用SkipList相关API进行键值插入、检查存在性、遍历等操作。
该项目的API包括SkipList的创建、插入键值、检查键是否存在、获取迭代器等;SkipListIterator则提供了创建、检查有效性、获取当前键值、前移后移、查找目标键值等操作。
性能方面,该实现旨在提供与LevelDB的SkipList相似的性能特征,使用原子操作实现并发访问,并采用类似的概率平衡策略。
https://github.com/monadbobo/skiplist-rust
谷歌消除安卓系统内存安全漏洞的努力和进展
主要内容包括:
内存安全漏洞一直是软件安全的主要威胁。谷歌认为,通过安全编码(Safe Coding)的方式,即过渡到使用内存安全语言,可以从根源上消除这一类漏洞,并构建高保证的软件。
模拟显示,随着时间推移,即使代码库中存在内存不安全的代码,只要新代码使用内存安全语言,漏洞数量也会显著下降。这是因为漏洞会随时间呈现指数级衰减。
在实践中,自2019年起,安卓团队开始优先使用内存安全语言进行新的开发。尽管大部分代码仍然是不安全的,但内存安全漏洞的总数和比例都持续下降。2019年内存安全漏洞占76%,而2024年只占24%。
消除内存安全漏洞的策略经历了四个阶段:1)被动修补;2)主动缓解;3)主动发现;4)高保证预防(安全编码)。安全编码不仅改变了技术,更改变了安全方法,可以大规模、持续、高效地提供保证。
采用安全编码可以打破无休止的攻防对抗循环,使高保证内存安全成为常规,并提高开发人员生产力。
https://security.googleblog.com/2024/09/eliminating-memory-safety-vulnerabilities-Android.html?m=1
--
From 日报小组 Mike
社区学习交流平台订阅:
Rustcc论坛: 支持rss 微信公众号:Rust语言中文社区