The Story of Stylo: Replacing Firefox's CSS engine with Rust — Josh Matthews
看了Mozilla工程师在Rust belt大会上的分享,了解到一些关于Stylo的一些故事:
- 用Rust重写以后节约了一倍代码。(旧版C++ 16万行,Rust重写以后8万5千行)
- style system包括:
- HTML/CSS解析器
- 层叠样式 cascade: 输入style rule + dom tree,输出:按dom节点计算得出的样式节点 style dom
- 布局: 输入 style dom + dom tree 输出 尺寸、位置等布局信息
- CSS 动画等
- HTML/CSS解析器
- 为了性能:使用rayon来并行处理cascade
- 规避并行风险的简单规则
- 只允许写入局部变量
- 可以读取任何数据
- 主线程不允许执行
- 痛点:
- 内存占用:
- 嵌套使用Enum容易占用内存,比如Option之类,但好像这个问题之前修复了?建议尽量扁平化使用Enum
- Arc支持weak指针但是占内存,Stylo选择自己实现了另外一个Arc
- 编译慢。
- 内存分配容易失败(尤其是windows平台)
- 标准库不允许分分配失败中恢复,所以stylo重新fork了hashmap,增加了try_push之类的方法
- 内存占用:
- 镇痛药
- drive triat
- 线程安全
- assert文化
- creates.io
- 展示了一些内部开发时的对话,总的来说是对Rust的赞美。
1
共 0 条评论, 1 页
评论区
写评论还没有评论