< 返回版块

LacneQin 发表于 2019-11-12 22:16

Tags:rust

由Mozilla Servo提供的CSS 由原本的librsvg支持升级到对Rust的支持

经过大量的重构之后,librsvg现在可以在Rust中完成所有CSS解析和匹配,无需使用libcroco。另外,CSS引擎来自Mozilla Servo,因此它应该能够处理比librsvg以前复杂得多的CSS。

介绍

第一次在librsvg中引入CSS解析是2002年。为了支持当时CSS2的一小部分,它的体积被设计的尽可能的小。

Librsvg处理CSS样式表的方式不是逐行进行语法分期,取而代之的是将各个部件组成一个整体。不知何时起,g_strsplit()成为了你最好的朋友。基本的解析算法是打开一个样式表,如下所示:

rect { fill: blue; }

.classname {
    fill: green;
    stroke-width: 4;
}

从librsvg在以往遇到的各种问题中,开发团队得知“ CSS的支持太有限”,感觉使用CSS功能的SVG要么是手写的,要么是由诸如数据绘图软件之类的自定义程序自动生成的。插图程序倾向于在每个SVG元素中明确列出所有样式属性,并且不使用CSS。

但在librsvg 2.47.1中将不再需要libcroco!

详细信息前往博客网页查看。

async-std 1.0发布

async-std是Rust的标准库到异步世界的移植。它运行速度十分快,使用体验也更良好。

async-std1.0最终发布。正如开发者在第一个公告博客中所承诺的那样,稳定版本与Rust 1.39发行版相吻合,该发行版增加了async/.await。我们要感谢周围的活跃社区async-std帮助发布了该版本。

async-std的1.0版本指示所有相关的API均已就绪,将来会在这些稳定的基础上增加功能。

前往博客网页了解更多。

推荐文章:揭开异步Rust的神秘面纱

本文章的目标读者是已经对Vantage Rust经验丰富,并且希望涉足异步生态系统中的程序员。

就像标题所示,这本书与其说是关于如何使用异步Rust,还不如说是试图对幕后工作原理有一个扎实的理解。有效的使用异步rust应该是一个自然而然地开始。

因此,我们将尝试回答由任何足够复杂的技术引起的常见基本问题:

  • 我们如何以及为什么要这样做?
  • 构成堆栈的层是什么?
  • 它们各自的作用是什么?
  • 他们以什么样的方式工作以及为什么需要这样的方式?
  • 它们如何配合在一起?
  • 这种方法的优点和缺点是什么?
  • 整体执行模型的语义是什么?
  • 内存中的所有内容如何表示?
  • etc...

在回答所有这些问题的方式上,我们会遇到很多抽象的问题,一开始看起来完全像是变魔术。

在阅读本书之后,人们将能够:A)深入研究任何任意复杂的异步代码库,B)悉知编译器可能向它们抛出的任何错误消息。

本文章英文全文前往GitHub查看。


From 日报小组 @Lance

日报订阅地址:

独立日报订阅地址:

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页