 Rust API可靠性分析与验证Conf 2021 – 2022, Online, China 姜剑峰 Rust API可靠性分析与验证 Rust China Conf 2021 – 2022, Online, China 主题内容 • Rust第三方库API可靠性现状 • 现用方法的局限性 • 基于程序合成+模糊测试的可靠性分析方法 Rust China Conf 2021 – 2022, Online, China 数组越界 • 整数溢出 • Unicode字符边界 Rust China Conf 2021 – 2022, Online, China Rust API 可靠性 现有的机制是否足够呢? • unsafe代码没有破坏内存安全性 • no memory leakage • panic free 在任何合法使用API的情况下 • 所有静态检查提供的保证都应该被满足(不应该被unsafe所破坏) 破坏) • 所有动态检查都不应该被违背(可以被安全的移除),除非panic是一种 允许的行为 Rust China Conf 2021 – 2022, Online, China 现有的可靠性分析方法及其局限性 模糊测试(afl.rs, libfuzzer):分支覆盖率;用例程序的构造 符号执行(klee, angr):路径爆炸;求解困难 静态分析(MirChecker, Rudra0 码力 | 13 页 | 1.68 MB | 1 年前3 Rust API可靠性分析与验证Conf 2021 – 2022, Online, China 姜剑峰 Rust API可靠性分析与验证 Rust China Conf 2021 – 2022, Online, China 主题内容 • Rust第三方库API可靠性现状 • 现用方法的局限性 • 基于程序合成+模糊测试的可靠性分析方法 Rust China Conf 2021 – 2022, Online, China 数组越界 • 整数溢出 • Unicode字符边界 Rust China Conf 2021 – 2022, Online, China Rust API 可靠性 现有的机制是否足够呢? • unsafe代码没有破坏内存安全性 • no memory leakage • panic free 在任何合法使用API的情况下 • 所有静态检查提供的保证都应该被满足(不应该被unsafe所破坏) 破坏) • 所有动态检查都不应该被违背(可以被安全的移除),除非panic是一种 允许的行为 Rust China Conf 2021 – 2022, Online, China 现有的可靠性分析方法及其局限性 模糊测试(afl.rs, libfuzzer):分支覆盖率;用例程序的构造 符号执行(klee, angr):路径爆炸;求解困难 静态分析(MirChecker, Rudra0 码力 | 13 页 | 1.68 MB | 1 年前3
 Await-Tree Async Rust 可观测性的灵丹妙药 -  赵梓淇Await-Tree Async Rust 可观测性的灵丹妙药 赵梓淇 Bugen Zhao Await-Tree Async Rust 可观测性的灵丹妙药 Await-Tree 的 设计原理与实现 2 回顾 Async Rust 的设计与痛点 1 Await-Tree 的 应用与真实案例 3 Await-Tree Async Rust 可观测性的灵丹妙药 Await-Tree 的 设计原理与实现 poll 驱动的状态机 • 组合嵌套为调度单元: Task • async fn 语法糖 Async Rust 观测与调试的痛点 Async Rust 回顾 • 特性: Future 灵活的可组合性 • 任意定制 Poll 的执行逻辑 (Join / Select / Timeout) • 动态的调用关系 • 痛点:观测与调试工具无法理解灵活的执行逻辑 • Backtrace 不够直观 ( 痛点:观测与调试工具无法还原 Pending Task 的执行状态 • 难以得知 Task 阻塞的位置和原因 • 难以调试 Async Stuck • ? 如何解决? Await-Tree Async Rust 可观测性的灵丹妙药 Await-Tree 的 设计原理与实现 2 回顾 Async Rust 的设计与痛点 1 Await-Tree 的 应用与真实案例 3 设计目标 Await Tree 的设计原理与实现0 码力 | 37 页 | 8.60 MB | 1 年前3 Await-Tree Async Rust 可观测性的灵丹妙药 -  赵梓淇Await-Tree Async Rust 可观测性的灵丹妙药 赵梓淇 Bugen Zhao Await-Tree Async Rust 可观测性的灵丹妙药 Await-Tree 的 设计原理与实现 2 回顾 Async Rust 的设计与痛点 1 Await-Tree 的 应用与真实案例 3 Await-Tree Async Rust 可观测性的灵丹妙药 Await-Tree 的 设计原理与实现 poll 驱动的状态机 • 组合嵌套为调度单元: Task • async fn 语法糖 Async Rust 观测与调试的痛点 Async Rust 回顾 • 特性: Future 灵活的可组合性 • 任意定制 Poll 的执行逻辑 (Join / Select / Timeout) • 动态的调用关系 • 痛点:观测与调试工具无法理解灵活的执行逻辑 • Backtrace 不够直观 ( 痛点:观测与调试工具无法还原 Pending Task 的执行状态 • 难以得知 Task 阻塞的位置和原因 • 难以调试 Async Stuck • ? 如何解决? Await-Tree Async Rust 可观测性的灵丹妙药 Await-Tree 的 设计原理与实现 2 回顾 Async Rust 的设计与痛点 1 Await-Tree 的 应用与真实案例 3 设计目标 Await Tree 的设计原理与实现0 码力 | 37 页 | 8.60 MB | 1 年前3
 王宜国 - 基于 Rust 编程语⾔构建 Amphitheatre CLI  Desktop  Server 的全平台实践经验戏单(正在测试中的环境) 1 排练(申请环境) 2 替换(切换版本) 3 演出(运⾏) 搭档 适⽤于 29+ 种 编程语⾔ 您可以在⼀个地⽅测量项⽬中所有 语⾔以及领域中所有项⽬的可靠 性、安全性和可维护性。 从语⾔到语⾔,我们为您提供有凝 聚⼒的体验和⼀致的指标集以及数 百条静态代码分析规则。 ⽆需配置环境,⽀持多种编程语⾔和框架 Kayn Sona Redis ETCD Riven Riven Event Account Project Activity Tariq Share NS 3 Docker Container Kubernetes Pod 轻松创建⽆限量的隔离集成测试环境 ⽀持微服务架构体系和多⼈协作联调测试 Kayn Sona Riven Event Account Project Activity Tariq Share Redis Cloud! Depot: Cloud-accelerated container builds up to 20x faster ✨ ⽆需配置环境,⽀持多种编程语⾔和框架 ? 轻松创建⽆限量的隔离集成测试环境 ☁ ⽀持微服务架构体系和多⼈协作联调测试 ⚡ 本地开发实时部署到运程集群 ? 交互式运⾏实例快照,可⼀键分享! ? 可插拔的⽣态应⽤市场,全⽅位提升效率 ?0 码力 | 34 页 | 10.81 MB | 1 年前3 王宜国 - 基于 Rust 编程语⾔构建 Amphitheatre CLI  Desktop  Server 的全平台实践经验戏单(正在测试中的环境) 1 排练(申请环境) 2 替换(切换版本) 3 演出(运⾏) 搭档 适⽤于 29+ 种 编程语⾔ 您可以在⼀个地⽅测量项⽬中所有 语⾔以及领域中所有项⽬的可靠 性、安全性和可维护性。 从语⾔到语⾔,我们为您提供有凝 聚⼒的体验和⼀致的指标集以及数 百条静态代码分析规则。 ⽆需配置环境,⽀持多种编程语⾔和框架 Kayn Sona Redis ETCD Riven Riven Event Account Project Activity Tariq Share NS 3 Docker Container Kubernetes Pod 轻松创建⽆限量的隔离集成测试环境 ⽀持微服务架构体系和多⼈协作联调测试 Kayn Sona Riven Event Account Project Activity Tariq Share Redis Cloud! Depot: Cloud-accelerated container builds up to 20x faster ✨ ⽆需配置环境,⽀持多种编程语⾔和框架 ? 轻松创建⽆限量的隔离集成测试环境 ☁ ⽀持微服务架构体系和多⼈协作联调测试 ⚡ 本地开发实时部署到运程集群 ? 交互式运⾏实例快照,可⼀键分享! ? 可插拔的⽣态应⽤市场,全⽅位提升效率 ?0 码力 | 34 页 | 10.81 MB | 1 年前3
 Comprehensive Rust(简体中文) 202412. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 36 日志记录 205 37 互操作性 207 37.1 与 C 的互操作性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 37.1.1 使用 Bindgen 12Building in Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 37.3 与 Java 的互操作性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 38 习题 219 X Chromium 220 39 Testing exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 45 与 C++ 的互操作性 233 45.1 绑定示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 45.20 码力 | 359 页 | 1.33 MB | 10 月前3 Comprehensive Rust(简体中文) 202412. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 36 日志记录 205 37 互操作性 207 37.1 与 C 的互操作性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 37.1.1 使用 Bindgen 12Building in Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 37.3 与 Java 的互操作性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 38 习题 219 X Chromium 220 39 Testing exercise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 45 与 C++ 的互操作性 233 45.1 绑定示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 45.20 码力 | 359 页 | 1.33 MB | 10 月前3
 刘用涛 CnosDB时序数据库的Rust实践1. CnosDB 架构与选型 特性 • 横/纵 向扩展 • 计算存储分离 • 平衡存储性能与成本 • 查询引擎支持矢量化查询 • 兼容多种时序协议 • 可观测性 • 支持云原生 • 原生支持多租户 • 租户Quota可动态配置 • 云边端协同 • 云上生态融合 整体架构 1.2 存储引擎 version_set Vnode IndexEngine “零设置” 的交叉编译 rust crate 它提供了一个环境、交叉工具链和交叉编译库,可以生成最便携的二进制文件 3.4 Rust 交叉编译 1. IO 异步化  平台兼容性  隔离阻塞 IO 异步化 2. io_uring  性能有40%提高 3.5 异步 IO 4. 反哺社区 4.1 DataFusion 在开发过程中,我们发现一些0 码力 | 26 页 | 3.28 MB | 1 年前3 刘用涛 CnosDB时序数据库的Rust实践1. CnosDB 架构与选型 特性 • 横/纵 向扩展 • 计算存储分离 • 平衡存储性能与成本 • 查询引擎支持矢量化查询 • 兼容多种时序协议 • 可观测性 • 支持云原生 • 原生支持多租户 • 租户Quota可动态配置 • 云边端协同 • 云上生态融合 整体架构 1.2 存储引擎 version_set Vnode IndexEngine “零设置” 的交叉编译 rust crate 它提供了一个环境、交叉工具链和交叉编译库,可以生成最便携的二进制文件 3.4 Rust 交叉编译 1. IO 异步化  平台兼容性  隔离阻塞 IO 异步化 2. io_uring  性能有40%提高 3.5 异步 IO 4. 反哺社区 4.1 DataFusion 在开发过程中,我们发现一些0 码力 | 26 页 | 3.28 MB | 1 年前3
 Rust 程序设计语言简体中文版........................................................................ 463 18.2. Refutability(可反驳性): 模式是否会匹配失效 ...................................................... 468 18.3. 模式语法 ................. 翻译版本。简体中文译本可以在 https://kaisery.github.io/trpl-zh-cn/ 在线 阅读。 本书也有 由 No Starch Press 出版的纸质版和电子版。 ? 想要具有互动性的学习体验吗?试试 Rust Book 的另一个版本,其中包括测验、 高亮、可视化等功能:https://rust-book.cs.brown.edu 5/600 Rust 程序设计语言 简体中文版 Rust • 更新到新版的 Rust • 打开本地安装的文档 • 直接通过 rustc 编写并运行 Hello, world! 程序 • 使用 Cargo 创建并运行新项目 是时候通过构建更实质性的程序来熟悉读写 Rust 代码了。所以在第二章我们会构建一个猜猜 看游戏程序。如果你更愿意从学习 Rust 常用的编程概念开始,请阅读第三章,接着再回到第 二章。 22/600 Rust 程序设计语言0 码力 | 600 页 | 12.99 MB | 1 年前3 Rust 程序设计语言简体中文版........................................................................ 463 18.2. Refutability(可反驳性): 模式是否会匹配失效 ...................................................... 468 18.3. 模式语法 ................. 翻译版本。简体中文译本可以在 https://kaisery.github.io/trpl-zh-cn/ 在线 阅读。 本书也有 由 No Starch Press 出版的纸质版和电子版。 ? 想要具有互动性的学习体验吗?试试 Rust Book 的另一个版本,其中包括测验、 高亮、可视化等功能:https://rust-book.cs.brown.edu 5/600 Rust 程序设计语言 简体中文版 Rust • 更新到新版的 Rust • 打开本地安装的文档 • 直接通过 rustc 编写并运行 Hello, world! 程序 • 使用 Cargo 创建并运行新项目 是时候通过构建更实质性的程序来熟悉读写 Rust 代码了。所以在第二章我们会构建一个猜猜 看游戏程序。如果你更愿意从学习 Rust 常用的编程概念开始,请阅读第三章,接着再回到第 二章。 22/600 Rust 程序设计语言0 码力 | 600 页 | 12.99 MB | 1 年前3
 Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 19.2. Refutability(可反驳性): 模式是否会匹配失效 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 19.3. 模式语法 . io/trpl- zh-cn/ 在线阅读,PDF 版本请下载 Rust 程序设计语言 简体中文版.pdf) 本书也有由 No Starch Press 出版的纸质版和电子版。 🚨 想要具有互动性的学习体验吗?试试 Rust Book 的另一个版本,其中包括测验、 高亮、可视化等功能:https://rust-book.cs.brown.edu 5/562Rust 程序设计语言 简体中文版 安装最新稳定版的 Rust • 更新到新版的 Rust • 打开本地安装的文档 • 直接通过 rustc 编写并运行 Hello, world! 程序 • 使用 Cargo 创建并运行新项目 是时候通过构建更实质性的程序来熟悉读写 Rust 代码了。所以在第二章我们会构建一个猜数 字游戏程序。如果你更愿意从学习 Rust 常用的编程概念开始,请阅读第三章,接着再回到第 二章。 21/562Rust 程序设计语言0 码力 | 562 页 | 3.23 MB | 24 天前3 Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 19.2. Refutability(可反驳性): 模式是否会匹配失效 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 19.3. 模式语法 . io/trpl- zh-cn/ 在线阅读,PDF 版本请下载 Rust 程序设计语言 简体中文版.pdf) 本书也有由 No Starch Press 出版的纸质版和电子版。 🚨 想要具有互动性的学习体验吗?试试 Rust Book 的另一个版本,其中包括测验、 高亮、可视化等功能:https://rust-book.cs.brown.edu 5/562Rust 程序设计语言 简体中文版 安装最新稳定版的 Rust • 更新到新版的 Rust • 打开本地安装的文档 • 直接通过 rustc 编写并运行 Hello, world! 程序 • 使用 Cargo 创建并运行新项目 是时候通过构建更实质性的程序来熟悉读写 Rust 代码了。所以在第二章我们会构建一个猜数 字游戏程序。如果你更愿意从学习 Rust 常用的编程概念开始,请阅读第三章,接着再回到第 二章。 21/562Rust 程序设计语言0 码力 | 562 页 | 3.23 MB | 24 天前3
 CeresDB Rust 生产实践 任春韶spawn(task2) cpu_runtime.spawn(task3) 生产实践 – Preemption 总结: Mixed workload: 碰到混合负载的时候,把 CPU 密集型任务隔离出去 会得到比较好的效果。 相关 Blog : 1. https://tokio.rs/blog/2020-04-preemption 2. https://www.influxdata.c0 码力 | 22 页 | 6.95 MB | 1 年前3 CeresDB Rust 生产实践 任春韶spawn(task2) cpu_runtime.spawn(task3) 生产实践 – Preemption 总结: Mixed workload: 碰到混合负载的时候,把 CPU 密集型任务隔离出去 会得到比较好的效果。 相关 Blog : 1. https://tokio.rs/blog/2020-04-preemption 2. https://www.influxdata.c0 码力 | 22 页 | 6.95 MB | 1 年前3
 Hello 算法 1.2.0 繁体中文 Rust 版提供的排版建議,以及他開發的開源文件主題 Material‑for‑MkDocs 。 在寫作過程中,我閱讀了許多關於資料結構與演算法的教材和文章。這些作品為本書提供了優秀的範本,確 保了本書內容的準確性與品質。在此感謝所有老師和前輩的傑出貢獻! 本書倡導手腦並用的學習方式,在這一點上我深受《動手學深度學習》的啟發。在此向各位讀者強烈推薦這 本優秀的著作。 衷心感謝我的父母,正是你們一直以來的支 的是選讀章節,內容相對困難。如果你的時間有限,可以先跳過。 ‧ 專業術語會使用黑體(紙質版和 PDF 版)或新增下劃線(網頁版),例如陣列(array)。建議記住它們, 以便閱讀文獻。 ‧ 重點內容和總結性語句會 加粗,這類文字值得特別關注。 ‧ 有特指含義的詞句會使用“引號”標註,以避免歧義。 ‧ 當涉及程式語言之間不一致的名詞時,本書均以 Python 為準,例如使用 None 來表示“空”。 演算法是什麼 1.2.1 演算法定義 演算法(algorithm)是在有限時間內解決特定問題的一組指令或操作步驟,它具有以下特性。 ‧ 問題是明確的,包含清晰的輸入和輸出定義。 ‧ 具有可行性,能夠在有限步驟、時間和記憶體空間下完成。 ‧ 各步驟都有確定的含義,在相同的輸入和執行條件下,輸出始終相同。 1.2.2 資料結構定義 資料結構(data structure)是組織和儲存資料0 码力 | 388 页 | 18.82 MB | 10 月前3 Hello 算法 1.2.0 繁体中文 Rust 版提供的排版建議,以及他開發的開源文件主題 Material‑for‑MkDocs 。 在寫作過程中,我閱讀了許多關於資料結構與演算法的教材和文章。這些作品為本書提供了優秀的範本,確 保了本書內容的準確性與品質。在此感謝所有老師和前輩的傑出貢獻! 本書倡導手腦並用的學習方式,在這一點上我深受《動手學深度學習》的啟發。在此向各位讀者強烈推薦這 本優秀的著作。 衷心感謝我的父母,正是你們一直以來的支 的是選讀章節,內容相對困難。如果你的時間有限,可以先跳過。 ‧ 專業術語會使用黑體(紙質版和 PDF 版)或新增下劃線(網頁版),例如陣列(array)。建議記住它們, 以便閱讀文獻。 ‧ 重點內容和總結性語句會 加粗,這類文字值得特別關注。 ‧ 有特指含義的詞句會使用“引號”標註,以避免歧義。 ‧ 當涉及程式語言之間不一致的名詞時,本書均以 Python 為準,例如使用 None 來表示“空”。 演算法是什麼 1.2.1 演算法定義 演算法(algorithm)是在有限時間內解決特定問題的一組指令或操作步驟,它具有以下特性。 ‧ 問題是明確的,包含清晰的輸入和輸出定義。 ‧ 具有可行性,能夠在有限步驟、時間和記憶體空間下完成。 ‧ 各步驟都有確定的含義,在相同的輸入和執行條件下,輸出始終相同。 1.2.2 資料結構定義 資料結構(data structure)是組織和儲存資料0 码力 | 388 页 | 18.82 MB | 10 月前3
 简谈 Rust 与国密 TLS - 王江桐al of Service) 攻击就是针对可获性进行的攻击,使计算机或网络无法提供正常的服务。 机密性(Confidentiality) 保证信息私密性和保密性 真实性(Authentication) 确保信息来自正确身份的对象 完整性(Integrity) 信息没有被篡改 接入控制(Access control) 避免资源滥用 可获性(Availability) 资源可以被使用 密码算法分类与应用 通信的第三套国际加密和完整性 的标准算法,为ISO/IEC 国际标 准 SM1 Introduction of SM1 Rust China Conf 2022 – 2023, Shanghai, China • SM1 是分组加密算法,实现对称加密,分组长度和密钥长度都为 128 位,对长消息进行加解密时, 若消息长度过长,需要进行分组,如果消息长度不足,则要进行填充。 • 保证数据机密性。 • 算法安全保密强度及相关软硬件实现性能与 用例,也常用于区块链或网络安全密码协议,如SSL/TLS、 VPN。 • 保证数据机密性、真实性和完整性。 • SM2 算法和 RSA 算法都是公钥加密算法,SM2 算法是一 种更先进安全的算法,其性能与安全性优于RSA,在我们国 家商用密码体系中被用来替换 RSA 算法。 • 椭圆曲线可使用更少的运算位数来达成与RSA相等的 安全性 • 椭圆曲线与RSA的安全性都依赖于离散对数问题的复 杂程度 • 离散对数问题:已知数A,B,且A0 码力 | 44 页 | 3.70 MB | 1 年前3 简谈 Rust 与国密 TLS - 王江桐al of Service) 攻击就是针对可获性进行的攻击,使计算机或网络无法提供正常的服务。 机密性(Confidentiality) 保证信息私密性和保密性 真实性(Authentication) 确保信息来自正确身份的对象 完整性(Integrity) 信息没有被篡改 接入控制(Access control) 避免资源滥用 可获性(Availability) 资源可以被使用 密码算法分类与应用 通信的第三套国际加密和完整性 的标准算法,为ISO/IEC 国际标 准 SM1 Introduction of SM1 Rust China Conf 2022 – 2023, Shanghai, China • SM1 是分组加密算法,实现对称加密,分组长度和密钥长度都为 128 位,对长消息进行加解密时, 若消息长度过长,需要进行分组,如果消息长度不足,则要进行填充。 • 保证数据机密性。 • 算法安全保密强度及相关软硬件实现性能与 用例,也常用于区块链或网络安全密码协议,如SSL/TLS、 VPN。 • 保证数据机密性、真实性和完整性。 • SM2 算法和 RSA 算法都是公钥加密算法,SM2 算法是一 种更先进安全的算法,其性能与安全性优于RSA,在我们国 家商用密码体系中被用来替换 RSA 算法。 • 椭圆曲线可使用更少的运算位数来达成与RSA相等的 安全性 • 椭圆曲线与RSA的安全性都依赖于离散对数问题的复 杂程度 • 离散对数问题:已知数A,B,且A0 码力 | 44 页 | 3.70 MB | 1 年前3
共 39 条
- 1
- 2
- 3
- 4













