< 返回我的博客

ChaosBot 发表于 2018-01-26 14:50

Tags:ruststudy

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 动画等
  • 为了性能:使用rayon来并行处理cascade
  • 规避并行风险的简单规则
    • 只允许写入局部变量
    • 可以读取任何数据
    • 主线程不允许执行
  • 痛点:
    • 内存占用:
      • 嵌套使用Enum容易占用内存,比如Option之类,但好像这个问题之前修复了?建议尽量扁平化使用Enum
      • Arc支持weak指针但是占内存,Stylo选择自己实现了另外一个Arc
    • 编译慢。
    • 内存分配容易失败(尤其是windows平台)
      • 标准库不允许分分配失败中恢复,所以stylo重新fork了hashmap,增加了try_push之类的方法
  • 镇痛药
    • drive triat
    • 线程安全
    • assert文化
    • creates.io
  • 展示了一些内部开发时的对话,总的来说是对Rust的赞美。

PPT

评论区

写评论

还没有评论

1 共 0 条评论, 1 页