Varnish 6.0中的更改

通常,当我们在Varnish中发布零点版本时,这意味着用户需要做一些工作才能升级到新版本,但6.0实际上并没有那么可怕,因为大多数更改要么是在幕后进行的,要么是全新的功能。

用户可见的最大变化可能是我们,或者说在这里完全诚实地说:Geoff Simmons(UPLEX)增加了对Unix域套接字的支持,两者都 for clients 为了. backend servers

由于UNIX域套接字与IP号完全不同,我们被迫定义了VCL语言的一个新级别 vcl 4.1 以应对UDS。

两者都有 vcl 4.0vcl 4.1 是受支持的,并且它是主要的源文件,它控制它将是什么,并且您可以 include 更低的版本,但不是比这更高的版本。

一些旧的变量在4.1中不可用,一些新的变量在4.0中不可用。请看 本地、服务器、远程和客户端 以了解具体情况。

还有一些其他的更改 vcl 4.0 ,最值得注意的是,我们现在认为符号的大小写是相同的。

HTTP/2代码受到了Dag Haavi Finstad(Varnish Software)的极大关注,它现在已经在几个大型网站上投入生产。

有新的和改进的VMOD:

这个 umem 在Solaris上重新启用了装卸货,这是现在的默认存储方式。

现在可以看到更多错误情况 failure 处理,这应该会让我们希望的每个人的生活变得更简单。

不用说,我们也修复了很多错误。

在引擎盖下(主要是开发人员)

最重要的是, $Abi [vrt|strict] 现在应该已经和解了。我们已经把所有的东西都从 <cache.h> 它在以下情况下不可用 $Abi vrt ,这意味着VMODS将在几个后续的Varnish版本上无需重新编译即可工作。(有一些与包装相关的东西利用了这一点,但它没有出现在这个版本中。)

VMOD现在可以定义自己的统计信息计数器,它们的工作方式就像内置计数器一样,因为没有区别。

计数器在 .vsc 文件,该文件由一个新的执行了大量魔术等功能的python脚本处理。 vmod_debug 在源树中。如果你正在使用汽车工具,一个新的 VARNISH_COUNTERS 宏帮助您设置所有内容,并在中进行了说明 varnish.m4

这需要在总体上对统计信息计数器进行重大重组,因此VSM、VSC和VSL API都进行了微妙或不那么微妙的更改。

VMOD函数可以接受可选参数,这些参数与默认参数的不同之处在于有一个单独的标志来告诉调用中是否指定了它们。出于每个人的理智考虑,当使用此函数时,所有参数都包装在特定于函数的结构中。

这个 vmodtool.py 脚本学习了其他新技巧,因此也产生了更好的结果 .rst 输出。

VCL类型 INTBYTES 现在在所有平台上都是64位。

VCL ENUM有了一个新的实现,因此指针现在是常量,可以这样比较,而不是与 strcmp(3)

我们有一种新型的 binary 默认情况下是十六进制转储的VSL记录,但在API端,而不是在 varnishd 。这既节省了VSL带宽,又节省了处理能力,因为它们通常只用于深度调试,并且大多数情况下都是关闭的。

这个 VCC 编译器在两个方面做了大量工作:

符号表已经完全改版,以使其为各种符号做好准备,目前符号在 vcl 4.0vcl 4.1

VMOD共享库中的“Prototype”信息已被更改为JSON(如果您不相信我,请查看您的vcc_if.c文件),这可以表达更详细的信息,目前是可选参数。

只有我们关心的东西

Varnishtest‘s process 已经成长为 pty(4) 支持,这样我们就可以像我们自己的实用程序一样测试基于诅咒的程序。

这(终于!)将我们的代码覆盖率提高到了90%,覆盖了项目中的所有源代码。

我们还决定使我们的python脚本与PEP8兼容,并且 vmodtool.py 已经在那里了。

VCL变量现在在 .rst 文件,而不是反过来,这会使文档变得更好,但代价是略微增加了python脚本的复杂性。

我们现在从以下位置生成每周快照 -trunk ,这使得人们更容易测试所有的新东西。

我们还没有完全控制住每半年发布一次的程序。

我在发布的前一天晚上写下了这篇文章,试图从我的大脑中挤出我很久以前就应该在这里写下的东西,而我们上周收到的承诺远远超过了合理的水平。

但是我们 have 做得更好了。

真的!

eof