查看源代码 SASL 发行说明

本文档描述了对 SASL 应用程序所做的更改。

SASL 4.2.2

改进和新特性

  • 文档已迁移为使用 Markdown 和 ExDoc。

    自有 ID:OTP-18955 辅助 ID:PR-8026

SASL 4.2.1

已修复的错误和故障

  • 改进了当 .app 参数包含重复项时 systools:make_script 的错误消息。将检查的参数包括模块、应用程序和已注册项。

    自有 ID:OTP-18300 辅助 ID:PR-6389

SASL 4.2

已修复的错误和故障

  • 修复了当执行 src_tests 时,systools:make* 会递归搜索源代码的问题。

    自有 ID:OTP-17752 辅助 ID:PR-5302

改进和新特性

  • 现在,Erlang 安装目录在文件系统上是可重定位的,前提是安装的 RELEASES 文件中的路径是相对于安装根目录的路径。release_handler:create_RELEASES/4 函数可以在其 RootDir 参数设置为空字符串时生成带有相对路径的 RELEASES 文件。

    自有 ID:OTP-17304

SASL 4.1.2

已修复的错误和故障

  • 修复了 systools:make_script/1 文档中的错误。

    自有 ID:OTP-17854 辅助 ID:PR-5596

SASL 4.1.1

已修复的错误和故障

  • 使 release_handler 在升级期间对退出进程更具弹性。与 sasl-4.0.1 (OTP 23.1) 中发布的 OTP-16744 相同类型的错误修复。

    自有 ID:OTP-17748 辅助 ID:GH-5387, PR-5389

SASL 4.1

改进和新特性

  • 已删除实验性的 HiPE 应用程序,以及其他应用程序中的所有相关功能。

    *潜在的不兼容性*

    自有 ID:OTP-16963

  • 识别应用程序资源文件中的新键 'optional_applications'。

    自有 ID:OTP-17189 辅助 ID:PR-2675

  • saslreltool 生成的文件中删除了时间戳,以实现确定性构建。

    自有 ID:OTP-17292 辅助 ID:PR-4685, PR-4684

SASL 4.0.2

已修复的错误和故障

  • 修复了在升级版本时,当主应用程序和依赖应用程序都被删除后,依赖应用程序会在主应用程序之后停止的问题。

    示例:在版本中,app1 依赖于 app2,我们应该使用版本升级删除 app1 和 app2。当版本升级完成时,应该先停止并清除 app1,然后再清除 app2,否则当其依赖项被删除时,app1 可能会开始崩溃。

    此错误修复更改了删除的顺序,使其正确。

    自有 ID:OTP-17113 辅助 ID:ERL-1410 PR-2882

SASL 4.0.1

已修复的错误和故障

  • 使 release_handler 在升级期间对退出进程更具弹性。

    自有 ID:OTP-16744 辅助 ID:ERL-1247, PR-2666

SASL 4.0

改进和新特性

  • 删除对 I/O 协议的旧请求的使用和文档。

    自有 ID:OTP-15695

  • systools:make_script/2 现在接受要创建的引导文件的名称,它不仅限于 RelName.bootstart.boot

    systools:make_tar/2 现在接受选项 extra_files 以将任何额外的非发行版相关文件添加到 tar 文件中。

    自有 ID:OTP-16561 辅助 ID:PR-2420

  • systools:make_tar/1,2 现在会过滤掉发行版 tar 包中包含的 erts 中的任何工具。请参阅文档了解更多详细信息。

    *潜在的不兼容性*

    自有 ID:OTP-16603

SASL 3.4.2

改进和新特性

  • 添加了一个套接字“注册表”,使其可以列出当前打开的套接字。

    自有 ID:OTP-16309

SASL 3.4.1

改进和新特性

  • net 模块已拆分为 'net' (kernel) 和 prim_net (预加载)。

    自有 ID:OTP-15765

SASL 3.4

改进和新特性

  • 将 erts 调用的第一个模块名称更改为 erl_init,而不是 otp_ring0。sasl 中的 systools 已更新以反映此更改。

    自有 ID:OTP-15336 辅助 ID:PR-1825

