此博客即将改版,可注册。这是一个测试
此博客即将改版,可注册。这是一个测试
Continue readingRustHub.org 是一个可信程度较高的、专用收集基于 Rust 技术生态开发的创意模型或者成型
Continue reading此博客即将改版,可注册。这是一个测试
Continue readingRustHub.org 是一个可信程度较高的、专用收集基于 Rust 技术生态开发的创意模型或者成型作品的站点。需要参考获取灵感的用户,可以花费最少的时间成本;而加上功能图,甚至文档等,发布者也可以宣传自己的创意和作品。
Continue reading`Yew` 的服务器端渲染(SSR,Server-side Rendering)方案还处于实验性质,但技术概念非常棒:通过极少的工作,即可构建一个与客户端无关的 SSR 应用。虽然有些功能还未完善,但已经初具端倪,可以使用于静态网站的构建了。启用 `Yew` 的 SSR 方案,需要使用开发版本,目前最新版本(0.19.3)不支持。
Continue reading自从在 reddit 出现了 2 个反映 Rust 社区对异步运行时 `async-std` 不够重视,甚至多个知名库考虑移除对 `async-std` 的支持的帖子后,很多 `async-std` 的使用着有点发懵。最近,`async-std` 的创建者 `yoshuawuyts` 终于对此做了回复。虽然并不能说 `async-std` 的前景依然光明,但是推荐一读。
Continue reading2021 年 10 月 22 日,Rust 1.56.0 新版本发布,同时发布了 Rust 2021 新版次。本次更新主要集中在:prelude 的补录、Cargo 新的默认解析特性 resolver、数组迭代器、闭包捕获的改进、panic 宏的一致性改进、预留语法、warnings -> errors,宏中的 Or 模式等。实际上,改变并不算大,已有项目的迁移到 2021 版次,也很顺利通畅。
Continue reading目前的 Rust 生态中,WebAssembly 应用构建一直是官方推广的重点,前景十分广阔。最近几天,笔者使用 Rust WebAssembly 框架 yew 构建了一个基础的博客应用。在符合团队合作开发的模式下,大约进行了 50% 左右的优化,以及 rustwasm 团队 和 yew 官方推荐的极致压缩(包括 panic 剔除)。本文,即是对此进行一个简略的初始体验报告,后续或许有更详细的应用体验总结。
Continue readingRust 官方周报 399 期,关于 WebAssembly、游戏开发方面的文章较为侧重。并且,使用 rg3d 游戏引擎的教程附有源码,其开发的角色扮演类游戏很精致、有趣。
Continue reading《Rust 和 Wasm 的融合,使用 yew 构建 WebAssembly 标准的 web 前端》系列文章第五部分:在 yew 开发的 wasm 前端应用中,与外部服务器进行数据交互时,直接使用 web-sys 库,比较方便灵活,并且较易拓展,已经可以满足开发。但在 yew 中,还有更易用的封装 FetchService,FetchService 封装了 web-sys 和 stdweb 两个库。对于请求的构建、响应的结果,也都做了一致封装,使用起来更为精简。如果你的 yew 项目中,除了 web-sys 之外,也希望使用 stdweb,那么 FetchService 则更为适合。
Continue readingRust 官方周报 398 期,仍然是关于 WebAssembly 方面的文章较为侧重。
Continue readingRust 官方周报 397 期,关于 WebAssembly 的文章较有新意:Rust 核心更新、Rust 社区更新、官方资讯、项目/工具更新、观测/思考文章、实际演练文章、周最佳 crate、Rust 近期活动、Rust 工作招聘、Rust 开发者引语等。
Continue readingRust 官方周报 396 期:Rust 核心更新、Rust 社区更新、官方资讯、项目/工具更新、观测/思考文章、实际演练文章、周最佳 crate、Rust 近期活动、Rust 工作招聘、Rust 开发者引语。本期文章中,Rust 在 WebAssembly 开发方面文章、工具较多,游戏开发等方面也有所侧重。
Continue readingRust 官方周报 395 期:Rust 核心更新、Rust 社区更新、官方资讯、项目/工具更新、观测/思考文章、实际演练文章、周最佳 crate、Rust 近期活动、Rust 工作招聘、Rust 开发者引语。本期文章中,Rust 做 WebAssembly、嵌入式、移动开发(Flutter、Fuchsia、iOS)等方面有所侧重。另外,还包含开源与心理健康方面的内容。
Continue readingRust 1.53.0 稳定版已经为发布做好了准备,预定的发布日程为本周四(2021 年 6 月 17 日)。关键新特性包括:使用 unicode 字符作为标识符、`| (OR)` 现在其可以用在模式之内,增加 `:pat_param` 等。
Continue reading《使用 tide、handlebars、rhai、graphql 开发 Rust web 前端》第三部分:在 handlebars 模板中,使用 rhai 嵌入式脚本语言,作为脚本助手;另外,还有静态/资源文件、环境变量等方面的使用阐述。
Continue reading《使用 tide、handlebars、rhai、graphql 开发 Rust web 前端》第二部分:使用 surf、graphql_client 发起 GraphQL 请求,并解析 GraphQL 响应应答数据,渲染到 handlebars 模板中。
Continue reading《使用 tide、handlebars、rhai、graphql 开发 Rust web 前端》第一部分:HTTP 服务器端框架、模板引擎库,GraphQL 客户端等 crate 的选择,以及开发环境的搭建和测试。
Continue readingRust 官方周报 394 期:Rust 语言更新、官方资讯、项目/工具更新、观测/思考、实际演练、周最佳 crate、近期活动、Rust 工作招聘,以及开发者引语等。第 394 期的技术文章中,wasm 方面的文章增长明显,WebAssembly 开发热度大增。另外,区块链、游戏也有发力。
Continue readingRust web 前端库/框架在所有前端库/框架的位置、Rust web 前端库/框架评测概览、yew 框架和其它流行前端框架的评测比较。
Continue reading《Rust 和 Wasm 的融合,使用 yew 构建 WebAssembly 标准的 web 前端》系列文章第四部分:在 yew 开发的 wasm 前端应用中,与后端进行数据交互,获取 GraphQL 数据并解析。
Continue reading《Rust 和 Wasm 的融合,使用 yew 构建 WebAssembly 标准的 web 前端》系列文章第三部分:引入 css 样式表、图像等资源文件到 trunk 构建路径;以及精简 html! 宏中代码,提取为函数的代码重构等。
Continue reading《Rust 和 Wasm 的融合,使用 yew 构建 WebAssembly 标准的 web 前端》系列文章第二部分:实现目标、crate 引入、IDE 配置、yew 组件开发、yew 路由定义,以及应用入口组件等。
Continue reading《Rust 和 Wasm 的融合,使用 yew 构建 WebAssembly 标准的 web 前端》系列文章第一部分:起步及 crate 选择。介绍 Rust WebAssmbly 框架库的选择、工程的创建、yew 开发环境配置,以及编译和运行等。
Continue readingRust 官方周报 393 期:Rust 语言更新、官方资讯、项目/工具更新、观测/思考、实际演练、周最佳 crate、近期活动、Rust 工作招聘,以及开发者引语等。第 393 期的技术文章中,wasm 方面的文章增长明显,WebAssembly 开发热度大增。
Continue readingRust 官方周报 392 期:Rust 核心更新、Rust 社区更新、官方资讯、项目/工具更新、观测/思考文章、实际演练文章、周最佳 crate、Rust 近期活动、Rust 工作招聘、Rust 开发者引语,尤其是本期具有论文和研究探讨等。
Continue readingRust 生态中,关于通过 url 网址,对站点进行拍照,生成网页快照;以及在网页快照上生成时间戳,或者添加水印的实践。
Continue readingRust 官方周报 391 期:Rust 核心更新、Rust 社区更新、官方资讯、项目/工具更新、观测/思考文章、实际演练文章、周最佳 crate、Rust 近期活动、Rust 工作招聘、Rust 开发者引语,尤其是本期具有论文和研究探讨等。第 391 期的技术文章中,中文、德文、西班牙文,以及葡萄牙文等多语言文章都有增加。Rust 呈现出在不同国家,不同语种,资料迅速丰富的趋势。
Continue reading在 2015 年发布版本 1.0 以来,2021 年 5 月 15 日,是 Rust 的 6 岁生日。2015 年以来,世界发生了很多变化,Rust 同样如此。本文从 2020 年 Rust 改进和补录,生产环境中的 Rust 使用状况,未来的工作计划等方面,综合回顾了 Rust 的 6 年历程。同时,也对 Rust 2021 版次做了展望。
Continue reading因 Rust 语言具有较少的内存管理问题、高性能、跨平台支持、跨平台支持,以及丰富的生态系统,在嵌入式开发方面,Rust 非常具有优势。程序员进行低层次控制时,语言自身和编译器确保了内存安全。此外,Rust 的可移植性和互操作性,更符合嵌入式系统开发的重要需求,使得 Rust 语言更值得嵌入式系统开发者选择。
Continue readingRust 官方周报 390 期:Rust 核心更新、Rust 社区更新、官方资讯、项目/工具更新、观测/思考文章、实际演练文章、周最佳 crate、Rust 近期活动、Rust 工作招聘、Rust 开发者引语,尤其是本期具有论文和研究探讨等。第 390 期的技术文章中,技术演练丰富。并且,本期在 Rust 游戏开发和区块链上,进行了发力。
Continue readingRust 和 Android 集成开发的官方设计,包括:无需嵌套的(nested)构建系统、用过程宏(proc_macro)而无需构建脚本(build.rs)、以 crate 形式生成源码,以及动态链接 crate 等。
Continue readingRust 团队新发布的 Rust 1.52.1,解决了一个增量编译中的 bug,这个 bug 在 1.52.0 中,会导致一个编译器错误。建议所有用户升级!本篇文章的目的是: 解释错误的具体表征; 在高层次上,解释检查(check)的作用; 解释 Rust 1.52.0 中,检查的具体展现; 在你的项目上,如果出现不稳定(unstable)的编译器指纹,告诉你如何做; 关于此问题,描述 Rust 团队的解决计划。
Continue reading20 世纪 20 年代,时代选择的语言可能是(也许已经是)Rust。这是一门罕见的,能让软件程序员和硬件程序员都满意的语言。目前,很多伟大的软件,都在用 Rust 进行重写。这些事情是潮流,并非 Rust 在炒作。
Continue reading2021 年 5 月 6 日,Rust 发布团队官宣 Rust 发布 1.52.0 稳定版。其最重要的变化不是语法或标准库,而是对 Clippy 工具支持的增强。执行 cargo 时,用户将获得预期的行为,不再因为运行命令的顺序而受到影响。
Continue readingRust 官方周报 389 期:Rust 核心更新、Rust 社区更新、官方资讯、项目/工具更新、观测/思考文章、实际演练文章、周最佳 crate、Rust 近期活动、Rust 工作招聘、Rust 开发者引语,尤其是本期具有论文和研究探讨等。第 389 期的技术文章中,技术演练丰富;技术基础较多,适合新手学习,熟练者温故。另外,本周最佳 crate 对可以给开发中的信息输出提供很大方便。
Continue reading基于 actix-web + async-graphql + rbatis + postgresql / mysql 构建 Rust 异步 GraphQL 服务的变更服务教程,包括依赖项的更新和配置。以及 async-graphql 简单对象类型、复杂对象类型、输入对象类型的迭代和开发。新用户的插入,包括根据用户唯一性标志属性验证。
Continue reading2021 年 5 月 4 日,Rust 内部论坛,PRust 发布团队宣布:Rust 1.52.0 预发布版本已经为测试做好准备,预定的发布日程为 本周四(2021 年 5 月 6 日)。本文描述其安装方法,以及语法、编译、库、已稳定 APIs 等关键新特性。
Continue readingRust 语言和生态的成功,是许许多多的微小奇迹,汇聚而成的巨大奇迹。作者 Brian Anderson 回忆了 Rust 发布前的发展历程,致敬了使得 Rust 获得伟大成功,但个人却在 Rust 生态中不知名的 Dave Herman。他是 Mozilla 中代表 Rust 的最高层,对 Rust 的成功负有最大贡献的人之一,几乎完全没有得到承认,也没有试图要求过任何有关 Rust 的荣誉。
Continue reading2021 年 4 月 29 日,Facebook宣布以白金会员(Platinum Member,最高级别)的身份加入 Rust 基金会,将会与其它基金会成员共同负责 Rust 开源生态,以及推动 Rust 社区的运作和发展。加入 Rust 基金会,加强了 Facebook 支持开源技术的力度,以及对开发者社区可持续发展的承诺。
Continue reading2021 年 4 月 29 日,Rustup 工作组发布 Rustup 1.24.1:支持工具链定义文件 rust-toolchain.toml,更好地支持低内存(low-memory)系统,更好地支持 Windows 添加/删除程序,以及其它更新等。在 rustup 1.24.0 版本发布后不久,我们收到了一份回归报告。言其在升级到 rustup 1.24.0 之后,用户无法运行 rustfmt 和 cargo fmt。因此,我们将版本恢复为 1.23.1。1.24.0 和 1.24.1 之间,唯一实质性的变化是纠正此次回归。
Continue readingRust 官方周报 388 期:Rust 核心更新、Rust 社区更新、官方资讯、项目/工具更新、观测/思考文章、实际演练文章、周最佳 crate、Rust 近期活动、Rust 工作招聘、Rust 开发者引语,尤其是本期具有论文和研究探讨等。第 388 期的技术文章中,技术深入分析较多,适合精读类不少。另外,本周最佳 crate 对代码调试很有用。
Continue readingRust 官方周报 387 期:Rust 核心更新、Rust 社区更新、官方资讯、项目/工具更新、观测/思考文章、实际演练文章、周最佳 crate、Rust 近期活动、Rust 工作招聘,以及 Rust 开发者引语等。第 387 期的技术文章中,技术深入分析较多,适合精读类不少。
Continue reading基于 tide + async-graphql + mongodb 构建 Rust 异步 GraphQL 服务的变更服务教程,包括依赖项的更新和配置。以及 async-graphql 简单对象类型、复杂对象类型、输入对象类型的迭代和开发。新用户的插入,包括根据用户唯一性标志属性验证。
Continue reading2021 年 4 月 27 日,Rustup 工作组发布 Rustup 1.24.0:支持工具链定义文件 rust-toolchain.toml,更好地支持低内存(low-memory)系统,更好地支持 Windows 添加/删除程序,以及其它更新等。但莫要急着升级,Rustup 1.24.0 版的 `rustfmt` 和 `cargo fmt` 有问题。
Continue reading在实时音频中,截止时间至关重要。您的代码仅有几毫秒的时间来填充一个缓冲区,其中的样本将被发送到 DAC。但是,这几毫秒,也可能要与许多其他音频处理程序共享。如果您的代码花费太长时间来生成这些样本,那么就没有第二次机会;音频根本不会被播放,用户会听到一个令人讨厌的小故障,或者被口吃的声音代替。 为了防止这种情况,实时音频代码必须避免执行任何操作,这些操作可能会在无限或不可预测的时间内阻塞音频线程。如何在受上述限制的情况下,以可管理和高效的方式完成这一任务?Basedrop 是我试图为这个问题提供的一个解决方案。
Continue readingRust 编译器团队对成员 Aaron Hill 的祝贺,Aaron Hill 已成为 Rust 编译器团队的正式成员。Congrats to compiler team member Aaron Hill。
Continue readingJacob Hoffman-Andrews 加入 Rustdoc 团队,Jacob Hoffman-Andrews joins the Rustdoc team
Continue reading因 C++ 的特性,使得机器人平台面临着潜在的巨大危害。C++ 的测试、体系结构,以及内存管理,均存在使用依赖性上的不一致问题;然而,这些依赖关系可能会捕获和操纵基本的底层资源。这意味着在不经意间,就会非常容易地构建导致关键问题的 bug,并且你不会意识到……Rust 具有和 C++ 同等的“与金属融合(close to the metal)”的特性。这使得 Rust 成为一种高效、极其安全的语言。Rust 还允许底层访问,这非常适合资源约束和代码安全至关重要的机器人世界。使用 Rust 构建机器人平台的最大好处是内存安全和管理。在 Rust 中,内存管理的方法是使用堆栈跟踪程序,然后使用指针引用来指向包含较大数据结构的堆。对于机器人平台来说,Rust 是一个明智的选择,但是向用 Rust 编写的机器人平台过渡,则需要时间。
Continue reading2021 年 2 月 8 日,由 5 家公司:华为、亚马逊、谷歌、微软,以及 Mozilla 作为创始成员,成立了 Rust 基金会。Rust 基金会的部分任务既是管理和支持 Rust 开发者(Rustaceans)所依赖的服务,包括 rust-lang.org、crates.io,以及 docs.rs。以前,这些服务的管理和支持由 Mozilla 负责,Rust 基金会成立后,Rust 社区赋权 Rust 基金会代表其管理上述服务。
Continue readingRust 官方周报 386 期:Rust 核心更新、Rust 社区更新、官方资讯、项目/工具更新、观测/思考文章、实际演练文章、周最佳 crate、Rust 近期活动、Rust 工作招聘,以及 Rust 开发者引语等。第 386 期的技术文章中,用 Rust 开发游戏引擎实践不少;另外,对于开发工具和 IDE 方面,介绍也颇多。
Continue readingRust 编译器(Compiler)团队 4 月份计划,关于编译器方向周期(Steering Cycle)的会议安排。
Continue reading前 2 篇文章中,我们初始化搭建了工程结构,选择了必须的 crate,并成功构建了 GraphQL 查询服务:从 MySql 中获取了数据,并通过 GraphQL 查询,输出 json 数据。本篇文章,本应当进行 GraphQL 变更(mutation)服务的开发。但是,虽然代码成功运行,却存在一些问题,如:对于 MySql 数据库的连接信息,应当采取配置文件存储;通用公用的代码,应当组织和抽象;诸如此类以便于后续扩展,生产部署等问题。所以,本篇文章中我们暂不进行变更的开发,而是进行第一次简单的重构。以免后续代码扩大,重构工作量繁重。
Continue reading在倡议书《为 Async Rust 构建共享的愿景文档—— Rust 社区的讲“故事”,可获奖》之后,Async Rust 的愿景文档进程,已经进展到了头脑风暴阶段。这次头脑风暴会持续六周,直到四月底。前两周(直到 2021-04-02),只收集“现状”故事。之后,将收受“现状”和“光明未来”的故事,直到头脑风暴期结束。最后,为了结束头脑风暴阶段,将评选出“最幽默的故事”或“必须支持的贡献者”等奖项,以及获奖者。所以现在还可以提交“现状故事”。
Continue reading本文中,我们将开启基于 actix-web 和 async-graphql 构建异步 Rust GraphQL 服务的历程。本章主要是 GraphQL 查询服务,包括如下内容: 1、构建 GraphQL Schema; 2、整合 actix-web 和 async-graphql; 3、验证 query 服务; 4、连接 mysql; 5、提供 query 服务。
Continue reading本系列博客中,我们基于 actix-web + async-graphql + rbatis + postgresql / mysql 构建异步 Rust GraphQL 服务。 本文为起步教程,主要包括: 工程的创建、工具类 crate 安装、添加依赖 crate,以及依赖项支持特性(features)的设定。
Continue readingRust 的下一代版本,Rust 2021,将定于今年(2021)晚些时候发布。包括:`prelude` 的变更、新的闭包捕获规则、统一 std 和 core 中的 panic,以及将一些 lint 从警告升级为错误。目标里程碑的时间表: 4 月 1 日:所有相关 RFC 合并,或处于良好状态(即,所有达成的重大决策和合并,将在接下来的几周内进行)。 5 月 1 日:Rust 2021 中包含的所有特性,将包含在 nightly 版本中。 6 月 1 日:所有 lints 将包含在 nightly 版本中。 9 月 1 日:Rust 2021 在 nightly 版本中稳定。 10 月 21 日:Rust 2021 版本稳定。
Continue readingRust 已经被广泛用于生产环境,从个人、小团队,到世界上最大和最具影响力的公司,都已经将 Rust 用于生产环境。每天服务数十亿笔交易,无论是可靠性、生产率、性能优势,或是安全性,Rust 都是当今的首选语言。
Continue reading构建最精简的 Docker 映像,以用来部署 Rust,将会带来很多益处:不仅有利于安全(减少攻击面),而且还可以缩短部署时间、降低成本(减少带宽和存储),并降低依赖项冲突的风险。
Continue readingRust 官方周报 385期:Rust 核心更新、Rust 社区更新、官方资讯、项目/工具更新、观测/思考文章、实际演练文章、周最佳 crate、Rust 近期活动、Rust 工作招聘,以及 Rust 开发者引语等。第 385 期的技术文章偏重于实践,以及开发协同。
Continue reading使用 `Rust` 生态中的数据采集相关 `crate` 进行数据采集的实践:异步运行时 `async-std`,HTTP 客户端库 `reqwest`,数据采集库 `scraper`,以及控制台输出文字颜色标记库 `colored`。
Continue readingC/C++ 语言中的内存安全漏洞,构成了 Android 平台上高达 70% 的高严重性安全漏洞。google 的想法是切换到 Rust 这样的内存安全语言,以做到首先防止 bug 发生。 谷歌指出:“Rust 使用编译时检查,来强制执行对象的生命周期/所有权。以及通过运行时检查,来确保内存访问有效,从而提供了内存安全保证。”
Continue reading2021 年 4 月 7 日,zdnet 发布文章:Android 平台基础支持转向 Rust。2021 年 4 月 6 日,谷歌宣布,Rust 可以在 Android 开源项目内部使用。虽然 Android 平台上的应用程序可以用 java 和 Kotlin 等受监管的/托管类语言编写,但这些语言没有用于构建 Android 操作系统的低级语言(如 C/C++)的“控制和可预测性”。
Continue reading对于 Android 来说,如果代码是用 C/C++ 编写的,并且在解析不可信的输入,那么它应该包含在一个严格受约束和特殊的沙箱中。但沙盒的开销昂贵:需要引入新进程,消耗额外的开销,并且由于 IPC 和额外的内存使用,而引入了延迟机制。沙箱技术,并不能消除代码中的漏洞,它的效率,会随着高 bug 密度而降低,从而允许攻击者将多个漏洞链接在一起。像 Rust 这样的内存安全语言,通过两种方式帮助 Android 克服这些限制:降低了代码中 bug 的密度,从而提高了当前沙盒的有效性;减少了 Android 的沙箱技术需求,允许引入更安全、资源更轻的新功能。
Continue readingRustyHermit,基于 Rust 实现的下一代容器 Unikernel,和 Linux 主机系统相比,性能表现差别极小。由于映像直接包含 OS 内核,unikernel 可以直接在虚拟机中引导运行,并且不需要在 VM 中包含 Linux 内核,也不需要包含用户区的典型软件堆栈。unikernel 不提供传统意义上的系统调用,因为所有操作都是以内核的特殊级别运行的。通常,unikernel 中,通过系统调用完成的操作,是通过公共函数调用提供的。这些内核是在虚拟机中运行,这将应用程序与实际系统隔离开来。此外,利用通用编译器分析方法检查软件栈的完整性,甚至可以删除不需要的组件,减少应用程序的占用。
Continue reading`rustic` 国际象棋游戏引擎,纯粹 Rust 技术栈实现,未从任何其它国际象棋引擎做任何派生。rustic 集成了许多近几十年产生的新概念,包括国际象棋的玩法和编程开发方面,该引擎站在过去的国际象棋引擎巨人的肩膀上。支持多平台支持(甚至包括嵌入式设备树莓派 Raspberry Pi、Buster),可与其它开源的游戏用户界面集成。
Continue reading迭代器(Iterator trait ),是 Rust 中最有用的 trait 之一。通过两个要诀:为自定义集合(collection)添加 iter() 函数;从不同类型的多个迭代器中,返回其中之一,我们对其做以认知。
Continue reading有时候,仅采用标准方法还不够好。本篇文章,是关于在重要的地方做最小的改变,从而达到最大的效果。处理来自船舶的 GPS 信号时,使用 Python 各种类库优化后,性能仍然不能满足。通过大约 300 行 Rust 代码,包含细节的整个实现,甚至包括 Rust 文档和单元测试!使得数据处理的速度大幅提升:图表和绘图提升 24 倍,数据计算提升 10 倍。生产环境中的体现,表明这是经过深思熟虑的、有针对性的优化。这次改进,不仅仅是学术上的,也不仅仅是为了降低工作成本。
Continue reading2021-04-03 Rust 内部博客发文:Niko Matsakis 正在逐步退出 Rust 核心团队,他将集中精力带领 Rust 语言团队。
Continue reading介绍了 Rust web 框架的开发状态、应用选择考量点等,涵盖安全性、灵活性、社区生态,以及项目规模等衡量因素。涵盖了包括 web 前端框架、Wasm 以及 web 后端框架。译者增加了对应的中文资源链接,方便感兴趣的朋友快速学习。
Continue readingRust 官方周报 384 期:Rust 社区更新、官方资讯、项目/工具更新、观测/思考文章、实际演练文章、周最佳 crate、Rust 近期活动、Rust 工作招聘,以及 Rust 开发者引语等。第 384 期的技术文章很棒,值得深读。
Continue reading正则表达式,有着内在的问题,这意味着只能使用简短的表达。现在,一个更好的解析方法正在成为主流,可用作所有流行语言的工作库,它被称为“析器组合因子(parser combinators)”,可满足 99% 的实际场景。解析器组合因子(parser combinators),是一种用高阶函数构造的,可组合计算的方法。如果解析过程不是你产品或者你开发库的主要目标,那么解析器组合因子很可能对你的任务有足够的表现力和可执行力。
Continue reading在 2020 年,新冠疫情(COVID-19)期间,人工智能的实际采用得到了大幅度提升。但是否进展太快?毕马威(KPMG)的调查显示:普通民众、政府领导人,以及商界领袖,这些不同阶层的人士,对此有截然不同的观点。
Continue readingHPy 提供了一个新的 API,以用 C 扩展 Python。有零开销、更快速、方便调试、通用的二进制文件(不用任何修改,可在 CPython、PyPy、GraalPython 等解释器上直接加载),以及更加符合时代标准等优点。
Continue reading上文《2021 年,学习 Rust 的网络资源推荐》中,我们介绍了 Stjepan Golemac 和 Luciano Mammino 两位作者整理的 Rust 学习资源,都是优秀且免费的。包括:官方书籍、非官方书籍,以及优秀的开发者博客。本文,我们继续看看 2 位作者推荐的视频流媒体、电子期刊、播客、社区和聚会、练习和研讨会,以及精选开源项目等 Rust 学习资源。另外,本文中还推荐了 Rust 优秀的付费学习资源。
Continue reading这篇博文是 Stjepan Golemac 和 Luciano Mammino 两位作者整理的,是关于 2021 年学习 Rust 的资源列表推荐。这些资源列表基本都是国外的英文资料,包括免费和付费的。其中有些资源列表已经有中文翻译,笔者一并做了说明和加了链接。
Continue reading四川成都彭州葛仙山露营随笔。高山之巅,月黑风高。牡丹紫荆,争奇斗艳。
Continue readingRust 1.51.0 稳定版,展示了相当长的时段内,Rust 语言和 Cargo 工具的特性迭代,稳定了最具价值的常量泛型(const generics),以及 Cargo 的新特性 `resolver`。另外,还包括适用于 macOS 的拆分调试信息、已稳定 APIs,以及 Clippy 工具的诸多改进。
Continue reading2021 年 3 月 18 日,Niko Matsakis 代表 Rust 社区的 Async 基础工作组发表了一个倡议书:倡议 Rust 社区共同参与,为 Async Rust 构建一个共享的愿景文档。参与者可以基于自己真实的异步开发经验,提出建议;分享自己在异步开发中,遇到的困难和解决方法;分享自己在异步开发中,为了提高效率而采用的变通方法和技巧;甚至就是基于真实的异步开发经验,切合实际地描述 Async Rust 的美好未来……直至 2021 年 4 月 2 日,都是收集这些关于 Async Rust 现状的“故事”。随后,Async 基础工作组会进行头脑风暴会议,对这些关于 Async Rust 现状的“故事”进行审阅。头脑风暴会议结束后,Async 基础工作组将评选出“最幽默的故事”或“必须支持的贡献者”等奖项,以及获奖者。
Continue readingRust 纪元第 382 周,评出的周最佳 crate 是大数计算方面的 `ibig`。结合目前使用较广的大数计算 crate `num`,采用 2 种阶乘的不同实现方式,进行实践。
Continue readingRust 1.51.0 将于本周发布,改进包括语法、编译器、类库、已稳定 APIs、Cargo、Rustdoc、Misc,以及兼容性等方面。
Continue readingRust 中,对于将 markdown 渲染为 html 方面,目前成熟度较高的 crate 主要有 2 个:`markdown.rs` 和 `pulldown-cmark`。功能都非常完善和强大:支持解析文档注脚(footnote)、github 风格的表格、github 风格的任务列表,以及删除线效果(strikethrough)等,但要主要支持是选择性地。 性能方面,或许测试体量不足,笔者测试感觉差别不大。前者 `markdown.rs` 稍微简单易用一些。后者 `pulldown-cmark` 专注于 `CommonMark`,默认提供命令行工具。采用拉取解析(pull parse)模式,其为 Rust 开发的书籍工具 `mdBook` 所使用。
Continue reading但是,作为手机行业巨头的苹果公司,是硬件提供商。其新出的系统升级,则向我们暴露了一些“国民应用”比您更了解您自己的隐私细节。 最近,看到了凤凰网科技的一条推送。苹果公司即将于 2021 年 9 月份推出的 iOS 14.5 功能,加强了对这些 App 关于用户隐私数据获取的限制。不交叉的软件和硬件业务,因此产生了冲突。
Continue reading前 2 篇文章中,我们初始化搭建了工程结构,选择了必须的 crate,并成功构建了 GraphQL 查询服务:从 MongoDB 中获取了数据,并通过 GraphQL 查询,输出 json 数据。本篇文章,本应当进行 GraphQL 变更(mutation)服务的开发。但是,虽然代码成功运行,却存在一些问题,如:对于 MongoDB 数据库的连接信息,应当采取配置文件存储;通用公用的代码,应当组织和抽象;诸如此类以便于后续扩展,生产部署等问题。所以,本篇文章中我们暂不进行变更的开发,而是进行第一次简单的重构。以免后续代码扩大,重构工作量繁重。
Continue reading上一篇文章中,我们对后端基础工程进行了初始化。但是未有进行任何开发,本文中,我们将开启基础 GraphQL 服务的历程。包括如下内容: 1、构建 GraphQL Schema; 2、整合 Tide 和 async-graphql; 3、验证 query 服务; 4、连接 MongoDB; 5、提供 query 服务。
Continue reading本系列博客中,我们使用 Tide + async-graphql + mongodb + jsonwebtoken + handlebars-rust 构建基于 Rust 技术栈的 GraphQL 服务,我们需要做到前后端分离。需要说明的是:本博客即采用前述 Rust 技术栈搭建,目前仍然处于开发阶段。 本文为起步教程,主要包括: 1、工程初始化; 2、crate 的比较和选择。
Continue reading大疆的 tello 无人机也提供了可编程的接口,官方已经支持了 Scratch 图形化编程。由此分析,我们可以得出 tello 无人机实际上提供了 2 个接口:tello 无人机应用程序使用的基于文本的接口,以及一个非公共接口。因为提供了开放的接口,才能和图形化编程进行文本交互,实现用户的编程控制。
Continue reading