6.13. 动态编程语言、网页和数据库服务器
RHEL 10 中的 Python 3.12
Python 3.12 是 RHEL 10 中的默认 Python 实现。Python 3.12 作为 BaseOS 存储库中的非模块化 python3
RPM 软件包被分发,通常被默认安装。Python 3.12 将支持 RHEL 10 的整个生命周期。
其他版本的 Python 3 将通过 AppStream 存储库作为具有较短生命周期的 RPM 软件包发布,并可并行安装。python
命令(/usr/bin/python
)和其他 Python 相关的命令(如 pip
)位于未指定版本的表单中,并指向默认的 Python 3.12 版本。
与之前发布的 Python 3.11 相比,显著改进包括:
-
Python 引入了一个用于通用类和函数的新
type
语句和新类型参数语法。 - 格式化的字符串字面(f-string)已在语法中被正式化,现在被直接集成到解析器中。
- Python 现在提供一个唯一的每解释器全局解释器锁(GIL)。
- 现在,您可以使用 Python 代码中的缓冲协议。
-
CPython
中的字典、列标和理解现在是内联的。这显著提高了理解执行的速度。 -
CPython
现在支持 Linuxperf
分析器。 -
CPython
现在对支持的平台提供堆栈溢出保护。 -
Python 3.12 使用 GCC 的
-O3
优化标记进行编译,该标记已默认在上游使用。因此,您可以观察到 Python 应用程序和解释器的性能有所提高。
例如,要从 Python 3.12 堆栈安装软件包,您可以使用以下命令:
dnf install python3 dnf install python3-pip
# dnf install python3
# dnf install python3-pip
例如,要运行解释器,例如,您可以使用以下命令:
python python3 python3 -m pip --help
$ python
$ python3
$ python3 -m pip --help
Jira:RHELDOCS-18402[1], Jira:RHEL-45315
RHEL 10 引入了 Perl 5.40
RHEL 10 包括 Perl 5.40,与以前可用的 5.32 版本相比,其提供了各种改进。
内核改进:
- Perl 现在支持 Unicode 15.0。
-
现在,您可以使用一个新的
-g
命令行选项,它是 umask 选项-0777
的一个别名。 -
-M
命令行选项现在接受空格。 -
新的
内置
模块现在为新的始终存在的功能提供文档。 -
添加了一个新的
try/catch
功能。 - 弃用警告现在有特定的子类来提供精细的控制。请注意,您仍然可以在单个声明中禁用所有弃用警告。
-
@INC
钩子已被改进,包括$INC
变量和新的INCDIR
方法。 -
现在在编译时间会检测流出
defer
和finally
模块的控制流。 -
在模式中使用
(?{ … })
和(?{ … })
现在会在该模式中全局禁用各种优化。 -
REG_INF
正则表达式引擎限定符的限制已从 65,536 增加到 2,147,483,647。 -
新的正则表达式变量
${^LAST_SUCCESSFUL_PATTERN}
允许访问当前范围中匹配的最后一个成功的模式。 -
引入了一个新的
__CLASS__
关键字。 -
Perl 现在支持一个新的
^^
逻辑 XOR 运算符。
不兼容的更改:
-
物理空
sort
函数现在会触发一个编译时间错误。 -
readline()
函数不再清除流错误和 EOF 标志。 -
INIT
块不再在BEGIN
块内的exit()
函数后运行。 -
对未知软件包调用
import
方法现在会产生一条警告。 -
return
函数不再允许一个间接对象。 - 错误和警告中的更改现在可以在测试中导致失败。
-
物理空
弃用:
-
将
'
字符用作软件包名称分隔符已弃用。 -
switch
功能和智能匹配运算符~~
已被弃用。 -
使用
goto
函数从外部范围跳到内部范围已弃用。
-
将
内部更改:
- 已删除多个已弃用的 C 函数。
-
内部 C API 功能现在在支持它的平台上使用
__attribute__(hidden)
属性隐藏。这意味着它们不再从这些平台上的 XS 模块调用。
模块:
-
Term::Table
和Test2::Suite
模块已添加到 Perl Core 中。 - 大多数模块都已更新。
-
如需更多信息,请参阅 perl5340delta
,perl5360delta
,perl5380delta
和 perldelta
手册页。
Jira:RHELDOCS-18869[1]
RHEL 10 引入了 Ruby 3.3
RHEL 10 包括 Ruby 3.3.7。这个版本提供了几个性能改进、程序错误和安全修复以及新功能:
主要改进包括:
-
您可以使用新的
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,请输入:
dnf install ruby
# dnf install ruby
有关 Ruby 3.3 的支持长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期。
Jira:RHELDOCS-19658[1]
RHEL 10 提供了 Node.js 22
RHEL 10 与 Node.js 22
一起分发。与之前可用的 Node.js 20
相比,这个版本提供了许多新功能、bug 修复、安全修复和性能改进。
主要变更包括:
-
V8
JavaScript 引擎已升级至版本 12.4。 -
现在在可用的构架(AMD 和 Intel 64 位构架和 64 位 ARM 架构)上默认启用了
V8 Maglev
编译器。 -
Maglev
提高了短期 CLI 程序的性能。 -
npm
软件包管理器已升级至 10.8.1 版本。 -
node --watch
模式现在被视为稳定。在watch
模式下,监视文件中的更改导致Node.js
进程重启。 -
与浏览器兼容的
WebSocket
实现现在被视为稳定,并默认启用。因此,提供了 Node.js 的 WebSocket 客户端,而没有外部依赖。 -
Node.js
现在包含从package.json
执行脚本的一个实验性功能。要使用这个功能,请运行node --run <script-in-package.json>
命令。
要安装 Node.js 22,请输入:
dnf install nodejs
# dnf install nodejs
RHEL 10 引入了 PostgreSQL 16
RHEL 10 与 PostgreSQL 版本 16 一起分发。
主要改进包括:
- 增强的批量加载提高了性能。
-
libpq
库中的新的load_balance_hosts
选项支持更高效的负载均衡。 -
/var/lib/pgsql/data/
目录中的配置文件支持包括自定义pg_hba.conf
和pg_ident.conf
文件。 -
/var/lib/pgsql/data/pg_hba.conf
文件支持匹配数据库和角色条目的正则表达式。
其他更改包括:
-
没有
postmaster
二进制文件。改为使用postgres
二进制文件。此更改仅影响使用postmaster
启动服务的用户。 - 软件包中没有 PDF 文档。改为使用 上游文档。
如需更多信息,请参阅使用 PostgreSQL。
要安装 PostgreSQL 16,请输入:
dnf install postgresql16
# dnf install postgresql16
RHEL 10 引入了 MySQL 8.4
RHEL 10 与 MySQL 8.4 一起分发。与之前提供的 8.0 版本相比,主要变化包括:
-
弃用的
mysql_native_password
身份验证插件不再启用。 -
当升级到 MySQL 8.4 时,具有
BINLOG_ADMIN
特权的用户帐户或角色会自动被授予TRANSACTION_GTID_TAG
特权。 -
安装 MySQL 8.4 时,会在服务器的数据目录中创建或更新
mysql_upgrade_history
文件。文件为 JSON 格式,包括有关安装的版本、安装的日期和时间的信息,以及发行版本是否是长期支持(LTS 系列)或创新系列的一部分。 -
在数据库中授权使用
%
和_
字符作为通配符已被弃用,通配符功能将在以后的 MySQL 发行版本中被删除。这些字符将被视为文字。当partial_revokes
服务器系统变量设为ON
时,它们已被视为文字。 -
在检查特权时,服务器将
%
字符视为 localhost 的同义词已被弃用。 -
弃用的
--ssl
和-admin-ssl
服务器选项及have_ssl
和have_openssl
服务器系统变量已被删除。改为使用--tls-version
和--admin-tls-version
服务器系统变量。 -
弃用的
default_authentication_plugin
系统变量已被删除。改为使用authentication_policy
服务器系统变量。 -
弃用的
SET_USER_ID
特权已被删除。改为您可以将SET_ANY_DEFINER
特权用来创建定义器对象,以及用于孤立对象保护的ALLOW_NONEXISTENT_DEFINER
特权。 -
弃用的
mysql_upgrade
工具已被删除。
如需更多信息,请参阅 上游 MySQL 文档。
RHEL 10 提供了带有 pgvector
扩展的 PostgreSQL 16
RHEL 10 与 PostgreSQL 16 一起分发。除了 pgaudit
,pg_repack
和 decoderbufs
扩展外,Postgreql 堆栈现在还提供 pgvector
扩展。使用 pgvector
扩展,您可以直接存储和查询 PostgreSQL 数据库中嵌入的高维度向量,并执行向量相似性搜索。向量嵌入的是通常在机器学习和 AI 应用程序中使用的数据的数字表示,用来捕获文本的语义含义、镜像或其他数据类型。
Jira:RHEL-35993[1]
RHEL 10 引入了 MariaDB 10.11
RHEL 10 与 MariaDB 10.11 一起分发。主要变更包括:
- 新的 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、pipe 或 memory。
Jira:RHELDOCS-19550[1]