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现在支持 Linuxperfprofiler。
- 
						CPython现在提供对支持的平台的堆栈溢出保护。
Python 3.12 和为它构建的软件包可以在同一个系统中与 Python 3.9 和 Python 3.11 并行安装。
				要从 python3.12 堆栈安装软件包,请使用:
			
dnf install python3.12 dnf install python3.12-pip
# dnf install python3.12
# dnf install python3.12-pip要运行解释器,例如:
python3.12 python3.12 -m pip --help
$ 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
export PYTHON_EMAIL_DISABLE_STRICT_ADDR_PARSING=true但是,对受影响函数的单个调用可能仍然启用更严格的行为。
				您可以通过使用以下内容创建 /etc/python/email.cfg 配置文件来取得相同的结果:
			
[email_addr_parsing] PYTHON_EMAIL_DISABLE_STRICT_ADDR_PARSING = true
[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 相比,这个版本提供了很多性能改进、程序错误和安全修复以及新功能。
				
主要改进包括:
- 
						您可以使用新的 Prismparser 而不是Ripper。Prism是可移植、错误容错和可维护的递归解析程序,用于 Ruby 语言。
- YJIT 是 Ruby 即时(JIT)编译器实现,不再是实验性的,它提供了主要的性能改进。
- 
						改进了 Regexp匹配算法,以减少潜在的正则表达式拒绝服务(ReDoS)漏洞的影响。
- 新的实验性 RJIT (纯 Ruby JIT)编译器取代了 MJIT。在生产环境中使用 YJIT。
- 现在提供了一个新的 M:N 线程调度程序。
其他显著变化:
- 
						现在,您必须使用 LramaLALR 解析器生成器而不是Bison。
- 删除了几个已弃用的方法和常量。
- 
						Raccgem 已从默认 gem 提升到捆绑的 gem。
				要安装 ruby:3.3 模块流,请使用:
			
dnf module install 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
# 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_tlvTOTP 变量,这些变量存储 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
# 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
# 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
# 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-Authenticateresponse-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-Authenticateresponse-type 标头作为凭证帮助程序。
Jira:RHEL-17101[1]