SASL 3.3

改进和新特性

  • 新的 countersatomics 模块提供了对可变固定字长变量进行高效操作的访问。

    自有 ID:OTP-13468

SASL 3.2.1

已修复的错误和故障

  • 改进了文档。

    自有 ID:OTP-15190

SASL 3.2

改进和新特性

  • Erlang/OTP 添加了一个新的日志记录 API,请参阅 logger 手册页,以及 Kernel 用户指南中的 日志记录 部分。

    error_logger 的调用会自动重定向到新的 API,并且仍然可以使用旧的错误记录器事件处理程序。但是,建议在编写新代码时直接使用 Logger API。

    请注意以下潜在的不兼容性

    • Kernel 配置参数 error_logger 仍然有效,但如果使用 Kernel 配置参数 logger 配置了默认处理程序的输出目标,则会被覆盖。

      通常,用于配置错误记录器的参数会被用于配置 Logger 的新参数覆盖。

    • SASL 错误日志记录的概念已被弃用,这意味着默认情况下,SASL 应用程序不会影响记录哪些日志事件。

      默认情况下,supervisor 报告和崩溃报告由 Kernel 启动的默认 Logger 处理程序记录,并最终到达与 Erlang/OTP 中其他标准日志事件相同的目标(终端或文件)。

      默认情况下不会记录进度报告,但可以通过将主日志级别设置为 info 来启用,例如使用 Kernel 配置参数 logger_level

      要获得与早期版本中的 SASL 错误日志记录功能向后兼容性,请将 Kernel 配置参数 logger_sasl_compatible 设置为 true。这将阻止默认 Logger 处理程序记录任何 supervisor 报告、崩溃报告或进度报告。相反,SASL 在应用程序启动期间添加一个单独的 Logger 处理程序,该处理程序负责处理这些日志事件。SASL 配置参数 sasl_error_loggersasl_errlog_type 指定这些事件的记录目标(终端或文件)和严重级别。

    由于 Logger 是 Erlang/OTP 21.0 中的新功能,我们确实保留了在此版本之后的补丁中引入 Logger API 和功能更改的权利。这些更改可能与初始版本向后兼容,也可能不向后兼容。

    *潜在的不兼容性*

    自有 ID:OTP-13295

  • 已删除旧的过时的“状态检查”工具(模块 sisi_sasl_sup)。

    *潜在的不兼容性*

    自有 ID:OTP-14469

  • 创建发行版 tar 文件时,systools 现在会包含 sys.config.src (如果它存在于 $ROOT/releases/<vsn>/ 目录中)。这是为了允许在解压发行版之后但在安装之前进行调整,例如解析环境变量。此功能需要一个自定义工具,该工具使用 sys.config.src 作为输入并创建一个正确的 sys.config 文件。

    自有 ID:OTP-14950 辅助 ID:PR-1560

SASL 3.1.2

修复的错误和故障

  • 当使用指令 'restart_new_emulator' 进行升级时,生成的临时引导文件使用了旧版本中的 'kernelProcess' 语句,而不是新版本中的。现在已修正此问题。

    此修正对于升级到 OTP-21 是必需的。

    自有 ID: OTP-15017

SASL 3.1.1

修复的错误和故障

  • 报表浏览器 rb 早期无法处理非列表的报表,例如由 error_logger:info_report({some, tuple}) 生成的报表。此项允许作为 error_logger 的输入,但 rb 会声明 “遇到了格式错误的报表”。现在已修正此问题。

    自有 ID: OTP-13906 辅助 ID: ERL-261

SASL 3.1

改进和新特性

  • 通用的 Unicode 改进。

    自有 ID: OTP-14462

  • release_handlerreltool 生成的文件(可能包含 Unicode 字符)现在编码为 UTF-8,并以 “~tp” 或 “~ts” 格式写入。如果该文件要由 file:consult/1 读取,则会添加编码注释。

    自有 ID: OTP-14463

  • SASL 错误日志事件处理程序 sasl_report_file_h 现在默认以 UTF-8 编码打开其日志文件。这可以在配置 SASL 时被覆盖,请参阅 SASL 参考手册中的配置参数 sasl_error_logger

    自有 ID: OTP-14618

