Forwarded from Rust 视界
「社区」我的Rust程序发布checklist
关键字: [fd, release, checklist]
该文是fd库的作者总结出来的release清单,可以给社区提供一个借鉴。
按以下顺序做发布检查,非常重要:
一、 检查和更新依赖。
- 检查deps.rs是否有过期的依赖
- 运行cargo update去更新最新的兼容(minor)版本的依赖性
- 如果需要,可以手动更新到最新的主(major)版本
对于主版本更新还需要查看上游更改,仔细评估是否真的需要更新为新版本。
二、获取自上次发布以来的更新列表
通过
[示例](https://github.com/sharkdp/fd/compare/v7.1.0...master)
三、更新文档
- 检查并更新 -h和—help文本
- 更新Readme(程序的用法、新功能介绍、最低要求的Rust版本)
- 更新man页面
四、在本地安装主分支并且测试新功能
- 使用`cargo install -f `来安装
- 手动测试新功能
- 运行基准测试避免性能回退
理想情况下,为新的功能编写了测试,并且也使用了CI,是没有什么可担心的了。但实际上,总有一些事需要手工审查。尤其是对终端环境依赖的CLI项目更是需要如此。
五、清理代码库。
- 运行
- 运行 `cargo fmt`自动格式化代码
- 运行
最后两步通常包含在CI中。
六、更新版本信息
- 在Cargo.toml中更新项目版本
- 运行`cargo build`更新Cargo.lock
- 在项目仓库中搜索旧的版本号将其更新为新版本(比如在Readme、安装说明、构建脚本中等等)
七、使用Dry run模拟发布
八、Commit、Push并等待CI成功
九、写release notes。
十、 为最新的提交打上tag,并且开始部署。
十二、验证部署。确保已经上传了所有的二进制文件。
十三、发布到crates.io。
[Read More](https://dev.to/sharkdp/my-release-checklist-for-rust-programs-1m33)
关键字: [fd, release, checklist]
该文是fd库的作者总结出来的release清单,可以给社区提供一个借鉴。
按以下顺序做发布检查,非常重要:
一、 检查和更新依赖。
- 检查deps.rs是否有过期的依赖
- 运行cargo update去更新最新的兼容(minor)版本的依赖性
- 如果需要,可以手动更新到最新的主(major)版本
对于主版本更新还需要查看上游更改,仔细评估是否真的需要更新为新版本。
二、获取自上次发布以来的更新列表
通过
GitHub -> Release -> "XX commits to master since this release" 就能获取此更新列表。[示例](https://github.com/sharkdp/fd/compare/v7.1.0...master)
三、更新文档
- 检查并更新 -h和—help文本
- 更新Readme(程序的用法、新功能介绍、最低要求的Rust版本)
- 更新man页面
四、在本地安装主分支并且测试新功能
- 使用`cargo install -f `来安装
- 手动测试新功能
- 运行基准测试避免性能回退
理想情况下,为新的功能编写了测试,并且也使用了CI,是没有什么可担心的了。但实际上,总有一些事需要手工审查。尤其是对终端环境依赖的CLI项目更是需要如此。
五、清理代码库。
- 运行
cargo clippy 并查看修改建议 [可选]- 运行 `cargo fmt`自动格式化代码
- 运行
cargo text 确保所有测试通过最后两步通常包含在CI中。
六、更新版本信息
- 在Cargo.toml中更新项目版本
- 运行`cargo build`更新Cargo.lock
- 在项目仓库中搜索旧的版本号将其更新为新版本(比如在Readme、安装说明、构建脚本中等等)
七、使用Dry run模拟发布
cargo publish --dry-run --allow-dirty
通过这次模拟来发现上传包到crates.io中的问题,提前检查修改八、Commit、Push并等待CI成功
九、写release notes。
十、 为最新的提交打上tag,并且开始部署。
git tag vX.Y.Z; git push --tags
十一、在GitHub上创建实际的发布版本。十二、验证部署。确保已经上传了所有的二进制文件。
十三、发布到crates.io。
cargo publish
十四、通知软件包维护者有关的更新信息。[Read More](https://dev.to/sharkdp/my-release-checklist-for-rust-programs-1m33)
GitHub
sharkdp/fd
A simple, fast and user-friendly alternative to 'find' - sharkdp/fd
Forwarded from Rust 视界
「博文」一个使用Rust节约成本的故事
— 使用Rust将解析日志的速度提高了230倍
该文章是《The Ruby Way》的作者[André Arko](https://github.com/indirect)写的,同时他也是Ruby包管理器Bunlder的No.1贡献者,以及Rubygems.org的维护者。
所以,他在维护Rubygems.org的过程中,遇到最让他头疼的事情就是对日志的处理。Rubygems每秒有4000到25000个请求,磁盘每天可以产生500GiB的日志。他们尝试了一些日志的托管产品,但是这些产品也只能为他们保留1个小时以内的日志数据。
大概一年前,他把完整的日志进行了压缩,放到了s3上面,存储成本大概是每个月3.5美刀。但是有很多他感兴趣的统计数据被「埋葬」在了S3上面。因为S3的gzipped JSON流很难查询数据。这些统计数据有利于提供Ruby生态系统状态的重要信息。
后来利用aws的Glue功能,可以运行基于spark脚本的hadoop集群,他写了一个统计脚本,但是费用上升到了每月1000刀。
后来,也不知道是什么原因,让他想到了Rust。
事实证明,Rust满足了他的需求。 Serde Json库,让他可以在2秒内将1GB的JSON反序列化为Rust数据类型。并且使用nom来解析日志,可以在3分钟内解析1GB的日志文件,作者说,用Python和Glue在30分钟内解析完日志,他就觉得了不起了。
但是作者又仔细阅读了nom的文档,发现了一句「有时候,nom几乎和regex一样快」,这句话给了他灵感,他又用regex重写了解析代码,性能又提高了3倍。至少被spark中使用python解析快30倍。但是他把这个Rust程序的性能又多牛逼的事情告诉 @ReinH (他的朋友,Rust的贡献者之一,比他更了解Rust)的时候,ReinH说,怎么这么慢?你这个程序必须得优化。
他不清楚他的朋友是不是跟他开玩笑,但是他继续对Rust进行研究,然后他发现了`—release`模式,在使用release模式编译代码之后,突然发现:他可以在8秒内把1GB的文件解析完。以下是处理速度的一个对比记录:
他尝试了一些方案之后,最后发现了aws Lambda,它有一个免费策略:每个月400,000s。而作者处理500GB日志,只需要3000多s。于是他就快乐地使用了aws Lambda功能。
源码 : [kirby](https://github.com/rubytogether/kirby)
[Read More](https://andre.arko.net/2018/10/25/parsing-logs-230x-faster-with-rust/)
— 使用Rust将解析日志的速度提高了230倍
该文章是《The Ruby Way》的作者[André Arko](https://github.com/indirect)写的,同时他也是Ruby包管理器Bunlder的No.1贡献者,以及Rubygems.org的维护者。
所以,他在维护Rubygems.org的过程中,遇到最让他头疼的事情就是对日志的处理。Rubygems每秒有4000到25000个请求,磁盘每天可以产生500GiB的日志。他们尝试了一些日志的托管产品,但是这些产品也只能为他们保留1个小时以内的日志数据。
大概一年前,他把完整的日志进行了压缩,放到了s3上面,存储成本大概是每个月3.5美刀。但是有很多他感兴趣的统计数据被「埋葬」在了S3上面。因为S3的gzipped JSON流很难查询数据。这些统计数据有利于提供Ruby生态系统状态的重要信息。
后来利用aws的Glue功能,可以运行基于spark脚本的hadoop集群,他写了一个统计脚本,但是费用上升到了每月1000刀。
后来,也不知道是什么原因,让他想到了Rust。
事实证明,Rust满足了他的需求。 Serde Json库,让他可以在2秒内将1GB的JSON反序列化为Rust数据类型。并且使用nom来解析日志,可以在3分钟内解析1GB的日志文件,作者说,用Python和Glue在30分钟内解析完日志,他就觉得了不起了。
但是作者又仔细阅读了nom的文档,发现了一句「有时候,nom几乎和regex一样快」,这句话给了他灵感,他又用regex重写了解析代码,性能又提高了3倍。至少被spark中使用python解析快30倍。但是他把这个Rust程序的性能又多牛逼的事情告诉 @ReinH (他的朋友,Rust的贡献者之一,比他更了解Rust)的时候,ReinH说,怎么这么慢?你这个程序必须得优化。
他不清楚他的朋友是不是跟他开玩笑,但是他继续对Rust进行研究,然后他发现了`—release`模式,在使用release模式编译代码之后,突然发现:他可以在8秒内把1GB的文件解析完。以下是处理速度的一个对比记录:
~525 records/second/cpu in Python on AWS Glue但他没满足,继续使用rayon对程序并行化处理日志,最终的程序,在8核机器上快了100倍,在单核上跑,快230倍。现在的1GB的日志文件处理需要6.4s。
50,534 records/second/cpu in Rust with nom
121,153 records/second/cpu in Rust with regex + release
151,441 records/second/cpu in Rust with regex + release+ rayon最后如何部署是个问题。
他尝试了一些方案之后,最后发现了aws Lambda,它有一个免费策略:每个月400,000s。而作者处理500GB日志,只需要3000多s。于是他就快乐地使用了aws Lambda功能。
源码 : [kirby](https://github.com/rubytogether/kirby)
[Read More](https://andre.arko.net/2018/10/25/parsing-logs-230x-faster-with-rust/)
GitHub
indirect - Overview
indirect has 271 repositories available. Follow their code on GitHub.
Forwarded from Solidot
King Arthur's Gold 开源
2D 物理和合作建造独立游戏《King Arthur's Gold》宣布免费并公开源代码,源代码托管在 GitHub 上。《King Arthur's Gold》混合了失落的维京人的合作元素,加上了百战天虫中可完全摧毁地形的能力以及合金弹头系列里的视觉效果和动作元素。免费玩家限制了定制性,但可以通过购买 DLC 或 patreon 捐款支持解锁所有定制选项。Media
https://www.solidot.org/story?sid=60315
2D 物理和合作建造独立游戏《King Arthur's Gold》宣布免费并公开源代码,源代码托管在 GitHub 上。《King Arthur's Gold》混合了失落的维京人的合作元素,加上了百战天虫中可完全摧毁地形的能力以及合金弹头系列里的视觉效果和动作元素。免费玩家限制了定制性,但可以通过购买 DLC 或 patreon 捐款支持解锁所有定制选项。Media
https://www.solidot.org/story?sid=60315
Forwarded from Rust 视界
教你使用Yew Framework與Web Assembly
需要翻牆
[Read more](https://www.reddit.com/r/rust/comments/benycb/rustlang_project_todo_app_yew_framework_and_web/)
需要翻牆
[Read more](https://www.reddit.com/r/rust/comments/benycb/rustlang_project_todo_app_yew_framework_and_web/)
reddit
Rustlang Project: Todo App (Yew Framework and Web Assembly)
Posted in r/rust by u/MinutePhrase • 5 points and 0 comments
Forwarded from Rust 视界
Rust ConAsia 2019 下午场 直播地址
Room A: https://www.yizhibo.com/l/Px_sPev6S97VyanX.html
资料:https://github.com/breeswish/rust-prometheus-workshop
Room B:
Room C: https://www.yizhibo.com/l/hDjblQeE299JGrSg.html
资料: https://shawntabrizi.github.io/substrate-collectables-workshop/#/
https://github.com/shawntabrizi/substratekitties
Room A: https://www.yizhibo.com/l/Px_sPev6S97VyanX.html
资料:https://github.com/breeswish/rust-prometheus-workshop
Room B:
Room C: https://www.yizhibo.com/l/hDjblQeE299JGrSg.html
资料: https://shawntabrizi.github.io/substrate-collectables-workshop/#/
https://github.com/shawntabrizi/substratekitties
Yizhibo
沙渺MT-一直播
沙渺MT,沙渺MT,rust-prometheus
Forwarded from Deleted Account
https://space.bilibili.com/293274438/channel/detail?cid=72429
RustCon Asia B 站观看地址-更新了 20 部(欢迎分享)
RustCon Asia B 站观看地址-更新了 20 部(欢迎分享)
Bilibili
秘猿科技的个人空间 - 哔哩哔哩 ( ゜- ゜)つロ 乾杯~ Bilibili
秘猿科技,秘猿科技 We Build Trust
相伴始终 信任如初
https://www.cryptape.com
,bilibili是国内知名的视频弹幕网站,这里有最及时的动漫新番,最棒的ACG氛围,最有创意的Up主。大家可以在这里找到许多欢乐。
相伴始终 信任如初
https://www.cryptape.com
,bilibili是国内知名的视频弹幕网站,这里有最及时的动漫新番,最棒的ACG氛围,最有创意的Up主。大家可以在这里找到许多欢乐。
Forwarded from Deleted Account
MDN Web 文档
编译 Rust 为 WebAssembly
如果你写了一些 Rust 代码,你可以把它编译成 WebAssembly!这份教程将带你编译 Rust 项目为 wasm 并在一个现存的 web 应用中使用它。
Forwarded from Funny Job
我分享的书籍侧重 “数学 & 物理 & 金融” ,主打pdf&djvu格式。
电子书库 1)丛书系列 只读密钥:BQ36ZETYSW4SLJ2VMPIGXATAEMXYKXDHT
截止20170212共82G,按出版丛书或某一个主题分类。
电子书库 2)主题分类 只读密钥:BZCTXN7QYCMXS5PINIEO3JU7C7YFI6GOR
截止20170212共32.9G,按学科及其分支分类,但不包括“电子书库 1)丛书系列”已有的书籍。
电子书库 3)科普读物 只读密钥:B7ZJOFU5YGHTVQOT42JLGOULNTPTZ73FS
截止20170212共6.24G,只收入科普读物,但不包括“电子书库 1)丛书系列”已有的书籍。
电子书库 4)学习书单 由于和前面三类有重复,我还是此类其删除了。 【放心,不会影响你们已经下载的书籍】
电子书库 5)网友荐书 只读密钥:BZ7VZSMPAORFQ2FP5PSJK4P2PAND6WD66
读写密钥:AVTCAYB5WIOHPFETX3UYQKL2EPPQAINTT
可自由上传删除,我将尽可能及时进行分类转移。
电子书库 1)丛书系列 只读密钥:BQ36ZETYSW4SLJ2VMPIGXATAEMXYKXDHT
截止20170212共82G,按出版丛书或某一个主题分类。
电子书库 2)主题分类 只读密钥:BZCTXN7QYCMXS5PINIEO3JU7C7YFI6GOR
截止20170212共32.9G,按学科及其分支分类,但不包括“电子书库 1)丛书系列”已有的书籍。
电子书库 3)科普读物 只读密钥:B7ZJOFU5YGHTVQOT42JLGOULNTPTZ73FS
截止20170212共6.24G,只收入科普读物,但不包括“电子书库 1)丛书系列”已有的书籍。
电子书库 4)学习书单 由于和前面三类有重复,我还是此类其删除了。 【放心,不会影响你们已经下载的书籍】
电子书库 5)网友荐书 只读密钥:BZ7VZSMPAORFQ2FP5PSJK4P2PAND6WD66
读写密钥:AVTCAYB5WIOHPFETX3UYQKL2EPPQAINTT
可自由上传删除,我将尽可能及时进行分类转移。
Forwarded from Rust 视界
google-apis-rs: 适用于所有Google API的绑定和CLI生成器
#google
这个项目的gen目录下包含了很多相关组件
[google-apis-rs](https://github.com/Byron/google-apis-rs)
这个项目的gen目录下包含了很多相关组件
[google-apis-rs](https://github.com/Byron/google-apis-rs)
GitHub
GitHub - Byron/google-apis-rs: A binding and CLI generator for all Google APIs
A binding and CLI generator for all Google APIs. Contribute to Byron/google-apis-rs development by creating an account on GitHub.
Forwarded from Rust 视界
零成本抽象
官方核心团队无船同志的新博文,探讨了「零成本抽象」。
零成本抽象在C++跟Rust是一個很重要的概念
簡單來說就是:不希望有很大很重的runtime,並且可以在編譯時被優化。
作者覺得 rust 有幾個很棒的 零成本抽象
1. 所有權、借用
保證内存的正確使用
2. 迭代器、閉包函數
可以輕鬆的串接 map, filter 等函數做處理
3. await 异步函數
當前的await語法雖然還沒有確定,但使用pinning 做到零成本抽象是確定的
4. Unsafe 函數、模块邊界
由於rust的語法複雜性,有很多實作會需要Unsafe的底層實作
這些Unsafe函數實作了零成本抽象的底層
讓我們在上層能安全的使用這些模块
另外无船同志还表示:trait对象目前不是零成本抽象,他想花点时间(至少需要18个月)去研究这个问题,然而总是有更优先的事情。
- [Reddit 讨论](https://www.reddit.com/r/rust/comments/bpep6h/zero_cost_abstractions/)
- [Read More](https://boats.gitlab.io/blog/post/zero-cost-abstractions/)
官方核心团队无船同志的新博文,探讨了「零成本抽象」。
零成本抽象在C++跟Rust是一個很重要的概念
簡單來說就是:不希望有很大很重的runtime,並且可以在編譯時被優化。
作者覺得 rust 有幾個很棒的 零成本抽象
1. 所有權、借用
保證内存的正確使用
2. 迭代器、閉包函數
可以輕鬆的串接 map, filter 等函數做處理
3. await 异步函數
當前的await語法雖然還沒有確定,但使用pinning 做到零成本抽象是確定的
4. Unsafe 函數、模块邊界
由於rust的語法複雜性,有很多實作會需要Unsafe的底層實作
這些Unsafe函數實作了零成本抽象的底層
讓我們在上層能安全的使用這些模块
另外无船同志还表示:trait对象目前不是零成本抽象,他想花点时间(至少需要18个月)去研究这个问题,然而总是有更优先的事情。
- [Reddit 讨论](https://www.reddit.com/r/rust/comments/bpep6h/zero_cost_abstractions/)
- [Read More](https://boats.gitlab.io/blog/post/zero-cost-abstractions/)
reddit
r/rust - Zero Cost Abstractions
227 votes and 128 comments so far on Reddit
Forwarded from Rust 视界
case-studies: Rust实例探究
#learning #study
该库展示了一些棘手的Rust代码示例,这些代码是dtolnay(syn作者,Rust宏的高手)在使用Rust(他自己和其他人)中的各种高级宏库时遇到的问题集合。该项目致力于对Rust宏开发的一个深刻洞察:擅长使用宏的人和宏专家之间的区别主要与他们擅长“宏”的程度是无关的。
这也许是学习Rust宏的一个非常好的案例。
[case-studies](https://github.com/dtolnay/case-studies)
#learning #study
该库展示了一些棘手的Rust代码示例,这些代码是dtolnay(syn作者,Rust宏的高手)在使用Rust(他自己和其他人)中的各种高级宏库时遇到的问题集合。该项目致力于对Rust宏开发的一个深刻洞察:擅长使用宏的人和宏专家之间的区别主要与他们擅长“宏”的程度是无关的。
这也许是学习Rust宏的一个非常好的案例。
[case-studies](https://github.com/dtolnay/case-studies)
GitHub
GitHub - dtolnay/case-studies: Analysis of various tricky Rust code
Analysis of various tricky Rust code. Contribute to dtolnay/case-studies development by creating an account on GitHub.