由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-std
1.0最终发布。正如开发者在第一个公告博客中所承诺的那样,稳定版本与Rust 1.39发行版相吻合,该发行版增加了async/.await
。我们要感谢周围的活跃社区async-std
帮助发布了该版本。
async-std
的1.0版本指示所有相关的API均已就绪,将来会在这些稳定的基础上增加功能。
前往博客网页了解更多。
推荐文章:揭开异步Rust的神秘面纱
本文章的目标读者是已经对Vantage Rust经验丰富,并且希望涉足异步生态系统中的程序员。
就像标题所示,这本书与其说是关于如何使用异步Rust,还不如说是试图对幕后工作原理有一个扎实的理解。有效的使用异步rust应该是一个自然而然地开始。
因此,我们将尝试回答由任何足够复杂的技术引起的常见基本问题:
我们如何以及为什么要这样做?
构成堆栈的层是什么?
它们各自的作用是什么?
他们以什么样的方式工作以及为什么需要这样的方式?
它们如何配合在一起?
这种方法的优点和缺点是什么?
整体执行模型的语义是什么?
内存中的所有内容如何表示?
etc...
在回答所有这些问题的方式上,我们会遇到很多抽象的问题,一开始看起来完全像是变魔术。
在阅读本书之后,人们将能够:A)深入研究任何任意复杂的异步代码库,B)悉知编译器可能向它们抛出的任何错误消息。
本文章英文全文前往GitHub查看。
From 日报小组 @Lance
日报订阅地址:
独立日报订阅地址:
Telgram Channel
阿里云语雀订阅
Steemit
GitHub
社区学习交流平台订阅:
Rust.cc论坛: 支持rss
Rust Force: 支持rss
微信公众号:Rust语言学习交流