SASL 3.0.4

修复的错误和故障

  • .app 文件中记录的 'mod' 和 'start_phases' 字段的默认值在 .app 文件中不允许作为实际值。现在已修正此问题。

    自有 ID: OTP-14029

改进和新特性

  • 由于包含任意 Unicode 字符的原子而进行的各种更新。

    自有 ID: OTP-14285

SASL 3.0.3

修复的错误和故障

  • 当同时为 systools:make_script 或 systools:make_relup 提供 'warnings_as_errors' 和 'silent' 选项时,如果发生警告,则不会返回错误原因。而是仅返回原子 'error'。现在已修正此问题。

    选项 'warnings_as_errors' 和 'no_warn_sasl' 现在也允许用于 systools:make_tar。

    自有 ID: OTP-14170

SASL 3.0.2

修复的错误和故障

  • code:add_pathsa/1 和命令行选项 -pa 在代码路径开头添加目录时,都会反转给定的目录列表。现在已对此进行记录。

    自有 ID: OTP-13920 辅助 ID: ERL-267

SASL 3.0.1

改进和新特性

  • 改进了对脏调度器的支持。现在可以在无需等待所有正在进行的脏 NIF 调用完成的情况下,执行模块的清除操作。

    请注意,在启用对脏调度器的支持时,从 ERTS 版本 8.1 开始将启用一种新的清除策略。此新策略与默认使用的策略不完全向后兼容。有关详细信息,请参阅 erlang:check_process_code/3 的文档。

    自有 ID: OTP-13808 辅助 ID: OTP-13833

  • 引入了一种新的清除策略。新策略在 OTP 19 版本中默认禁用,但在 OTP 20 版本中将是唯一可用的策略。

    新策略与 OTP 19 中默认使用的策略略有不兼容。使用默认策略,持有引用正在清除的模块的 fun 的进程要么无法进行软清除,要么会在硬清除期间被杀死。新策略完全忽略 fun。如果存在引用正在清除的代码的 fun,并在清除后使用,则在使用时会引发异常。也就是说,其行为与进程在清除后收到 fun 时的情况完全相同。

    在 OTP 19 期间构建 OTP 时,可以选择启用新策略,并且如果运行时系统构建时支持脏调度器,则会自动启用新策略。

    有关详细信息,请参阅 erlang:check_process_code/3 的文档。

    自有 ID: OTP-13833

SASL 3.0

改进和新特性

  • 模块 'overload' 已被移除。

    *潜在的不兼容性*

    自有 ID: OTP-13184

SASL 2.7

修复的错误和故障

  • 在升级期间,release_handler 会收集 supervisor pid 的列表,以便列出 supervisor 树中的所有进程。如果其中一个 supervisor(合法地)在 release_handler 可以检查它之前退出,那么早期会使用死 pid 调用 sys:get_status/1,从而导致 'noproc' 错误。此问题已得到纠正。

    自有 ID: OTP-13291

改进和新特性

  • 模块 overload 已被弃用,将在 OTP 19 中删除。

    自有 ID: OTP-13057

  • 改进了 supervisor 子进程计数的实现,使其对于 simple_one_for_one supervisor 的动态进程更快、更准确。

    自有 ID: OTP-13290

SASL 2.6.1

改进和新特性

  • 文档改进

    自有 ID: OTP-13000

SASL 2.6

改进和新特性

  • 引入了一种机制,用于限制内置错误记录器事件生成的文本量。这对于限制日志文件的大小和用于生成日志的 CPU 时间都非常有用。

    这种机制是实验性的,因为如果事实证明它不能解决它应该解决的问题,它可能会被更改。在这种情况下,这种机制可能会有向后不兼容的改进。

    请参阅 Kernel 应用程序中的配置参数 error_logger_format_depth 的文档,了解如何启用此功能。

    自有 ID: OTP-12864

