【Rust日报】 2019-04-05
「系列文章」审阅Sled源码 Part I
#CodeReview #sled
Sled项目是一个用Rust编写的嵌入式数据库。该文作者在日程工作中用到了它,为了掌握它的工作原理,准备开始写这个系列的博客。也可以通过学习此文,掌握一些阅读开源项目源码的技巧或其他启示,比如:
- 先找你擅长领域的项目去阅读,事半功倍。
- 从整体上先把握代码组织结构、依赖库,从所获得的信息中去推测更多信息。
- 携带某个主要的问题去看源码是如何实现的。
该文作者还有一个完整的review LevelDB的系列文章:reviewing-leveldb
- Read More
- reviewing-leveldb
Smithy: 一个Rust实现的WebAssembly框架
#wasm #smithy
状态:0.0.2 Alpha版本。
- Read More
- smithy
- 在线Demo
- demo源码:smithy_todolist
案例:使用Rust和Lucet
#wasm #lucet
Lucet是一个本地WASM编译器和运行时。基于Lucet运行时,Rust编译为wasm32-unknown-wasi target就可以创建一个运行于服务端的wasm程序。目前wasm32-unknown-wasi只支持Rust Nightly(2019-04-01版本确定可用)
- Rust官方PR: Add a new wasm32-unknown-wasi target
- Read More
Gloo更新:Onion层、计时器和事件
#Gloo
Gloo是一个用Rust和Wasm构建快速可靠的Web应用程序和库的模块化工具包,于两周前开始构建。最新的进展如下:
- 增加了「“洋葱”分层API」。
也就是说,API的构建就像是洋葱一样,分好几个抽象层。他们希望在raw-sys库之上构建一层中级的API,然后在中级API层再构建一层高级的面向用户的API。并且每一层都是公开暴露接口并可复用。这样设计是为了最高限度地提高大型生态系统的可重用性、通用性等。
其中核心层API是构建在wasm-bindgen,js-sys和web-sys之上的原始绑定。中间层是回调(callback)层,比如gloo_timers就包含在这一层。高级层是Futures和Steams层,当然现在是futures 0.1,等异步稳定以后再切换到最新的。未来也有可能增加更高的抽象层。比如某些Web API或是为了生态系统而集成的层。
- 另一个正在进行的设计是如何制作事件目标和监听器层。
Read More
深入字体回退(Font Fallback)机制
#font #xi_editor
XiEditor作者新博文,深入介绍了字体回退机制。
在操作系统介面和网页等现代排版环境下,如果指定用字体 A 来显示某字符 x 但该字体并不支持这个字符(甚至该字体当前不可用),排版引擎通常不会直接放弃,它会根据一个预先记好的列表来尝试寻找能显示字符 x 的字体,如果找到字体 B 能行,那就用字体 B 来显示字符 x。字体 B 就是当前这个情况的 fallback。
- 字体回退机制参考
- Read More
json_in_type: 快速JSON编码库
#json
特点:
- 编译时执行更多编码操作,运行时更少。
- 在类型中编码JSON对象的结构。
- 性能据说比serde的json!高出一个数量级。
比如:
// JSON Stringr#"{"void":null,"list":[42,true],"hello":"world"}"#,// Type
InlinedJSONObjectEntry<(),InlinedJSONObjectEntry<JSONListElem< u8, JSONListElem<JSONtrue, JSONListEnd> >>,JSONObjectEntry< &str, &str, JSONObjectEnd>
>
json_in_type
「视频」纯Rust实现SCTP以便支持WebRTC数据通道
#webrtc #sctp
SCTP: Stream Control Transport Protocol
- Read More
- Slides
- demo演示视频
编译器性能和LLVM
#llvm #compiler
本文作者以他自己实现的Cone编译器为案例深度探索了编译器架构和LLVM的性能,并比较全面地阐述了LLVM的性能概况。
- 编译器架构。Cone选择了C,而非Rust,是因为作者对性能更关心一些,他认为C更好。还介绍了一些前端架构的优化原则。
- LLVM后端性能。作者测量了LLVM后端各个编译阶段的性能,顺带阐述了LLVM的构建流程。
LLVM构建流程:
- Setup。初始化有关目标计算机,数据布局和全局上下文的信息。这个阶段的执行时间是固定的,不会随着源程序的增大而变长。
- Gen LLVM IR。Cone和LLVM的混合阶段,作者的Cone编译器会生成LLVM IR,就像Rust一样。同时作者也实现了一个Cone IR,类似于Rust的MIR。但Cone可能比Rust更快一些,因为没有Rust这么多分析。
- 验证LLVM IR。这个过程是对LLVM IR的有效语义进行分析。确保IR的格式正确、通过类型检查,其算法复杂度为O(n),与LLVM IR节点的数量成正比。
- 优化LLVM IR。将执行6次LLVM优化:将栈变量转换为寄存器、函数内联、窥孔优化(peephole optimization)、位操作优化(bit twiddling)、公共子表达式消除和控制流程简化。一些优化过程可能是O(n),但某些复杂的可能是指数级的。
- 生成目标,并将其存储于磁盘。此阶段占整个LLVM运行时间的73%。
小百科
窥孔优化可以在四个方面寻找优化机会:冗余指令删除,包括冗余的load和store指令以及死代码(不会执行的代码);控制流优化;强度削弱;利用特有指令。
作者也从LLVM架构上探讨了LLVM缓慢的原因。并且作者还打算继续研究优化LLVM的方案以及替代LLVM的方案。更多详细请阅读原文。
- Read More
- Reddit 讨论
Wafer: 并行三维FDTD 薛定谔(Schrödinger)方程求解器
#scientifc_computing #quantum_mechines
科学计算库
- Wafer
- 科普伟大的物理方程(3)薛定谔方程
像素级Ferris动态表情
#gif
Read More
mdbook-bookimport:支持从其他文件将代码或文本导入到mdbook中
#mdbook
- mdbook-bookimport
- Guide
rust-slothgl: 命令行3D软件光栅化工具
#tui #termion
由termion,tobj和nalgebra制作的独一无二的命令行3D软件光栅化工具。目前支持没有纹理或材质的OBJ文件格式。
- rust-slothgl
UFO: 用于无人机/无人机/四轴飞行器/RC航模的Rust库
#Drone #UAV #Quadcopter #RCPlane
状态:WIP
ufo
orderly: 可提供有序、受控的一组进程
#erlang #supervisor #process
该库从erlang supervisor树汲取灵感,它提供了构建监督进程树的机制,当进程重启率超过指定限制时,失败可以传播。旨在为服务/容器等提供稳定支持。
- orderly
- Docs
Witnet Foundation: Rust区块链工程师招聘
#job
新加坡公司,非远程。Witnet-将智能合约连接到任何外部数据源。
- Read More
minitt-rs: Mini-TT的Rust实现
#lang #learning
Mini-TT是一个简单的依赖类型语言。minitt-rs是它的Rust实现,并且还提供了一个REPL。 作者是@ice1000
- minitt-rs
- Mini-TT论文
「官方」当前Async已经修复的问题
#async
在最近的一条已merge的PR中,顺便列出了所有已被修复的async中已知的生命周期问题。
rust/pull/59286
日报订阅地址:
- Telgram Channel
- 阿里云语雀订阅
- Stemmit
- Rust.cc论坛
- GitHub
【Rust日报】 2019-04-05相关推荐
- 玩转微信小程序 之 初步了解微信小程序(2019/04/05)
LZ-Says:现在能做的,就是踏踏实实,走好每一步- 不去想未来会如何,安心做好自己应该做的事儿即可. 前言 前几日,集团官网开发暂时告一段落,回顾这段经历,感觉自己各方面还是有很多不足. 不过还好 ...
- 2019.04.05【NOIP提高组】模拟 A 组 T_OY(踢欧阳^_^)
JZOJ1116. T_OY(踢欧阳) Description 8月P教授要去看奥运,但是他割舍不下自己的一大堆智力玩具.于是,他决定把所有玩具都运到北京去.P教授使用自己的物体维数压缩器ODZ(Ob ...
- 《惢客创业日记》2019.04.05(周五)清明扫墓写诗一首
今天是清明节,去了两个地方,一个是父亲的墓地,另一个是烈士陵园.对过去的人最好的报答是完成他们未完成的心愿和牵挂. 这一刻,我想对故去的父亲说:"对您最好的报答,就是照顾好在世的老母亲.&q ...
- rust主播排行_「Rust日报」2019每周精选 • 第四期
前言: 从2018年开始,我每天会花1个小时关注Rust社区动态,并且在Rust.CC论坛.tg channel.Steemit.GitHub.语雀订阅都开通了Rust日报,分享我每天的见闻,偶尔也夹 ...
- 【2019年05月20日】A股滚动市盈率PE历史新低排名
2010年01月01日 到 2019年05月20日 之间,滚动市盈率历史新低排名. 上市三年以上的公司, 2019年05月20日市盈率在300以下的公司. 1 - 阳光照明(SH600261) - 历 ...
- Go 的时间格式化为什么是 2006-01-02 15:04:05?
阅读本文大概需要 5 分钟. 大家好,我是 polarisxu. 没有什么是完美的!而且,有些东西,有些人认为好,有些人认为很糟糕.Go 也是如此.喜欢 Go 语言的朋友,大概率对其中某些地方不喜欢. ...
- 【Rust日报】 2019-08-01:brpc-rs - X-lab 实验室新推出的一个rpc库
paperclip - OpenAPI 规范的 Rust 实现 在完成后,它会实现: Rust 中的服务器端.客户端和命令行端的高效的.编译时检查的.类型安全的 HTTP API 的生成: 支持处理. ...
- Ubuntu18开机速度突然变慢问题的解决(2019.11.05)
Ubuntu18开机速度突然变慢问题的解决(2019.11.05) 1 前言(伏笔) 2 分析一:可能是由于一些开机启动程序导致的 3 分析二:从启动日志查找原因 参考 1 前言(伏笔) 笔者的笔记本 ...
- linux 开机速度 固态,Ubuntu18开机速度突然变慢问题的解决(2019.11.05)
Ubuntu18开机速度突然变慢问题的解决(2019.11.05) 1 前言(伏笔) 2 分析一:可能是由于一些开机启动程序导致的 3 分析二:从启动日志查找原因 参考 1 前言(伏笔) 笔者的笔记本 ...
- 2019.04.18晚上 玄易财富 ---老承
2019.04.18晚上 玄易财富 ---老承 今晚我们分享---中国牛市历次特征 三月份最后一个交易日,沪指强力拉升近100点至3100点关口.券商板块大涨8个多点,保险银行也在平静中轮动起 ...
最新文章
- 讯飞语音语音听写,设置识别语言
- element-ui中用el-dialog+el-table+el-pagination实现文件默认选中且在分页的条件下有记忆功能...
- 文献记录(part32)--Face spoofing detection under super-realistic 3D wax face attacks
- 程序代码初学者_初学者:如何使用热键在Windows中启动任何程序
- LeetCode 646. 最长数对链(区间 贪心)
- 查看本机所有请求_【松勤教育】Fiddler抓包-只抓APP的请求
- linux: chmod,chown命令详解
- . mybatis指定配置文件的根元素_MyBatis框架
- ado显示,删除后刷新重新显示
- wincc怎么做数据库_wincc 数据库
- 如何在没有配备U1芯片的iPhone上使用AIrTag?
- 基于EEG的睡眠分期算法记录3-使用决策树多类支持向量机的自动睡眠阶段分类
- gabor matlab pudn,matlab-Face-recognition 基于Gabor特征提取和人工智能的人脸检测系统 271万源代码下载- www.pudn.com...
- Python - 多个Excel合并 (列不同序 或 列数不同)
- 批量群发邮件方式集锦,foxmail群发多少封邮件?
- python多级网址爬取_『采集超市』添加多级网址之手动填写链接地址规则
- 从冬令营到字节跳动,我从ICPCer变身Bytedancer
- Mixamo动画导入Unity中常见问题
- 【斯坦福公开课-机器学习】1.机器学习的动机和应用(吴恩达 Andrew Ng)
- 网站页面静态化(一)初识
热门文章
- odoo数据库主控密码采用什么加密算法?
- MySql基础篇---001 数据库概述与MySQL安装篇:概述,表和类对应关系,表关系、数据库卸载,下载,安装,配置,启动,登录,演示,图形化工具,目录结构,常见问题
- ReactiveX-Observable
- JavaWeb问题记录——IDEA换了图片前端不更新。
- 【观察】新华三:登顶Wi-Fi 6市场榜首,引领时代更创造时代
- 解决 java.io.FileNotFoundException:请求的操作无法在使用用户映射区域打开的文件上执行。
- @Slf4j是啥,它是干啥的
- css设置 备用 background背景图
- 06-软件测试计划及测试说明
- 新冠“照妖镜”,体质弱点现原形。你是啥症状?2023年,请好好善待你的身体!