< 返回版块

Yuan YQ 发表于 2026-04-14 10:05

Servo v0.1.0:首个 crates.io 版本与长期支持版发布

今天,Servo 团队发布了 servo crate 的 v0.1.0 版本。这是首次将 servo crate 发布到 crates.io,它支持将 Servo 作为库使用。与此同时,团队决定推出 Servo 长期支持(LTS)版本。常规月度发布预计会包含破坏性变更,部分集成方更希望按半年周期进行重大升级,同时仍能获取安全更新,并(有望)获得迁移指南。

Servo 是由 Mozilla 发起、Linux 欧洲实验室及社区主导维护,是目前最知名的用 Rust 从头重写的现代化浏览器引擎。

核心定位

  • 目标:打造安全、并行、高性能的 Web 引擎
  • 语言:几乎完全使用 Rust 编写,天生内存安全、线程安全
  • 地位:Rust 生态最具代表性的大型项目之一,也是下一代嵌入式 / 轻量化浏览器的核心引擎

主要特点

  • 并行渲染架构页面布局、绘制、脚本执行高度并行,充分利用多核,理论上比传统引擎更快。
  • 极致安全无 C/C++ 常见的内存越界、空指针、use-after-free 等高危漏洞,非常适合安全敏感场景。
  • 模块化 & 可嵌入最新版本已发布到 crates.io,可以作为独立库嵌入到其他应用中,不再只是一个演示浏览器。 标准兼容持续实现现代 Web 标准:HTML、CSS、DOM、WebGPU、WebAssembly 等。
  • 跨平台支持 Linux、macOS、Windows、Android 等,可用于桌面、嵌入式、车载、IoT 等场景。

Github: https://github.com/servo/servo

colr:通用的、可扩展的颜色库

colr 是Rust 语言编写的、类型安全的通用色彩处理库**,核心设计是在**类型层面统一色彩空间、通道布局、存储格式,从编译期杜绝色彩混用错误,主打零成本安全、高性能、可扩展。

核心功能

  1. 支持的色彩空间(完整覆盖专业场景)
  • RGB 类:sRGB、Display P3、Adobe RGB、Linear RGB
  • 感知均匀空间:OKLab、OKLch(现代色彩处理首选)
  • 标准空间:XYZ (D65)、Lab (D65)、Lch (D65)
  • 支持 HDR、线性 / 非线性传递函数、白点转换(D65/D50)
  1. 核心能力
  • 色彩空间显式转换(编译期安全)
  • 通道布局转换(RGBA ↔ ARGB ↔ RGB 等)
  • 位深度转换:f32 ↔ u8,支持抖动(dither)减少量化误差
  • 色适应(白点变换,如 D65 ↔ D50)
  • 基础色彩运算:混合、插值、亮度 / 饱和度调整

Repo:https://codeberg.org/chaynabors/colr

文章:仅仅使用标量类型是不够的,一切皆需指定类型

这篇文章核心观点:仅用基础标量类型(string/int 等)的类型安全是浅层的,会隐藏大量业务语义错误,应通过为领域概念创建专属类型(Newtype/branded type)让无效状态无法表示。

核心问题

  1. 位置参数风险

    多个同类型参数(如 ShopID、CustomerID 均为 string)易被传参颠倒,编译器不报错,引发生产故障。

  2. 结构体仅缓解不根治

    用结构体做命名参数,仍可把错误语义值赋给同类型字段,类型系统不校验业务含义。

  3. 标量抹去语义

    基础类型只描述数据形状,不表达业务意义,无法区分 ID、金额、单位、安全状态等,导致混淆 ID、单位错乱、注入风险、经纬度互换等 bug。

解决方案:为领域概念封装专属类型

  • Rust:用 Newtype(如 ShopId (String))+ Deref/From/Display/ 构造函数校验。
  • Go:定义独立类型(type ShopID string),类型不兼容、自带方法。
  • TypeScript:用 Branded type(带唯一标识的交叉类型)实现编译期隔离。
  • 关键效果:不同业务类型不可互换,传参 / 赋值错误直接编译报错

收益与成本

  • 收益:代码自文档、重构安全、边界一次性校验、可检索性强、编译器强制安全规则。
  • 成本:少量类型封装代码,远低于故障与人工校验成本。

原文:https://sot.dev/everything-should-be-typed.html

--

From 日报小组 Yuan YQ

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页