SASL 2.5

修复的错误和故障

  • 删除了未记录的升级指令 {remove_module,PrePurge,PostPurge,DepMods}。 此指令在 OTP R7B 中添加是为了对称性,但从未记录或测试过。

    现在记录了现有的指令 {add_module,Mod,DepMods},并添加了补充指令 {delete_module,Mod,DepMods}

    *潜在的不兼容性*

    自有 ID: OTP-11540

改进和新特性

  • sasl_error_logger 配置参数现在支持值 {file,FileName,Modes},这允许以写入以外的模式(例如,追加模式)打开日志文件。

    自有 ID: OTP-12778

SASL 2.4.1

修复的错误和故障

  • 文档错误地指定 alarm_handler:clear_alarm/1 将清除具有 id AlarmId所有警报。现在已根据实现进行了更正 - 只有由简单的默认处理程序清除具有给定 AlarmId 的最新收到的警报。

    自有 ID: OTP-12025

SASL 2.4

修复的错误和故障

  • 升级指令 'restart_application' 早期会忽略 .rel 文件中配置的重启类型,并且始终将应用程序重启为 permanent。现在已更改此行为,并使用 .rel 文件中的重启类型。如果重启类型为 'load',则只会加载应用程序,而不会启动。如果重启类型为 'none',则不会加载或启动应用程序,但会加载应用程序中的所有模块。(感谢 Tobias Schlager 报告此问题)

    *潜在的不兼容性*

    自有 ID: OTP-11716

  • 如果 systools:make_script/2duplicate_modules 而失败,并且未使用 silent 标志,则当 systools 尝试格式化错误消息时,会发生因 function_clause 而引起的崩溃。此问题已得到纠正。(感谢 Jean-Sébastien Pédron)

    自有 ID: OTP-11819

改进和新特性

  • 对带有 'spawn' 的 erlang:open_port/2 的调用进行了更新,以处理命令路径中的空格。

    自有 ID: OTP-10842

  • 添加了一些更多文档,以解释当升级包含 ERTS、Kernel、STDLIB 或 SASL 的新版本时会发生什么。

    自有 ID: OTP-11717

SASL 2.3.4

修复的错误和故障

  • 除非配置为这样做,否则不要尝试在 sasl 中添加 log_mf_h 处理程序。感谢 Richard Carlsson。

    自有 ID: OTP-11464

  • 修复了有关 SASL 中错误处理程序的令人困惑的文档。(感谢 Richard Carlsson)

    自有 ID: OTP-11507

  • Erlang/OTP(模拟器、kernel、stdlib、sasl)核心部件升级机制中的一个错误导致中间 .script/.boot 文件中 stdlib 和 sasl 之间的路径切换。该错误是随着 R15B 中的此升级机制一起引入的。现在已对其进行纠正。(感谢 Tobias Schlager)

    自身 ID: OTP-11529

改进和新特性

  • 添加了一个启动文件,该文件在启动时跳过加载“$HOME/.erlang”文件。通过使用“erl -boot no_dot_erlang”启动 erlang 来启用。

    *与 false 不兼容 *

    自身 ID: OTP-8479 辅助 ID: seq11510

SASL 2.3.3

改进和新特性

  • 在 rb 日志中添加 Fd 使用情况。感谢 Eric Pailleau。

    自身 ID: OTP-11252

SASL 2.3.2

修复的 Bug 和故障

  • 修复了在带有 BEAM 模块的 erl_eval 中的 receive 支持。感谢 Anthony Ramine。

    自身 ID: OTP-11137

SASL 2.3.1

改进和新特性

  • 对 systools 和 release_handler 进行了一些更新,以处理 Unicode。

    自身 ID: OTP-10782

SASL 2.3

