4.13. 动态编程语言、网页和数据库服务器
nodejs:18
模块流现已全面支持
以前作为技术预览提供的 nodejs:18
模块流,随着 RHSA-2022:8832 公告的发布而完全支持。nodejs:18
模块流现在提供 Node.js 18.12
,它是一个长期支持(LTS)版本。
Node.js 18
包括在 RHEL 9.1 中,与 Node.js 16
相比,提供了许多新功能,以及程序错误和安全修复。
主要变更包括:
-
V8
引擎已升级至版本 10.2。 -
npm
软件包管理器已升级至 8.19.2 版本。 -
Node.js
现在提供了一个新的实验性fetch
API。 -
Node.js
现在提供了一个新的实验性node:test
模块,它便于创建以 test Anything Protocol (TAP)格式报告结果的测试。 -
Node.js
现在更喜欢使用 IPv6 地址,而不是 IPv4。
要安装 nodejs:18
模块流,请使用:
# dnf module install nodejs:18
(BZ#2083072)
新模块流: php:8.1
RHEL 9.1 添加 PHP 8.1
作为新的 php:8.1
模块流。
使用 PHP 8.1
,您可以:
- 使用枚举 (Enums) 功能,定义仅限于离散值数的自定义类型
-
使用
readonly
修饰符声明属性,以防止在初始化后修改属性 - 使用光纤、全堆栈、中断功能
要安装 php:8.1
模块流,请使用:
# dnf module install php:8.1
有关 RHEL 9 上 PHP 用法的详情,请参阅 使用 PHP 脚本语言。
(BZ#2070040)
新模块流:ruby:3.1
RHEL 9.1 在新的 ruby:3.1
模块流中引入了 Ruby 3.1.2
。与 RHEL 9.0 提供的 Ruby 3.0
相比,这个版本提供了很多性能改进、程序错误和安全修复以及新功能。
主要改进包括:
-
Interactive Ruby
(IRB)工具现在提供自动完成功能以及文档对话框 -
新的
debug
gem,它替换了lib/debug.rb
,提供了改进的性能,并支持远程调试和多进程/多线程调试 -
error_highlight
gem 现在在 backtrace 中提供精细的错误位置 - 现在可以省略哈希文本数据类型和关键字参数中的值
-
pin 运算符(
^
)现在接受模式匹配中的表达式 - 现在,可以在单行模式匹配省略括号
- YJIT 一种新的实验性进程内实时(JIT)编译器,现在在 AMD 和 Intel 64 位构架上提供
-
已引进了
TypeProf For IDE
工具,这是 IDE 中Ruby
代码的实验性静态类型分析工具。
以下性能改进已在基于方法的实时编译器(MJIT)中实现了:
-
对于像
Rails
这样的工作负载,默认的最大 JIT 缓存值从 100 增加到 10000 -
当启用了 class 事件的
TracePoint
时,使用 JIT 编译的代码将不再被取消
其他显著变化包括:
-
tracer.rb
文件已被删除 -
自版本 4.0 起,
Psych
YAML 解析器默认使用secure_load
方法
要安装 ruby:3.1
模块流,请使用:
# dnf module install ruby:3.1
(BZ#2063773)
httpd
更新到版本 2.4.53
Apache HTTP 服务器已更新至 2.4.53 版本,它比 RHEL 9.0 发布的版本 2.4.51 提供了程序错误修正、功能增强和安全修复。
mod_proxy
和 mod_proxy_connect
模块中的显著变化包括:
-
mod_proxy
:控制器名称的长度限制已增加 -
mod_proxy
:您现在可以选择性地为后端和前端配置超时 -
mod_proxy
:现在您可以通过设置SetEnv proxy-nohalfclose
参数来禁用 TCP 连接重定向 -
mod_proxy
和mod_proxy_connect
:禁止在将状态代码发送到客户端后更改状态代码
另外,在表达式 API 中添加了新的 ldap
功能,这有助于防止 LDAP 注入漏洞。
httpd
配置中 LimitRequestBody
指令的新默认值
要修复 CVE-2022-29404,Apache HTTP 服务器中的 LimitRequestBody
指令的默认值已从 0
(无限)变为 1 GiB。
在 httpd
配置文件中没有明确指定 LimitRequestBody
的值系统上,更新 httpd
软件包会将 LimitRequestBody
设为默认值 1 GiB。因此,如果 HTTP 请求正文的总大小超过这个 1 GiB 默认限制,则 httpd
会返回 413 Request Entity Too Large
错误码。
如果 HTTP 请求消息正文的新默认允许的大小不满足您的用例,请在相应的上下文中(服务器、每目录、每文件或每位置)更新您的 httpd
配置文件,并以字节为单位设置您的首选限制。例如,要设置一个新的 2 GiB 限制,请使用:
LimitRequestBody 2147483648
已被配置为使用 LimitRequestBody
指令的任何显式值的系统不受此更改的影响。
(BZ#2128016)
新软件包:httpd-core
从 RHEL 9.1 开始,所有基本文件的 httpd
二进制文件已移至新的 httpd-core
软件包,以便在需要基本 httpd
功能的情况下限制 Apache HTTP 服务器的依赖项,如容器中。
httpd
软件包现在提供 systemd
- 相关文件,包括 mod_systemd
、mod_brotli
以及文档。
在这个版本中,httpd
软件包不再提供 httpd
模块魔法号 (MMN) 值。相反,httpd-core
软件包现在提供 httpd-mmn
值。因此,无法从 httpd
软件包获取 httpd-mmn
。
要获得安装的 httpd
二进制文件的 httpd-mmn
值,您可以使用 apxs
二进制文件,这是 httpd-devel
软件包的一部分。要获取 httpd-mmn
值,请使用以下命令:
# apxs -q HTTPD_MMN 20120211
(BZ#2065677)
pcre2
更新到版本 10.40
提供 Perl 兼容正则表达式库 v2 的 pcre2
软件包已更新至版本 10.40。
在这个版本中,与 Perl 5.32
中的相应变化一致,在 lookaround 断言时使用 \K
转义序列被禁止。如果依赖以前的行为,您可以使用 PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK
选项。请注意,当设定这个选项时,\K
只接受正的断言,但会在负断言中忽略。