4.9. 动态编程语言、网页和数据库服务器
RHEL 8 中提供的 Python 3.12
RHEL 8.10 引入了 Python 3.12,由新软件包 python3.12
提供,以及为其构建的软件包套件,以及 ubi8/python-312
容器镜像。
与之前发布的 Python 3.11 相比,显著改进包括:
-
Python 引入了一个用于通用类和函数的新
type
语句和新类型参数语法。 - 格式化的字符串字面(f-string)已在语法中被正式化,现在被直接集成到解析器中。
- Python 现在提供一个唯一的每解释器全局解释器锁(GIL)。
- 现在,您可以使用 Python 代码中的缓冲协议。
-
为提高安全性,SHA1、SHA3、SHA2-384、SHA2-512 和 MD5 加密算法的内置
hashlib
实现已被 HACL* 项目的正式验证代码替代。如果 OpenSSL 没有提供它们,则内置的实现仍可用。 -
CPython
中的字典、列标和理解现在是内联的。这显著提高了理解执行的速度。 -
CPython
现在支持 Linuxperf
分析器。 -
CPython
现在对支持的平台提供堆栈溢出保护。
要从 python3.12
堆栈安装软件包,请使用,例如:
# yum install python3.12 # yum install python3.12-pip
要运行解释器,请使用,例如:
$ python3.12 $ python3.12 -m pip --help
如需更多信息,请参阅 安装和使用 Python。
有关 Python 3.12 的支持长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期。
Python 中的一个控制电子邮件地址解析的新环境变量
为缓解 CVE-2023-27043,一个向后兼容的更改,以确保在 Python 3 中引入了更严格的电子邮件地址的解析。
此更新引入了一个新的 PYTHON_EMAIL_DISABLE_STRICT_ADDR_PARSING
环境变量。当您将此变量设置为 true
时,以前的、不太严格的解析行为是整个系统的默认设置:
export PYTHON_EMAIL_DISABLE_STRICT_ADDR_PARSING=true
但是,对受影响函数的单个调用可能仍然启用更严格的行为。
您可以通过使用以下内容创建 /etc/python/email.cfg
配置文件来取得相同的结果:
[email_addr_parsing] PYTHON_EMAIL_DISABLE_STRICT_ADDR_PARSING = true
如需更多信息,请参阅知识库文章 缓解 Python 中引入更严格的电子邮件地址解析的 CVE-2023-27043。
Jira:RHELDOCS-17369[1]
新模块流:ruby:3.3
RHEL 8.10 在新的 ruby:3.3
模块流中引入了 Ruby 3.3.0。与 RHEL 8.7 一起发布的 Ruby 3.1
相比,这个版本提供了几个性能改进、程序错误和安全修复以及新功能。
主要改进包括:
-
您可以使用新的
Prism
解析器而不是Ripper
。Prism
是 Ruby 语言的一个可移植的、容错的和可维护的递归下降解析器。 - YJIT,Ruby 即时(JIT)编译器实现,不再是实验性的,它提供了主要的性能改进。
-
改进了
Regexp
匹配算法,以减少潜在的正则表达式拒绝服务(ReDoS)漏洞的影响。 - 新的实验性 RJIT (一个纯 Ruby JIT)编译器取代了 MJIT。在生产环境中使用 YJIT。
- 现在提供了一个新的 M:N 线程调度程序。
其他显著变化:
-
现在,您必须使用
Lrama
LALR 解析器生成器,而不是Bison
。 - 已删除了几个弃用的方法和常量。
-
Racc
gem 已从默认 gem 提升到捆绑 gem。
要安装 ruby:3.3
模块流,请使用:
# yum module install ruby:3.3
如果要从以前的 ruby
模块流升级,请参阅 切换到后期的流。
有关 Ruby 3.3 的支持长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期。
Jira:RHEL-17090[1]
新模块流:php:8.2
RHEL 8.10 添加了 PHP 8.2,它比版本 8.0 提供了几个程序错误修复和增强。
使用 PHP 8.2
,您可以:
- 使用枚举(Enums)功能,定义一个仅限于离散的可能值之一的自定义类型。
-
使用
readonly
修饰符声明一个属性,以防止在初始化后修改属性。 - 使用光纤、全栈和可中断功能。
- 使用只读类。
- 声明几个新的独立类型。
-
使用一个新的
Random
扩展。 - 在特征中定义约束。
要安装 php:8.2
模块流,请使用以下命令:
# yum module install php:8.2
如果要从以前的 php
流升级,请参阅 切换到后期的流。
有关 RHEL 8 上 PHP 用法的详情,请参阅 使用 PHP 脚本语言。
有关 php
模块流的支持长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期。
Jira:RHEL-14705[1]
perl-DateTime-TimeZone
模块的 name()
方法现在返回时区名称
perl-DateTime-TimeZone
模块已更新至版本 2.62,它将 name()
方法返回的值从时区别名改为主时区名称。
如需更多信息和示例,请参阅知识库文章 perl-DateTime-TimeZone API 中与时区名称和别名相关的更改 。
一个新模块流:nginx:1.24
nginx 1.24 web 和代理服务器现在作为 nginx:1.24
模块流提供。与之前发布的版本 1.22 相比,这个版本提供了几个程序错误修复、安全修复、新功能和增强。
与传输层安全(TLS)相关的新功能和更改:
-
当在
ssl_session_cache
指令中使用共享内存时,加密密钥现在会自动为 TLS 会话票据进行轮转。 - 内存使用率已在带有安全套接字层(SSL)代理的配置中进行了优化。
-
现在,您可以使用
resolver
指令的ipv4=off
参数在解析时禁用查找 IPv4 地址。 -
nginx 现在支持
$proxy_protocol_tlv_*
变量,其存储出现在 PROXY v2 TLV 协议中的 Type-Length-Value (TLV)字段的值。 -
ngx_http_gzip_static_module
模块现在支持字节范围。
其他更改:
- 标头行现在在内部 API 中表示为链接列表。
-
nginx 现在在
ngx_http_perl_module
的$r->header_in()
方法中和查找$http_...
,$sent_http_...
,$sent_trailer_...
,$upstream_http_...
和$upstream_trailer_..
变量的过程中连接传递给 FastCGI、SCGI 和 uwsgi 后端的相同名称的头字符串。 - 如果重新定义侦听套接字的协议参数,nginx 现在会显示一个警告。
- 如果管道被客户端使用了,则 nginx 现在关闭与 lingering 的连接。
-
各种 SSL 错误的日志记录级别已降低,例如从
Critical
降到Informational
。
要安装 nginx:1.24
流,请使用:
# yum module install nginx:1.24
要从以前的 nginx
流升级,请 切换到后期流。
如需更多信息,请参阅设置和配置 NGINX。
有关 nginx
模块流的支持长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期 文章。
Jira:RHEL-14714[1]
一个新模块流:mariadb:10.11
MariaDB 10.11 现在作为新模块流 mariadb:10.11
提供。与之前可用的版本 10.5 相比,显著的改进包括:
-
一个新的
sys_schema
功能。 - 原子数据定义语言(DDL)语句。
-
一个新的
GRANT ...TO PUBLIC
特权。 -
单独的
SUPER
和READ ONLY ADMIN
特权。 -
一个新的
UUID
数据库数据类型。 - 支持安全套接字层(SSL)协议版本 3;MariaDB 服务器现在需要正确配置的 SSL 才能启动。
-
通过
natural_sort_key()
函数支持自然排序顺序。 -
一个新的用于任意文本格式化的
SFORMAT
函数。 - 对 UTF-8 字符集和 UCA-14 排序规则的更改。
-
systemd
套接字激活文件在/usr/share/
目录中提供。请注意,与上游相反,它们不是 RHEL 中默认配置的一部分。 -
包含
MariaDB
字符串而不是MySQL
的错误消息。 - 中文语言中提供的错误消息。
- 对默认 logrotate 文件的更改。
-
对于 MariaDB 和 MySQL 客户端,命令行上指定的连接属性(如
--port=3306
)现在强制客户端和服务器之间通信的协议类型,如tcp
、socket
、管道
或memory
。
有关 MariaDB 10.11 中更改的更多信息,请参阅 MariaDB 10.5 和 MariaDB 10.11 之间的显著区别。
有关 MariaDB 的更多信息,请参阅 使用 MariaDB。
要安装 mariadb:10.11
流,请使用:
# yum module install mariadb:10.11
如果要从 mariadb:10.5
模块流升级,请参阅 从 MariaDB 10.5 升级到 MariaDB 10.11。
有关 mariadb
模块流的支持长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期。
一个新模块流:postgresql:16
RHEL 8.10 引入了 PostgreSQL 16,它比版本 15 提供了几个新功能和增强。
主要改进包括:
- 增强的批量加载提高了性能。
-
libpq
库现在支持连接级负载均衡。您可以使用新的load_balance_hosts
选项来获得更有效的负载平衡。 -
现在,您可以创建自定义配置文件,并将其包含在
pg_hba.conf
和pg_ident.conf
文件中。 -
PostgreSQL 现在支持与
pg_hba.conf
文件中的数据库和角色条目匹配的正则表达式。
其他更改包括:
-
PostgreSQL 不再与
postmaster
二进制文件一起分发。使用提供的systemd
单元文件(systemctl start postgres
命令)启动postgresql
服务器的用户不受这个更改的影响。如果您之前通过postmaster
二进制文件直接启动了postgresql
服务器,则您现在必须使用postgres
二进制文件。 - PostgreSQL 不再在软件包中提供 PDF 格式的文档。改为使用 在线文档。
另请参阅 使用 PostgreSQL。
要安装 postgresql:16
流,请使用以下命令:
# yum module install postgresql:16
如果要从 RHEL 8 中早期的 postgresql
流升级,请按照 切换到后期流 中描述的流程操作,然后迁移 PostgreSQL 数据,如 迁移到 PostgreSQL 的 RHEL 8 版本 中所述。
有关支持的 postgresql
模块流长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期。
Git rebase 到版本 2.43.0
Git 版本控制系统已更新至版本 2.43.0,与之前发布的版本 2.39 相比,它提供了 bug 修复、增强和性能改进。
主要改进包括:
-
现在,您可以将新的
--source
选项与git check-attr
命令一起使用,来从提供的 tree-ish 对象,而不是当前工作目录读取.gitattributes
文件。 -
Git 现在可以将信息从
WWW-Authenticate
response-type 标头的传递到凭证帮助程序。 -
对于空提交,
git format-patch
命令现在会写一个包含提交标头的输出文件,而不是创建一个空文件。 -
现在,您可以使用
git blame --contents=<file> <revision> -- <path>
命令,来通过指向<revision>
的历史记录查找在<file>
内容开始的行的源。 -
git log --format
命令现在接受%(decorate)
占位符来进一步自定义,以扩展--decorate
选项提供的能力。
Jira:RHEL-17103[1]
Git LFS rebase 到版本 3.4.1
Git 大文件存储(LFS)扩展已更新至版本 3.4.1,与之前发布的版本 3.2.0 相比,它提供了 bug 修复、增强和性能改进。
主要变更包括:
-
git lfs push
命令现在从标准输入读取引用和对象 ID。 - Git LFS 现在在不依赖 Git 来处理替代的 remote。
-
Git LFS 现在支持
WWW-Authenticate
response-type 标头作为凭证帮助程序。
Jira:RHEL-17102[1]
提高了 Python 解释器的性能
RHEL 8 中所有支持的 Python 版本现在使用 -O3
优化标记编译,这是上游中的默认设置。因此,您可以观察到 Python 应用程序和解释器本身的性能的提高。
以下公告发行版本提供了这些更改:
-
python3.12
- RHSA-2024:6961 -
python3.11
- RHSA-2024:6962 -
python3
- RHSA-2024:6975 -
python39
模块 - RHSA-2024:5962
Jira:RHEL-49614[1], Jira:RHEL-49636, Jira:RHEL-49644, Jira:RHEL-49638