修复的 Bug 和故障

  • release_handler_SUITE:otp_9864 删除了 release_handler_SUITE_data 目录的部分内容,因此如果不重新安装,测试套件就无法执行两次。此问题已得到纠正。

    自身 ID: OTP-10394 辅助 ID: kunagi-187 [98]

  • 在 .app 文件中的 'modules' 列表中,不再允许使用 {Mod,Vsn}

    虽然这在 .app 文件参考手册中从未记录,但之前是允许的。不过,它在 application:load/[1,2] 的文档中是可见的,其中与 .app 文件中相同的术语可以用作第一个参数。

    由于 Vsn 部分从未被使用,因此该功能已被删除。

    *潜在的不兼容性*

    自身 ID: OTP-10417

  • release_handler:upgrade_script 和 release_handler:downgrade_script 无法读取带有正则表达式的 appup 文件。此问题已得到纠正。(感谢 Ulf Wiger)

    自身 ID: OTP-10463

改进和新特性

  • 在必要时,已向 Erlang 文件添加了声明编码的注释。当 UTF-8 成为默认编码时,该注释将在 Erlang/OTP R17B 中删除。

    自身 ID: OTP-10630

SASL 2.2.1

修复的 Bug 和故障

  • 如果 sys.config 存在,但不可读或不可解析,则在升级之后和下一次节点重启之前不会检测到此问题。通过向 systools:make_tar 添加检查,减少了这种情况发生的可能性,如果 sys.config 或 relup 没有合理的内容,则会使 tar 文件的创建失败。请注意,没有详细的检查,只有解析和 Erlang 术语格式检查。

    自身 ID: OTP-9539

  • systools:make_script 允许在 .rel 文件中使用 {kernel,Vsn,load},从而导致一个仅加载内核而不启动它的 .boot 文件。此问题已得到纠正。现在只允许内核和 stdlib 使用默认的启动类型“permanent”。

    自身 ID: OTP-9652

  • release_handler:remove_release/1 现在可以正确处理符号链接文件

    自身 ID: OTP-9864

  • 如果在 .rel 文件中声明 stdlib 的启动类型与 permanent 不同,则 systools 会错误地指出 sasl 的启动类型有误。此问题已得到纠正。

    自身 ID: OTP-9888

  • Sasl 文档之前说 .rel 文件中的 InclApps 参数默认为空列表。这是不正确的。它默认为 .app 文件中指定的值。此问题已得到纠正。

    自身 ID: OTP-9980

  • .app 文件中在 {applications,Apps} 中列出的应用程序,无法通过 systools:make_script/1,2 正确排序。它们的顺序与在 .app 文件中列出的顺序相反。此问题已得到纠正,现在它们按照在 .rel 文件中列出的顺序(即,它们在 .app 文件中列出的顺序不再重要)排序(在彼此之间内部排序)。

    *潜在的不兼容性*

    自身 ID: OTP-9984

  • 现在,.appup 文件的文档还指出,可以将 UpFromVsnDownToVsn 指定为正则表达式,以避免重复的升级指令。

    自身 ID: OTP-10001

  • Reltool 有时会生成一个包含 {start_phases,undefined} 的 .app 文件,这会导致 systools 在解析时出现异常。此问题已得到纠正,reltool 现在如果值为 undefined,则会省略 start_phases 条目。(感谢 Juan Jose Comellas)

    为了与 reltool 对齐,sasl 还将省略 .script 文件中值为 undefinedstart_phases 条目。

    自身 ID: OTP-10003

SASL 2.2

