#awaitjavascript
#cloudsith #registryhtml
Cloudsmith是Puppet Labs旗下的DevOps平台,目前支持Cargo。你能够把Cloudsmith做为crates.io以外的私人registry。前端
本文介绍了如何使用cloudsmith-cli工具将你的crate发布到它的平台上。java
Read Moreweb
cargo registry 相关文档chrome
#concurrency #hashmapapi
该论文经过实现一个并发无锁HashMap来研究Rust类型系统如何影响并发数据结构的开发和改进。他们的代码库concache在GitHub上公开,是Rust语言中最快的并发HashMap之一,能够帮助下降并发程序中的瓶颈。数组
Read More浏览器
Paper pdf前端工程师
concache
#UnitTest #chrome
stretch的做者写的一篇博客。stretch是一个跨平台的FlexBox引擎。在Visly公司,该做者正参与一个为前端工程师构建的设计工具,其中用到FlexBox,须要在不使用WebView的状况下保持Web、iOS和Android三端保持相同的布局。意味着在移动设备上复制Web的布局。
这篇文章里,做者介绍了使用stretch的单元测试方案,是一套自动编写自动化测试的方案,他们称其为gentest系统。大概原理以下图:
全部的测试用例都用html文件来描述,而且包含id =“test-root”
的布局。而后gentest使用WebDriver将此文件加载到Chrome head-less浏览器中。加载后,gentest将经过WebDriver向浏览器询问每一个DOM节点的样式,大小和位置等信息,而后利用此信息,gentest再生成Rust单元测试,用于构建三端等效的FlexBox树给stretch api使用。最后能够统一经过cargo test
来完成测试。
gentest的另外一个好处是,由于每一个测试只是一个html文件,只需打开文件就能够在浏览器中显示它。而且他们还利用gentest生成一套基准测试,确保性能不会退化。
gentest有什么黑科技吗?
它也是开源的,我翻了一下源码,主要是三步:
使用quote!来构建待生成测试代码的模板(TokenSteam)
将这些模板填充之后从TokenSteam转称字符串。
使用fs::write
写到指定的目录文件中。
Read More
stretch
webdriver
gentest
#sed #X12
x12pp是用Rust实现的能够漂亮地打印X12 EDI格式的Cli工具。做者写了一篇博文,阐述了他使用sed命令处理X12的问题,这些问题促使他使用Rust来写x12pp。而且写出来的工具性能上能够轻松击败sed这样的通用工具。
x12pp
Read More
#c
该reddit帖子做者用C和Rust分别写了一个一样功能的示例,发现rust编译器不如clang编译器优化的完全,clang编译器生成的汇编代码最简单。
int bongo(int num) {
int a = 0;
for (int x = 0; x < num; x += 2) {
if (x % 2) {
a += x;
}
}
return a;
}
Rust代码
pub fn bongo(num: i64) -> i64 {
let mut a = 0;
for x in (0..num).step_by(2) {
if (x % 2) != 0 {
a += x
}
}
a
}
评论中有人给出缘由,Rust代码中for循环的范围和step_by比较复杂。由此还贴出两个相关issues。
Read More
step_by issues 1
step_by issues 2
#parser
combine和nom的功能相似,但它的特色是创建在Rust的trait和类型系统之上,而不是宏。
完整的更新列表
#cli
rust-latest
#cargo
cargo vender支持将crates.io中的依赖项保存到你本地目录下。
Read More
#glibc
Rust和Glibc在动态连接的时候可能会失效,该文做者建议使用自定义工具链来解决此问题。
Read More
#route
一个应用程序的路由由Url Path和查询参数组成。app-route库能够将这样一个路由解析为Rust的类型结构。
let path: UsersListRoute =
"/groups/4313145/users?offset=10&limit=20&friends_only=false&keyword=some_keyword"
.parse()
.unwrap();
assert_eq!(
path,
UsersListRoute {
group_id: 4313145,
query: {
UserListQuery {
limit: Some(20),
offset: Some(10),
keyword: Some("some_keyword".to_string()),
friends_only: false,
}
}
}
);
app-route
#javascript
关于JavaScript二进制AST
随着网站变得愈来愈复杂,JavaScript源代码的数量不断增长。依赖于大型JavaScript代码库会致使网站启动缓慢 - 一般速度慢得使人没法接受。这是由于存在两个瓶颈:解析和字节码编译JavaScript。不幸的是,浏览器几乎达到了两种操做的效率峰值。
咱们(Mozilla,Bloomberg,Facebook,CloudFlare)目前正致力于针对JavaScript的特定领域编码,称为“BinAST”(“JavaScript二进制AST”的缩写)。 JavaScript二进制AST旨在打破瓶颈。当前的高级原型已经在全部最多见的框架上显示了JS解析改进了30%-50%,只需更改格式,咱们相信咱们能够进一步提升这一改进。编码能够构建为webdev工具链的一部分,或者由代理或CDN注入,所以能够在不更改原始网站的状况下自动提升最终用户的性能。
此编码目前在JavaScript TC39标准化过程当中。它能够与现有的压缩技术(gzip,brotli等)一块儿使用
binjs-ref
#UITest
trybuild