4.11. 动态编程语言、网页和数据库服务器
RHEL 9 中的 Python 3.12 可用
RHEL 9.4 引入了 Python 3.12,由新软件包 python3.12
提供,以及为它构建的软件包套件,以及 ubi9/python-312
容器镜像。
与之前发布的 Python 3.11 相比,显著改进包括:
-
Python 引入了用于通用类和函数的新
type
语句和新类型参数语法。 - 格式化的字符串字面(f-string)已在 grammar 中正式化,现在可以直接集成到解析器中。
- Python 现在提供唯一的 per-interpreter 全局解释器锁定(GIL)。
- 现在,您可以使用 Python 代码中的缓冲协议。
-
为提高安全性,SHA1、SHA3、SHA2-384、SHA2-512 和 MD5 加密算法的内置
hashlib
实现已被替换为 HACL* 项目中的正式验证代码。如果 OpenSSL 不提供它们,内置的实现仍保持可用。 -
CPython
中的字典、列出和设置复杂度现在被内联。这可显著提高理解执行速度。 -
CPython
现在支持 Linuxperf
profiler。 -
CPython
现在提供对支持的平台的堆栈溢出保护。
Python 3.12 和为它构建的软件包可以在同一个系统中与 Python 3.9 和 Python 3.11 并行安装。
要从 python3.12
堆栈安装软件包,请使用:
# dnf install python3.12 # dnf 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 9.4 在新的 ruby:3.3
模块流中引入了 Ruby 3.3.0。与 RHEL 9.1 一起提供的 Ruby 3.1
相比,这个版本提供了很多性能改进、程序错误和安全修复以及新功能。
主要改进包括:
-
您可以使用新的
Prism
parser 而不是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
模块流,请使用:
# dnf module install ruby:3.3
如果要从以前的 ruby
模块流升级,请参阅 切换到后期的流。
有关 Ruby 3.3 支持长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期。
Jira:RHEL-17089[1]
新模块流: php:8.2
RHEL 9.4 将 PHP 8.2 添加为新的 php:8.2
模块流。
这个版本的改进包括:
- readonly 类
- 几个新的独立类型
-
新的
随机
扩展 - 特征中的限制
要安装 php:8.2
模块流,请使用以下命令:
# dnf module install php:8.2
如果要从 php:8.1
流升级,请参阅 切换到更新的流。
有关 RHEL 9 上 PHP 用法的详情,请参阅 使用 PHP 脚本语言。
有关 php
模块流支持长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期。
Jira:RHEL-14699[1]
新模块流: nginx:1.24
nginx 1.24 web 和代理服务器现在作为 nginx:1.24
模块流提供。与之前发布的 1.22 版本相比,这个版本提供了很多 bug 修复、安全修复、新功能和增强。
与传输层安全(TLS)相关的新功能和更改:
-
现在,在
ssl_session_cache
指令中使用共享内存时,加密密钥会自动轮转 TLS 会话票据。 - 内存用量在带有安全套接字层(SSL)代理的配置中优化。
-
现在,您可以使用
resolver
指令的ipv4=off
参数在解析时禁用查找 IPv4 地址。 -
nginx 现在支持
$proxy_protocol_tlv
TOTP 变量,这些变量存储 PROXY v2 TLV 协议中 Type-Length-Value (TLV)字段的值。 -
ngx_http_gzip_static_module
模块现在支持字节范围。
其他更改:
- 标头行现在作为内部 API 中的链接列表表示。
-
nginx 现在会在
ngx_http_perl_module
的 $r->header_in()方法中的 $r->header_in ()
方法中与 FastCGI、SCGI 和 uwsgi 后端连接相同,并在查找$http_...
. ,$sent_http_...
$sent_trailer_...
,$upstream_http_...
, 和$upstream_trailer_..
变量. - 现在,如果重新定义侦听套接字的协议参数,nginx 会显示一个警告。
- 现在,如果客户端使用了 pipelining,则 nginx 现在关闭带有 lingering 的连接。
-
各种 SSL 错误的日志记录级别较低,例如从
Critical
到信息
。
要安装 nginx:1.24
流,请使用:
# dnf module install nginx:1.24
要从 nginx 1.22
流升级 ,请切换到更新的流。
如需更多信息,请参阅设置和配置 NGINX。
有关支持的 nginx
模块流长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期。
Jira:RHEL-14713[1]
新模块流: mariadb:10.11
MariaDB 10.11 现在作为新的模块流 mariadb:10.11
提供。与之前可用的版本 10.5 相比,显著改进包括:
-
新的
sys_schema
功能。 - Atomic 数据定义语言(DDL)声明.
-
新的
GRANT ...TO PUBLIC
权限。 -
单独的
SUPER
和READ ONLY ADMIN
权限。 -
新的
UUID
数据库数据类型。 - 支持安全套接字层(SSL)协议版本 3;MariaDB 服务器现在需要正确配置 SSL 才能启动。
-
通过
natural_sort_key ()
函数支持自然排序顺序。 -
新的
SFORMAT
功能,用于任意文本格式。 - 对 UTF-8 charset 和 UCA-14 冲突的更改。
-
/usr/share/
目录中的systemd
套接字激活文件。请注意,它们不是 RHEL 中默认配置的一部分,而不是上游。 -
包含
MariaDB
字符串而不是MySQL
的错误消息。 - 中文语言提供的错误消息。
- 更改默认 logrotate 文件。
-
对于 MariaDB 和 MySQL 客户端,命令行中指定的连接属性(如
--port=3306
)现在强制客户端和服务器间的协议通信类型,如tcp
、套接字
、管道
或内存
。
有关 MariaDB 的更多信息,请参阅使用 MariaDB。
要安装 mariadb:10.11
流,请使用:
# dnf module install mariadb:10.11
有关 mariadb
模块流支持长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期。
新模块流: postgresql:16
RHEL 9.4 引入了 PostgreSQL 16,作为 postgresql:16
模块流。与版本 15 相比,PostgreSQL 16 提供了很多新功能和增强。
主要改进包括:
- 增强的批量加载提高了性能。
-
libpq
库现在支持连接级别的负载均衡。您可以使用新的load_balance_hosts
选项更有效地负载平衡。 -
现在,您可以创建自定义配置文件,并将其包含在
pg_hba.conf
和pg_ident.conf
文件中。 -
PostgreSQL 现在支持与
pg_hba.conf
文件中的 database 和 role 条目匹配的正则表达式。
其他更改包括:
-
PostgreSQL 不再与
postmaster
二进制文件一起发布。使用提供的systemd
单元文件(systemctl start postgres
命令)启动postgresql
服务器的用户不受这个更改的影响。如果您通过postmaster
二进制文件直接启动postgresql
服务器,则现在必须使用postgres
二进制文件。 - PostgreSQL 不再提供软件包中的 PDF 格式文档。改为使用 在线文档。
另请参阅 使用 PostgreSQL。
要安装 postgresql:16
流,请使用以下命令:
# dnf module install postgresql:16
如果要从 RHEL 9 中的早期 postgresql
流升级,请按照 切换到更新的流中介绍的步骤进行,然后迁移 PostgreSQL 数据,如 迁移到 PostgreSQL 的 RHEL 9 版本 中所述。
有关支持的 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-17100[1]
Git LFS rebase 到版本 3.4.1
Git 大文件存储(LFS)扩展已更新至版本 3.4.1,与之前发布的版本 3.2.0 相比,它提供了 bug 修复、增强和性能改进。
主要变更包括:
-
git lfs push
命令现在可以从标准输入中读取引用和对象 ID。 - Git LFS 现在在不依赖 Git 的情况下处理替代远程。
-
Git LFS 现在支持
WWW-Authenticate
response-type 标头作为凭证帮助程序。
Jira:RHEL-17101[1]