修复的 Bug 和故障

  • 修复了升级仿真器的机制。

    kernel、stdlib 和 sasl 的 appup 文件现在可以识别两个主要版本,并包含“restart_new_emulator”指令。

    Appup 文件可以包含用于匹配早期版本的正则表达式。

    用于升级仿真器的机制已更改,因此“restart_new_emulator”将是执行的第一个指令。在仿真器重启后,将执行其余的升级指令。

    添加了一个新的升级指令“restart_emulator”,用于在所有其他升级指令之后重启仿真器的情况。

    *潜在的不兼容性*

    自身 ID: OTP-9438

  • 添加 release_handler:which_releases/1

    这是 which_releases 的扩展,允许用户指定他们希望返回的版本的状态。例如,它允许快速确定哪个版本是“permanent”,而无需解析整个版本列表。(感谢 Joe Williams)

    自身 ID: OTP-9717

  • 在发布 tar 文件中的 releases/Vsn 中添加 rel 文件的副本

    systool:make_tar 将 rel 文件存储在 releases 目录中。当使用 release_handler:unpack_release 解包时,该文件会自动移动到 releases/Vsn/。但是,如果手动解包 tar 文件,则该文件可能不会移动,并且下一个解包的版本可能会覆盖 rel 文件。为了克服这个问题,systools:make_tar 现在直接在 releases/Vsn/ 中存储 rel 文件的副本,并且不再需要在解包后移动该文件。

    将文件保留在 releases 目录中的原因还在于,需要在知道发布版本 (Vsn) 之前单独提取该文件。

    自身 ID: OTP-9746

SASL 2.1.10

修复的 Bug 和故障

  • Windows 服务上的 release_handler 功能已损坏。此问题已得到纠正。

    自身 ID: OTP-9306

  • 如果应用程序的新版本不包含任何 Erlang 模块更改,则除非为应用程序添加“load_object_code”指令,否则 release_handler 不会更新应用程序的代码路径。如果例如仅更改了 priv 目录中的某些文件,则对 code:lib_dir 或 code:priv_dir 的调用将指向应用程序的旧位置,这就会成为一个问题。此问题已得到纠正 - 现在将为所有已更改的应用程序(即,当应用程序的 vsn 在 .rel 文件中更改时)调用 code:replace_path/2。

    自身 ID: OTP-9402

  • 如果删除的模块未加载,则 appup 指令“delete_module”会在升级期间导致崩溃。此问题已得到纠正。

    自身 ID: OTP-9417

  • 如果路径仅作为“ebin”而不是例如“./ebin”给出,则 systools:make_tar 会在 filename:join/1 中出现 function_clause 异常而失败。此问题已得到纠正。(感谢 Nikola Skoric 的报告)。

    自身 ID: OTP-9507

  • 实现或修复 -Werror 选项

    如果启用了 -Werror 并且存在警告,则不会写入输出文件。此外,请确保错误/警告报告一致。(感谢 Tuncer Ayaz)

    自身 ID: OTP-9536

  • 改进了 release_handler:install_release 期间超时的错误信息。

    此补丁解决了升级期间发生超时的两种情况。1) 如果 supervisor 被挂起(从 supervisor 获取子项的调用将挂起)2) 如果 supervisor 的子规范错误地声明它是一个具有动态模块集的 worker(从 gen_event 获取模块的调用将挂起)

    现在将打印错误报告,并且 release_handler:install_release 的返回值将指示发生了什么。(感谢 joe williams)

    自身 ID: OTP-9546

改进和新特性

  • 当系统中有许多进程时,release_handler:install_release 可能会非常慢。为了改进这一点,已经在 erts 和 release handler 中进行了一些优化工作。

    release_handler:check_install_release 添加了一个新选项 purge,可以先调用该选项,以加快 release_handler:install_release 的执行速度。

    自身 ID: OTP-9395

SASL 2.1.9.4

