js-sys发布 0.2
js-sys是配合wasm-bindgen 使用的库,它绑定了ECMAScript标准中存在的JavaScript所有全局API,方便调用
当然js-sys还没有覆盖100%的JS API,还需要你的帮忙:issues-275
这是个体力活
另外wasm-bindgen也包括了Web API的绑定,对应于web-sys库
web-sys库也需要帮助
Rust+WebAssembly构建同构的Web App
实现了一个虚拟dom,可以根据服务端的HTML字符串渲染到浏览器的dom,完全同构,纯Rust+Wasm
硬件钱包也开始用Rust了
作者在Ledger加密狗上尝试使用Rust,并且最终使用Rust替代了所有的C SDK依赖。
Toshi,基于Tantivy的全文搜索引擎
作者的目标是让Toshi成为ElasticSearch
Cargo中的版本选择
在这篇文章里,Aturon解释了为什么Cargo在解决依赖关系时通常会选择最新版本。
Aturon认为「依赖地狱」出现的原因是以下四点目标没有做好:
- 重复性。在不同的机器上进行构建都会得到相同的结果
- 控制。用户可以控制何时以及如何升级依赖
- 兼容性。
- 可维护性。
因此,包管理的作用就是提供机制、默认值和最佳实践,以便促使生态系统在这些目标之间达成平衡。目前并没有出现一个最佳的解决办法。
最大版本解析的基本原理:
- 大多数包管理器都使用最大(最新)版本,只有vgo使用了最小版本
- 选择最大版本,需要lockfile文件的帮助来实现重现机制,而最小版本则不需要
- 选择最大版本,是促进生态系统一致性的协议:版本之间彼此测试兼容性要以最新版本为准;而选择最小版本,则不会达到生态系统一致的目的。
- 选择最大版本,有利于下游用户获得最新的错误修正,也可以促使生态系统中的库倾向于维护最新版本。
- Cargo团队认为,选最大版本是对整个生态系统有好处的。主要的成本在于lockfile的复杂性。
文章里也有关于工具链的更多讨论:
Ada和Spark中的安全动态内存管理
从Rust内存管理机制获得灵感,通过Ada扩展提供指针类型来改进安全的自动内存管理
在Travis-CI中使用自动部署构建多目标Rust
一个小型构建脚本(包括对代码的解释),可以为i86 32和64位计算机以及带有Travis-CI的Raspberry Pi(ARM)自动编译和创建Rust二进制文件。
有没有让你困扰的Rust 2018特性?
可以到这个帖子里写下具体的代码片段
评论区
写评论还没有评论