drupal 10.0.0-beta1发布

一、发行说明

这是Drupal下一个主要版本的测试版。Drupal 10测试版是为网站所有者和模块或主题作者设计的,用于测试Drupal 10.0的兼容性和升级路径。测试版不用于生产。

有关可用于检查模块、主题和站点的Drupal 10兼容性的工具,请参阅准备您的站点以升级到较新的主要版本。有关10.0.x开发的更多信息,请参见#3118143:[meta]2022年12月14日发布Drupal 10

10.0.x分支还包括所有最新的提交,这些提交将被后移植到9.5.x和更早的分支。10.0.x将与9.5.x几乎相同,除了:

不推荐的代码将被删除,包括整个不推荐的模块。

依赖项将根据需要更新为新的主要版本。

有关所有其他更改,请参阅9.5.x分支。

二、重要更新信息

运行9.3.x或更早版本的Drupal站点必须在更新到Drupal 10之前先更新到9.4.0或更高版本,因为9.4.0之前添加的所有核心更新都已被删除。

为了确保CKEditor数据正确升级到CKEditor 5,使用CKEditor的站点应在更新之前更新到Drupal 9.4.4或更高版本。通常,在更新到下一个主要版本之前,站点应更新到当前主要分支的最新版本。

三、平台需求变化

1、PHP要求

Drupal 10需要PHP 8.1。
PHP版本8.1.0-8.1.5的PHP OPcache有一个bug,可能会在运行时导致类自动加载的间歇性致命错误,因此建议使用PHP 8.1.6或更高版本。

在PHP版本达到其正式使用期限后,使用不受支持的PHP版本的站点的Drupal状态报告上将自动显示警告。这不会妨碍运行、更新或安装Drupal。查看有关不支持的PHP版本的手册文档以了解更多信息。

为了向站点提供最完整的信息,说明当前安装支持和推荐哪些PHP版本,\Drupal::MINIMUM_supported_PHP已被弃用,取而代之的是\Drupal \Core\PhpRequirements::minimumSupportedPhp()。

2、PostgreSQL要求

Drupal 10的PostgreSQL数据库驱动程序要求PostgreSQL12启用pg_trgm扩展。在未启用此扩展的情况下安装或更新PostgreSQL站点时,现在会显示需求错误。

3、SQLite要求

Drupal 10的SQLite数据库驱动程序需要带有json1扩展名的SQLite 3.26。在Drupal 9.4中,如果此扩展不可用,站点所有者将收到警告。在Drupal 10中,没有扩展就无法安装或更新Drupal。(有关使用其他计算数据库驱动程序检查JSON支持的信息,请参阅更改记录。)

4、MySQL要求

MySQL数据库要求MySQL数据库服务器要求与Drupal 9保持不变。(有关Drupal 10数据库服务器要求的更多信息)
5、不再支持Internet Explorer 11
Drupal 10不支持Internet Explorer 11,因为CKEditor 5不支持它。其他功能在Internet Explorer 11中已经不起作用,更多功能将在将来停止工作。有关详细信息,请参阅浏览器支持策略。

6、不再支持旧版本的UC浏览器

Drupal已经删除了对依赖Chrome分叉版本的旧版本UC浏览器的明确支持。依赖WebView的较新版本的浏览器应不受影响。

7、需要Composer 2.3.6

Drupal 10需要Composer 2.3.6或更高版本才能支持自动更新和PHP 8.2。核心开发人员必须至少更新到Composer 2.36才能使用Drupal核心,并且站点所有者将来可能会收到有关旧Composer版本的警告或错误。

8、多个核心模块和主题已从核心中移除并转移到贡献项目中

许多模块和主题已经从Drupal核心中移除,并转移到贡献项目中。在许多情况下,删除的扩展对站点开发几乎没有影响,并且可以安全地从站点中删除(或者很容易地替换为其他扩展,例如使用Claro主题代替Seven)。
依赖于删除的模块或主题的网站应在将网站更新到Drupal 10之前下载贡献的项目版本(手动或通过Composer要求下载)。Drush可能会在更新时忽略警告和错误消息。php与缺少的模块或主题相关。升级后,状态报告将显示有关缺少模块的错误,但缺少活动主题将导致致命错误和/或白色屏幕。

9、移除的模块

如果站点的功能需要移除的模块,则应在升级之前将贡献的版本下载到代码库或添加到Composer要求中。不要卸载模块,因为这会破坏模块配置。
除了以下更改,一些相关的CSS和模板已经从核心基础主题中删除,因此使用以下模块的网站可能需要更新其主题。

10、删除的主题

即使您不直接使用下面的主题,也应该检查您安装的主题是否扩展了它们。此信息可在.info中找到。主题的yml文件。例如,要查看主题/神话是否使用Classy作为基本主题,请检查主题/神话/神话.info。此行的yml:
base theme:classy
基本主题可能会扩展其他基本主题,因此如果列出了非核心基本主题,您还应该检查该主题是否扩展了以下主题之一(尤其是Classy或Stable)。

11、API changes

Entity API 更改

hook_entity_view_mode_alter()不再接收$context参数,该参数始终为空数组。hook_entity_view_mode_alter()的现有实现应删除$context参数。有关详细信息,请参见hook_entity_view_mode_alter()更改记录。
实体的范围验证器现在为Symfony 6.1兼容性生成更准确的“值不在范围内”消息,其违规错误代码也更准确地为range::not_in_range_error。

序列化程序更改

扩展Symfony Serializer组件的代码已更新为更严格的类型提示,并增加了与Symfoy 6.1和未来版本兼容的参数。有关更多信息,请查看从Symfony的Serializer组件扩展的代码中添加的change-record:Context参数。

已删除每个表前缀

Drupal以前支持复杂多站点设置的每个表前缀。自Drupal 8.2以来,此功能已被弃用。从Drupal 9.3.0开始,仍使用此功能的站点的状态报告上会显示警告,并且该功能已从Drupal10中删除。有关每个表前缀的替代方案,请参阅更改记录。
从核心测试运行程序中移除SimpleTest支持

Drupal 9.0.0之前,SimpleTest模块被移到了contrib。Drupal 10从核心测试运行程序中删除了对SimpleTest的支持。使用SimpleTest的项目应将其测试转换为PHPUnit。
Ajax命令现在可以返回promises
当Ajax命令需要在执行列表中的下一个Ajax指令之前确保某些代码已经执行时,它们现在可以返回promise。
当改变Drupal的成功方法时。Ajax对象,请确保返回Promise以确保正确执行。阅读有关Ajax系统中API更改的更多信息。。
画布外/设置托盘CSS现代化
画布外对话框的CSS已在Drupal 10.0.0中完全重构。这意味着,如果您的模块或主题以前为画布外对话实现了自定义CSS,则可能需要重新实现(如果只是错误修复,则可能会删除)。此外,已从Stable和Stable 9中删除了所有非画布CSS,以确保尽可能多的主题能够从改进中受益。阅读有关画布外和设置托盘CSS更改的更多信息。
功能JavaScript测试现在将因JavaScript错误而失败
测试中的JavaScript错误现在被捕获并作为测试失败而引发。以前,任何发生的不干扰测试功能的JavaScript都会被忽略。现在,这些错误已暴露给测试运行人员。
_serviceId属性不再添加到容器服务
为了与PHP 8.2兼容,不再将_serviceId属性添加到容器中的服务中。在自定义代码中依赖此属性的开发人员应该看到https://www.drupal.org/node/3292540作为替代方案。