修复的 Bug 和故障

  • 当 release_handler 具有 Master 列表时,删除从文件系统读取的痕迹

    release_handler 和 release_handler_1 中的几个地方假设它有一个磁盘可以读取,而在 erl_prim_loader Loader (而不是 efile) 的情况下,情况并非总是如此

    添加 check_paths/2 以在存在 Master 列表时执行与 check_path/1 等效的操作

    更改 get_vsn 以不再发送文件路径,而是使用 Bin,因为将文件路径发送到 beam_lib:version 会使其读取本地文件系统

    添加 get_current_vsn/1 作为 beam_lib:version(code:which(Mod)) 的等效项,但使用 erl_prim_loader:get_file 而不是从本地文件系统读取

    (感谢 Steven Gravell)

    自身 ID: OTP-9142

  • rb:stop 有时会返回 {error,running}。这来自 supervisor:delete_child,并且当 rb_server 在调用此函数时尚未终止时发生。现在调用 supervisor:terminate_child,而不是对 rb_server 进行单独的 gen_server 调用以停止该进程。这是一个同步函数 - 即它会等待进程实际终止后才返回。

    修复了 rb:scan_files 中的文件描述符泄漏问题。读取后,索引文件从未关闭。

    修复了 rb:filter 行为中的不匹配问题,当过滤器包含“no”时。此类过滤器现在将返回所有不匹配的报告,而不仅仅是“proplist”报告。

    自身 ID: OTP-9149

  • rb:filter/2 的开始和结束日期在帮助文本中指定为 {{Y-M-D},...} 而不是 {{Y,M,D},...}。此问题已得到纠正。

    自身 ID: OTP-9166

  • 如果与 log_mf_h 错误处理程序相关的某些(但不是全部)sasl 环境变量缺失,sasl 会成功启动,但会静默跳过启动 log_mf_h。现在已对此进行修正,如果提供了三个变量中的一个或两个,sasl 启动将失败。如果未提供任何变量,sasl 将像以前一样启动,而不会启动 log_mf_h。

    自有 ID:OTP-9185

改进和新特性

  • 更改默认行为,在创建发布时不检查源代码

    向 systools:make_script 和 systools:make_tar 添加新选项 src_tests。旧选项 no_module_tests 现在被忽略,因为这是默认行为。

    *潜在的不兼容性*

    自有 ID:OTP-9146 辅助 ID:seq11803

SASL 2.1.9.3

改进和新特性

  • 在构建 relup 文件时,遵守 .rel 文件中的启动类型

    以前,无论其在发布文件中的启动类型如何,relup 文件总是为 UpTo/DowFrom 发布文件中出现的每个应用程序包含一个 application:start(Application, permanent) 应用指令。

    新的实现通过遵守 rel(5) 格式的启动类型来修复此错误。如果启动类型为 none,则 relup 中不包含任何应用行。如果启动类型为 load,则 relup 仅包含加载应用程序的指令。否则,relup 将包含根据相应类型启动应用程序的指令。

    此修复通过向 add_application 高级 appup 指令添加一个新参数来实现。此新参数在 appup(5) 中有文档说明。

    自有 ID:OTP-9097

SASL 2.1.9.2

修复的错误和故障

  • 在 R13B04 中,sys:get_status 被修改为在回调模块导出该函数时调用回调模块中的 format_status/2。这导致了从在 supervisor 模块上调用 sys:get_status 返回的项发生变化,因为 supervisor 是一个 gen_server,而 gen_server 导出 format_status。sasl release_handler_1 模块依赖于在 supervisor 上调用时 sys:get_status 返回的 pre-R13B04 项,因此 R13B04 的更改破坏了该依赖性。

    此问题已通过更改 release_handler_1 来修复,以处理 sys:get_status 可以从 supervisor 返回的 pre-R13B04 和 R13B04 项。

    自有 ID:OTP-8619 辅助 ID:seq11570

SASL 2.1.9.1

改进和新特性

  • 在 SASL 应用程序中,对 gen_server:call() 的所有调用都使用无限超时。

    自有 ID:OTP-8506 辅助 ID:seq11509

SASL 2.1.9

改进和新特性

  • re:grep/1 函数现在使用 're' 模块而不是已弃用的 'regexp' 模块。现在有新的函数 rb:filter/1rb:filter/2,用于更轻松地过滤报告。(感谢 Alvaro Videla。)

    自有 ID:OTP-8443

  • 现在有一个新的函数 sasl_report:format_report/3,其工作方式与现有的 sasl_report:write_report/3 函数相同,只是它返回一个格式化字符串。请注意,目前没有关于 sasl_report 模块的文档。(感谢 Jay Nelson。)

    自有 ID:OTP-8445

  • 根据 tidier 的建议进行清理,并更新类型和规范。

    自有 ID:OTP-8455

SASL 2.1.8

改进和新特性

  • 文档现在使用大多数平台上存在的开源工具 (xsltproc 和 fop) 构建。一个明显的变化是移除了框架。

    自有 ID:OTP-8201

SASL 2.1.7

改进和新特性

  • 在交互模式下运行的 Windows 实用程序 Erlsrv 现在接受用于注册 Windows 注册表数据库内部服务名称和描述字段的选项。

    自有 ID:OTP-8132

SASL 2.1.6

修复的错误和故障

  • 当使用 SASL 应用程序配置参数 masters 时,即使文件 FileName 存在,有时也会返回错误元组 {error,{no_such_file,{Master,FileName}}}

    自有 ID:OTP-7667

改进和新特性

  • 添加了缺少的预加载模块

    自有 ID:OTP-7820

SASL 2.1.5.4

改进和新特性

  • 消除了 Dialyzer 警告

    自有 ID:OTP-7635

SASL 2.1.5.3

改进和新特性

  • 小的改动。

    自有 ID:OTP-7388

SASL 2.1.5.2

改进和新特性

  • 小的更新。

    自有 ID:OTP-6998

SASL 2.1.5.1

改进和新特性

  • 小的 Makefile 更改。

    自有 ID:OTP-6689

  • 过时的保护测试(如 list())已替换为现代保护测试(如 is_list())。

    自有 ID:OTP-6725

SASL 2.1.5

修复的错误和故障

  • erlsrv:get_service/2release_handler:do_write_file/2systools_relup:foreach_baserel_up/7systools_relup:foreach_baserel_dn/7 中删除了一些无效代码。

    自有 ID:OTP-6499

SASL 2.1.4

改进和新特性

  • systools 中的函数添加了一个选项 {outdir,Dir},使您可以指定应将启动脚本、relup 文件或发布包文件放置在哪个目录中。

    此外,当使用 systools:make_tar/2 创建发布包文件时,现在也会在当前工作目录和 path 选项指定的任何目录中搜索启动脚本、relup 文件和 sys.config,而不仅仅是在 .rel 文件的目录中。

    作为这项工作的一部分,一些小错误已得到纠正

    • 如果无法打开 .script 和/或 .boot 文件进行写入,systools:make_script/1,2 现在返回 error,而不是 ok
    • systools:make_tar/1,2 现在可以处理包含路径的 RelName 参数。以前,这会导致 .rel 文件最终出现在生成的 tar 文件中的错误目录中。
    • 关于 systools:make_tar/1,2 的文档错误:.rel 文件放置在 tar 文件中的 releases 目录中,而不是 releases/RelVsn 中。

    自有 ID:OTP-6226

SASL 2.1.3

修复的错误和故障

  • release_handler:upgrade_app/2release_handler:downgrade_app/2,3 -- 用于根据 .appup 文件测试应用程序升级和降级 -- 现在可以正确更新应用程序配置参数。(感谢 Serge Aleynikov)

    自有 ID:OTP-6162

SASL 2.1.2

修复的错误和故障

  • 修复了 Dialyzer 发现的 release_handler 中的一些小错误。

    自有 ID:OTP-6039

SASL 2.1.1

改进和新特性

  • release_handler 添加了许多函数,可以使用这些函数“动态地”根据 .appup 文件测试应用程序的升级和降级
    - upgrade_app/2
    - upgrade_script/2
    - downgrade_app/2,3
    - downgrade_script/3
    - eval_appup_script/4

    自有 ID:OTP-5858

SASL 2.1

改进和新功能

  • release_handler:install_release/2 添加了一个新的选项 {update_paths,Bool}。它指示是否应该更新所有应用程序的代码路径 (Bool==true),或者是否只应该更新已修改应用程序的代码路径 (Bool==false,默认值)。

    如果指定的应用程序目录不存在,release_handler:set_unpacked/2 现在会返回一个错误元组。

    *潜在的不兼容性*

    自有编号:OTP-5761

SASL 2.0.1

改进和新功能

  • 修复了一个错误,该错误导致无法在不报错的情况下调用两次 rb:show(N)N 为整数)。

    自有编号:OTP-5287