查看源代码 asn1 发行说明

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

Asn1 5.3.1

修复的错误和故障

  • 修复了一个表面上无害的问题,即 ASN.1 编译器将 undec_rest 选项传递给 Erlang 编译器。

    自有 ID:OTP-19218 辅助 ID:GH-8779, PR-8781

Asn1 5.3

修复的错误和故障

改进和新功能

  • 已将规范添加到所有 asn1ct API 函数中。

    自有 ID:OTP-18804 辅助 ID:PR-7738

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

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

  • 用于 ASN.1 的 jer(JSON 编码规则)现在使用新的 json 模块来编码和解码 JSON。 因此,不再需要外部 JSON 库。

    自有 ID:OTP-19018 辅助 ID:PR-8241

Asn1 5.2.2

修复的错误和故障

  • 如果同时启用 BER 和 JER 后端,则包含命名 BIT STRING 值的 ASN.1 模块将无法编译。

    自有 ID:OTP-19039 辅助 ID:GH-8291,PR-8297

Asn1 5.2.1

修复的错误和故障

  • 修复了 gcc 11 中关于 free() 调用不匹配的良性警告。

    自有 ID:OTP-18844

Asn1 5.2

修复的错误和故障

  • ASN.1 编译器会忽略诸如 (SIZE (1..4), ...) 之类的约束,从而导致 PER 和 UPER 后端的编码和解码功能出现不正确的行为。已更正为以与 (SIZE (1..4, ...)) 相同的方式处理约束。

    自有 ID:OTP-18729 辅助 ID:PR-7575

改进和新功能

  • JER 后端已在内部进行了重构,以使其与使用已记录的 API 的应用程序兼容。但是,对于一组相互依赖的 ASN.1 模块(例如,S1AP-PDU-Descriptions、S1AP-Contents 等),如果重新编译了其中一个组成员,则必须重新编译该组中的所有模块。

    自有 ID:OTP-18748 辅助 ID:ERIERL-957,PR-7637

Asn1 5.1

修复的错误和故障

  • ASN.1 编译器过去会拒绝包含其他 RELATIVE-OID 值的正确指定的 RELATIVE-OID 值。现在已更正此问题。

    自有 ID:OTP-18534 辅助 ID:ERIERL-737,PR-7039

改进和新功能

  • 小的代码改进。

    自有 ID:OTP-18441

  • 通过在嵌入模式的启动顺序中添加一个额外步骤,改进了启动期间对 on_load 模块的处理,该步骤会运行所有 on_load 处理程序,而不是依赖于在内核监督树启动后稍后显式调用它们。

    这主要是代码改进和 OTP 内部简化,以避免将来的错误并简化代码维护。

    自有 ID:OTP-18447

Asn1 5.0.21.1

修复的错误和故障

  • 修复了 gcc 11 中关于 free() 调用不匹配的良性警告。

    自有 ID:OTP-18844

Asn1 5.0.21

修复的错误和故障

  • 对于 peruper ASN.1 编码规则,现在支持编码和解码具有 16384 个或更多项的 SEQUENCE OFSET OF 构造。

    自有 ID:OTP-18245 辅助 ID:ERIERL-859

Asn1 5.0.20

改进和新功能

  • 有一个新的配置选项,--enable-deterministic-build,它将在构建 Erlang/OTP 时应用 deterministic 编译器选项。deterministic 选项已得到改进,可消除多个应用程序中更多不确定性的来源。

    自有 ID:OTP-18165 辅助 ID:PR-5965

Asn1 5.0.19

修复的错误和故障

  • 原子 maybe 已在源代码中被引用。

    自有 ID:OTP-17980

Asn1 5.0.18.2

修复的错误和故障

  • 修复了 gcc 11 中关于 free() 调用不匹配的良性警告。

    自有 ID:OTP-18844

Asn1 5.0.18.1

修复的错误和故障

  • 对于 peruper ASN.1 编码规则,现在支持编码和解码具有 16384 个或更多项的 SEQUENCE OFSET OF 构造。

    自有 ID:OTP-18245 辅助 ID:ERIERL-859

Asn1 5.0.18

修复的错误和故障

  • 添加了对将 maps 选项与 jer 后端结合使用的支持。

    自有 ID:OTP-17959 辅助 ID:GH-5757

Asn1 5.0.17

修复的错误和故障

  • 带有扩展名 ("...") 的 SEQUENCE 的参数化类型导致编译器后端崩溃。之前在 GH-4514 中对此的修复并不完整。

    自有 ID:OTP-17522 辅助 ID:GH-4902

Asn1 5.0.16

修复的错误和故障

  • 修复了 asn1 编译器中可能导致其无法打开文件的错误。

    自有 ID:OTP-17387 辅助 ID:OTP-17123

Asn1 5.0.15.1

修复的错误和故障

  • 带有扩展名 ("...") 的 SEQUENCE 的参数化类型导致编译器后端崩溃。之前在 GH-4514 中对此的修复并不完整。

    自有 ID:OTP-17522 辅助 ID:GH-4902

Asn1 5.0.15

修复的错误和故障

  • 带有扩展名 ("...") 的 SEQUENCE 的参数化类型导致编译器后端崩溃。

    自有 ID:OTP-17227 辅助 ID:GH-4514

  • 对于 JER 编码规则,现在将在解码期间报告超出声明范围的 INTEGER 值作为错误。

    自有 ID:OTP-17306 辅助 ID:ERIERL-506

改进和新功能

  • 对于 JER 编码规则,现在在生成的 JSON 对象中保留了 SEQUENCE 中字段的声明顺序。以前使用映射,这导致字段的顺序未定义,对调试不友好。

    自有 ID:OTP-17297 辅助 ID:ERIERL-607

Asn1 5.0.14

改进和新功能

  • 为了在 Haiku 操作系统上构建而进行的更改。

    感谢 Calvin Buckley

    自有 ID:OTP-16707 辅助 ID:PR-2638

Asn1 5.0.13

修复的错误和故障

  • 遵守 hstring 和 bstring 词法项的 ASN.1 规范。也就是说,它们可以包含空格。

    自有 ID:OTP-16490

改进和新功能

  • 重构了已弃用和已删除函数的内部处理。

    自有 ID:OTP-16469

  • 改进了 CHOICE 中省略号的处理

    自有 ID:OTP-16554 辅助 ID:ERL-1189

Asn1 5.0.12

改进和新功能

  • 现在在生成的文件中禁止显示 no_match 类型的 Dialyzer 警告。

    自有 ID:OTP-16636 辅助 ID:ERIERL-145

Asn1 5.0.11

改进和新功能

  • 编译器现在对 JSON 编码规则(ITU-T X.697 ASN.1 编码规则:JavaScript 对象表示法编码规则规范)提供了有限的支持。

    自有 ID:OTP-16030

Asn1 5.0.10

改进和新功能

  • 修复了带有扩展名的 'DEFAULT' 和 'OCTET STRING' 以及 'SEQUENCE OF CHOICE'。

    自有 ID:OTP-16542 辅助 ID:PR-2159

Asn1 5.0.9

修复的错误和故障

  • 所有不正确的(即,所有)对 "can not" 的使用已在源代码注释、文档、示例等中更正为 "cannot"。

    自有 ID:OTP-14282 辅助 ID:PR-1891

  • 更正了以下值定义的问题

    • 带有扩展名的 SEQUENCE OF CHOICE 的值
    • 带有扩展名的 CHOICE 的值
    • 与 OCTET STRING 一起使用 DEFAULT

    自身 ID:OTP-15697 辅助 ID:PR-2159

Asn1 5.0.8

已修复的错误和故障

  • 在解码期间(仅限 BER)处理错误的长度,而不会崩溃。

    自身 ID:OTP-15470 辅助 ID:ERIERL-278

Asn1 5.0.7

已修复的错误和故障

  • 修复了 ASN.1 BER 解码中的一个错误。当解码递归封闭的项时,长度没有传播到该项的解码,因此如果封闭项的长度长于外层项,则不会检测到该错误。

    引入了用于解码递归 ASN.1 项的硬编码 C 堆栈限制。目前设置为 8 kWords,给出约 1000 层的嵌套深度。无法解码更深的项,但这应该不会是实际应用中的限制。

    自身 ID:OTP-14440 辅助 ID:ERIERL-220

Asn1 5.0.6

改进和新功能

  • 更新为使用新的字符串 API 而不是旧的。

    自身 ID:OTP-15036

Asn1 5.0.5.2

已修复的错误和故障

  • 在解码期间(仅限 BER)处理错误的长度,而不会崩溃。

    自身 ID:OTP-15470 辅助 ID:ERIERL-278

Asn1 5.0.5.1

已知错误和问题

  • 修复了 ASN.1 BER 解码中的一个错误。当解码递归封闭的项时,长度没有传播到该项的解码,因此如果封闭项的长度长于外层项,则不会检测到该错误

    引入了用于解码递归 ASN.1 项的硬编码 C 堆栈限制。目前设置为 8 kWords,给出约 1000 层的嵌套深度。无法解码更深的项,但这应该不会是实际应用中的限制。

    自身 ID:OTP-14440 辅助 ID:ERIERL-220

Asn1 5.0.5

已修复的错误和故障

  • 为生成的 ASN.1 辅助函数 to_bitstring/1 添加了 Dialyzer 抑制,该函数以前会创建不相关的警告。

    自身 ID:OTP-13882 辅助 ID:ERIERL-144

Asn1 5.0.4

已修复的错误和故障

  • 生成的解码器中,BER 编码和 undec_rest 选项存在问题。可能会抛出异常,而不是返回错误元组。

    自身 ID:OTP-14786 辅助 ID:ERL-518

  • 使用 no_ok_wrapperundec_rest 选项生成的解码器在 asn1ct:test 函数上崩溃。

    自身 ID:OTP-14787 辅助 ID:ERL-518

Asn1 5.0.3

已修复的错误和故障

  • 当 EnumTypeName 包含连字符(如 Cause-Misc)时,使用选项 {n2n, EnumTypeName} 编译 ASN.1 模块会导致编译生成的 Erlang 代码时出现语法错误。现在已纠正此问题。

    自身 ID:OTP-14495 辅助 ID:ERL-437

Asn1 5.0.2

已修复的错误和故障

  • 现在,默认值在 PER 的扩展中起作用,因此,如果使用原子 asn1_DEFAULT 而不是值,它将成为默认值。

    自身 ID:OTP-13011 辅助 ID:ERIERL-60

Asn1 5.0.1

已修复的错误和故障

  • 修复了由缺少外部调用的函数名引号导致的生成代码的编译错误。

    自身 ID:OTP-14519 辅助 ID:ERIERL-49

Asn1 5.0

已修复的错误和故障

  • 在具有 HiPE 尚不支持的 on_load 指令的模块中添加编译选项 -compile(no_native)

    自身 ID:OTP-14316 辅助 ID:PR-1390

改进和新功能

  • encodedecode 函数返回的 error 元组现在将包含堆栈回溯,以便更容易了解哪里出了问题。

    自身 ID:OTP-13961

  • 已删除已弃用的模块 asn1rt。已删除已弃用的函数 asn1ct:encode/3asn1ct:decode/3。已删除未记录的函数 asn1ct:encode/2

    * 可能的不兼容性 *

    自身 ID:OTP-14146

  • 新的“maps”选项将 SEQUENCESET 类型的表示形式更改为映射(而不是记录)。

    自身 ID:OTP-14219

Asn1 4.0.4

已修复的错误和故障

  • 在同一目录中使用并行 make (make -j) 编译多个 ASN.1 模块现在应该是安全的。

    自身 ID:OTP-13624

Asn1 4.0.3

改进和新功能

  • 内部更改

    自身 ID:OTP-13551

Asn1 4.0.2

已修复的错误和故障

  • 当编译为 PER 格式时,ASN.1 编译器在尝试编译具有超过 65536 个值和命名值的受约束 INTEGER 的 ASN.1 模块时会崩溃。(感谢 Ingars 报告此错误。)

    自身 ID:OTP-13257

  • 现在,ASN.1 编译器将为不正确的列表发出 Dialyzer 抑制。因此,在分析由 ASN.1 编译器生成的模块时,不再需要使用 --Wno_improper_lists

    自身 ID:OTP-13324

Asn1 4.0.1

已修复的错误和故障

  • 尝试在 BER 中编码一个空的命名 BIT STRING 会失败,并出现 function_clause 异常。(感谢 Svilen Ivanov 报告此错误。)

    自身 ID:OTP-13149

Asn1 4.0

已修复的错误和故障

  • ASN.1 编译器中已消除许多错误,使其现在可以成功编译更多的 ASN.1 规范。错误消息也得到了改进。

    自身 ID:OTP-12395

改进和新功能

  • asn1ct:test/1,2,3asn1ct:value/2 的文档已更新,其中包含有关函数限制的信息。

    自身 ID:OTP-12765 辅助 ID:seq12866, seq12867

Asn1 3.0.4

已修复的错误和故障

  • 如果 SEQUENCE 以双省略号 (...) 结尾,则 ASN.1 编译器会崩溃。

    自身 ID:OTP-12546 辅助 ID:seq12815

Asn1 3.0.3

已修复的错误和故障

  • 当解码 BER 时,将立即拒绝具有不确定长度的原语。(感谢 Simon Cornish 报告此错误。)

    自身 ID:OTP-12205

  • BER:修复了符合 X.680 (200811) s31.2.7 的一个错误。基本上,当 TagDefault 为 AUTOMATIC 时,标签是 IMPLICIT 的,除非给出 EXPLICIT。

    自身 ID:OTP-12318

  • EXTERNAL 1994 变体类型的使用已损坏。

    自身 ID:OTP-12326

Asn1 3.0.2

已修复的错误和故障

  • 已纠正 ASN.1 编译器在尝试编译正确规范时会崩溃的几个问题。

    自身 ID:OTP-12125

  • 提高了在解码不正确的 BER 消息时的鲁棒性。

    自身 ID:OTP-12145

Asn1 3.0.1

已修复的错误和故障

  • ASN.1 编译器现在生成不触发 Dialyzer 警告的代码。在此过程中,修复了一些小的错误。

    自身 ID:OTP-11372 辅助 ID:seq12397

Asn1 3.0

已修复的错误和故障

  • 子类型化一个可扩展的 ENUMERATED 会导致编译错误。(感谢 Morten Nygaard Åsnes 报告此错误。)

    自身 ID:OTP-11700

  • 当在规范中指定 OCTET STRING 的值时,ASN.1 标准明确指出该值必须是 bstring 或 hstring,而不是 cstring。如果 OCTET STRING 的值作为字符串给出,则 ASN.1 编译器现在将生成编译错误。

    也就是说,以下示例现在是非法的

    string OCTET STRING ::= "现在非法"

    * 可能的不兼容性 *

    自身 ID:OTP-11727

  • 以下应用程序的应用程序升级 (appup) 文件已更正

    asn1, common_test, compiler, crypto, debugger, dialyzer, edoc, eldap, erl_docgen, et, eunit, gs, hipe, inets, observer, odbc, os_mon, otp_mibs, parsetools, percept, public_key, reltool, runtime_tools, ssh, syntax_tools, test_server, tools, typer, webtool, wx, xmerl

    test_server 中添加了一个新的测试 appup 文件的实用工具。现在 OTP 中的大多数应用程序都在使用它。

    (感谢 Tobias Schlager)

    自身 ID: OTP-11744

改进和新特性

  • 通过在配置时使用 --enable-static-{nifs,drivers},现在可以将 nif 和驱动程序静态链接到 Erlang VM 主二进制文件中。目前,只有 Erlang/OTP 的 asn1 和 crypto nif 已经准备好进行静态链接。有关更多详细信息,请参阅系统文档中的安装指南。

    自身 ID: OTP-11258

  • peruper 后端的代码生成进行了一些改进。

    自身 ID: OTP-11573

  • OCTET STRING 和 BIT STRING 类型现在更自然地映射到 Erlang 类型(分别为二进制和位串),这更有效,并且可以避免列表和二进制/位串之间的无用转换。

    这是一个不兼容的更改。要恢复到旧的映射以支持现有应用程序,请使用 legacy_erlang_types 选项。

    影响:性能有提高的潜力,因为现在可以避免在生成的 ASN.1 编码/解码代码和应用程序本身中进行列表和二进制之间的转换。

    * 可能的不兼容性 *

    自身 ID: OTP-11594

  • asn1rt 模块中的所有函数,以及 asn1ct:decode/3asn1ct:encode/3,现在都已弃用。

    自身 ID: OTP-11731

  • 生成的 .hrl 文件现在受到保护,不会被多次包含。

    自身 ID: OTP-11804

Asn1 2.0.4

修复的错误和故障

  • BIT STRING 的默认值并不总是被识别,导致 DER/PER/UPER 编码不正确。

    自身 ID: OTP-11319

  • 如果 .erlang 文件向标准输出打印了一些内容,则 ASN.1 应用程序将无法构建。

    自身 ID: OTP-11360

  • INTEGER 约束中的整数范围的并集有时会被解释为范围的交集。

    自身 ID: OTP-11411 辅助 ID: seq12443

  • 可扩展的、多个单值约束(例如 INTEGER (1|17, ...))会被错误地编码。

    自身 ID: OTP-11415

  • ASN.1 编译器无法编译为扩展部分提供值的约束(例如 INTEGER (1..10, ..., 11..20))。

    自身 ID: OTP-11504

改进和新特性

  • 新的选项 'no_ok_wrapper' 生成不将返回值包装在 {ok,...} 元组中的 M:encode/2 和 M:decode/2 函数。

    自身 ID: OTP-11314

Asn1 2.0.3

修复的错误和故障

  • 大于 16383 字节的开放类型现在将被正确编码和解码。

    自身 ID: OTP-11262 辅助 ID: seq12386, OTP-11223

改进和新特性

  • 对于 PER 和 UPER 格式,代码生成,特别是编码,得到了改进。

    当编码 BIT STRING 时,值如果比 BIT STRING 类型的最大尺寸长,会被静默截断 - 现在它们会引发异常。

    大于 16383 字节的开放类型现在将被正确编码和解码。

    重要提示:对于彼此依赖的 ASN.1 规范,例如 S1AP-* 规范,重新编译所有规范非常重要(使用此版本的编译器编译某些规范,而使用旧版本编译某些规范将无法工作)。

    自身 ID: OTP-11300

Asn1 2.0.2

修复的错误和故障

  • 修复了一些不支持静默规则的 Makefile 规则。感谢 Anthony Ramine。

    自身 ID: OTP-11111

  • PER/UPER:具有非零下界的半约束 INTEGER 将被错误解码。此错误是在 R16 中引入的。

    PER/UPER:给定 INTEGER (10..MAX, ...),尝试解码任何小于 10 的整数将导致编码器进入无限循环。

    PER/UPER:对于具有可扩展 SIZE 约束的类型,根范围之外的大小将被错误地编码。

    给定一个诸如 (SIZE (5, ...)) 的约束,编码小于 5 的大小将失败 (PER/UPER)。类似地,对于 BER 解码也会失败。

    PER:编码器没有将长度为 16 位(正好)的已知乘数字符串(例如 IA5String)与八位字节边界对齐。

    在极少数情况下,UPER 后端的 DEFAULT 值可能会被错误地编码。

    自身 ID: OTP-11134

  • UPER:当编译具有超过 63 个扩展值的 ENUMERATED 时,编译器会崩溃。

    PER/UPER:无法解码具有超过 64 个扩展值的 SEQUENCE。

    自身 ID: OTP-11153

  • 当解码扩展添加组内联定义的 SEQUENCE 时,解码代码生成的记录名称与生成的 .hrl 文件中的名称不匹配。

    自身 ID: OTP-11154 辅助 ID: seq12339

改进和新特性

  • 不再需要用于生成 PDF 文件的 Postscript 文件。

    自身 ID: OTP-11016

Asn1 2.0.1.2

修复的错误和故障

  • 当对象集是一个实际参数时,对象集的扩展标记可能会丢失(这会导致未知值的解码失败)。

    自身 ID: OTP-10995 辅助 ID: seq12290

Asn1 2.0.1.1

修复的错误和故障

  • 为“per”和“uper”后端生成的解码器不能正确解码具有单个值的 ENUMERATED。

    为“per”和“uper”后端生成的编码器会为不需要编码的顶级类型(例如具有单个值的 ENUMERATED)生成一个空二进制文件。正确的结果应该是一个包含 0 字节的二进制文件。

    自身 ID: OTP-10916 辅助 ID: seq12270

Asn1 2.0.1

修复的错误和故障

  • 修复了 BER 后端中 SET OF 或 SEQUENCE OF 内的损坏的表约束。

    自身 ID: OTP-10853 辅助 ID: seq12245

Asn1 2.0

修复的错误和故障

  • 编码具有多个扩展添加组和可选值的 SEQUENCE 可能会失败(取决于规范以及是否提供了所有值)。

    自身 ID: OTP-10664

改进和新特性

  • ASN.1 编译器的选项已大大简化。通过使用 berperuper 来选择后端。不再需要 optimizenifdriver 选项。旧选项仍然有效,但会发出警告。

    另一个变化是,生成的 encode/2 函数将始终返回二进制文件(某些后端过去返回 iolist)。

    * 可能的不兼容性 *

    自身 ID: OTP-10410 辅助 ID: kunagi-254 [165]

  • ASN.1 编译器为 PER 和 UPER 生成更快的解码函数。对 PER/UPER 编码和 BER 后端也进行了一些小的改进。

    自身 ID: OTP-10519 辅助 ID: kunagi-322 [233]

  • ASN.1 编译器现在始终在生成的 Erlang 模块中包含必要的运行时函数(asn1rt_nif 仍然需要)。如果使用选项 'inline',ASN.1 编译器将生成警告。但如果使用 '{inline,OutputFile}',ASN.1 编译器将拒绝编译该文件。(如果需要删除输出文件,请使用 .set.asn 文件。)

    默认情况下,'BIT STRING' 类型现在将解码为 Erlang 位串。使用新的 legacy_bit_string 选项来编码为 1 和 0 的列表。(compact_bit_string 选项仍然像以前一样工作。)

    开放类型现在始终作为二进制文件返回(当没有允许解码它们的信息时)。

    * 可能的不兼容性 *

    自身 ID: OTP-10588 辅助 ID: kunagi-341 [252]

Asn1 1.8.1

修复的错误和故障

  • 使用选项 -bber_bin +optimize +nif 生成的 ASN.1 解码器会错误地解码大小大于 511 的开放类型。该错误可能导致 public_key 的解码失败。该错误位于 NIF 库 asn1_erl_nif.so 中;因此,无需重新编译有此问题的 ASN.1 规范。

    自身 ID: OTP-10805 辅助 ID: seq12244

  • 编码具有多个扩展添加组和可选值的 SEQUENCE 可能会失败(取决于规范以及是否提供了所有值)。

    自身 ID: OTP-10811 辅助 ID: OTP-10664

Asn1 1.8

修复的错误和故障

  • 现在可以使用大于先前 16^10 限制的上限来完成整数范围的编码和解码。约束整数的 per 编码和解码的新上限为 2^2040(接近 16^508)

    自身 ID: OTP-10128

  • 现在,对于整数类型的单个值子类型(其中子类型是预定义值),PER 编码/解码可以正确工作。之前,由于约束检查中的错误,预定义值可能导致生成的 Erlang 代码中出现无效的范围检查。

    内部 ID:OTP-10139

  • 修复了所选解码函数中的拼写错误(感谢 Artem Teslenko)

    内部 ID:OTP-10152

  • 在解码 BER 编码数据时检测到意外标签时,提供更好的错误指示。

    内部 ID:OTP-10186

  • asn1rt_check:修复了二进制输入下的 transform_to_EXTERNAL1990(感谢 Harald Welte)

    内部 ID:OTP-10233

改进和新功能

  • 增加对多个 ExtensionAdditionGroups 的支持

    内部 ID:OTP-10058

  • 在 n2n 生成的函数中增加对可扩展枚举类型的支持。

    内部 ID:OTP-10144

Asn1 1.7

改进和新功能

  • 一些先前 ASN.1 编译器未处理的 ASN.1 INTEGER 类型和 SEQUENCE 构造函数变体现在已得到正确处理

    内部 ID:OTP-9688

  • 具有值约束(使用联合)的 INTEGER(例如 X1 ::= INTEGER (1..4 | 6 | 8 | 10 | 20))处理不正确。对于 PER,该值以错误的位数进行编码。

    内部 ID:OTP-9946

Asn1 1.6.19

改进和新功能

  • 用于 BER 解码和 PER 编码的链接驱动程序已替换为 NIF。要启用 NIF 的使用,请在编译时将 nif 选项传递给 erlc 或 asn1rt:compile。如果您之前使用了链接驱动程序,则必须使用当前版本的 asn1 应用程序重新编译您的 ASN1 模块,因为链接驱动程序模块已被删除。

    * 可能的不兼容性 *

    内部 ID:OTP-9419

  • 在运行时处理 SEQUENCE OF 和 DEFAULT 时,用于编码和解码操作的一些繁重计算已移至编译时进行。

    内部 ID:OTP-9440

  • 使用 +nif 选项编译 ASN.1 ber 模块时,该模块将使用新的 NIF 进行 BER 编码,从而使性能提高约 5%。

    内部 ID:OTP-9441

  • 元组函数(包含模块名称和函数的二元组)现在已正式弃用,并将在 R16 中删除。请改用 'fun M:F/A'。为了让您知道您的系统正在使用元组函数,第一次应用元组函数时,将会向错误记录器发送警告。

    内部 ID:OTP-9649

Asn1 1.6.18

修复的错误和故障

  • 实现或修复 -Werror 选项

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

    内部 ID:OTP-9536

Asn1 1.6.17

修复的错误和故障

  • 修复了当 timer:tc 更改为不捕获时开始失败的测试用例。

    内部 ID:OTP-9286

  • 修正了当 TLV 的长度值是长定长时,asn1_erl_driver 中的边界检查。感谢 Vance Shipley。

    内部 ID:OTP-9303

Asn1 1.6.16

修复的错误和故障

  • asn1ct:使错误和警告的格式保持一致

    一致地格式化警告和错误报告。来自 erlc 的警告和错误选项现在也可以在 asnc1ct 中使用。(感谢 Tuncer Ayaz)

    内部 ID:OTP-9062

  • 关闭一些 dialyzer 警告

    内部 ID:OTP-9063

改进和新功能

  • 修复了 asn1ct_check 中的崩溃,componentrelation_leadingattr。(感谢 Stephane Pamelard 发现了这个错误)

    内部 ID:OTP-9092

Asn1 1.6.15

修复的错误和故障

  • 修正了 ExtensionAdditionGroup(对于 PER 和 UPER)的编码。

    内部 ID:OTP-8866 辅助 ID:OTP-8797,SEQ-11557

  • 当多个进程并行开始使用驱动程序进行编码/解码时,可能会出现关于崩溃的端口所有者进程的错误日志。现在消除了这种竞争条件。

    内部 ID:OTP-8948 辅助 ID:seq11733

Asn1 1.6.14.1

修复的错误和故障

  • 解析器和所有后端现在都支持 Extension Addition Groups。

    内部 ID:OTP-8598 辅助 ID:seq-11557

  • 现在在 SEQUENCE 和 CHOICE 中的嵌套类型中也支持 Extension Addition Groups(在之前的修复中遗漏了这一点)

    内部 ID:OTP-8797 辅助 ID:seq-11557

改进和新功能

  • 在 UNALIGNED PER 中,关于编码和解码值范围 > 1024 的约束数字的错误。(感谢 Vincent de Phily)

    内部 ID:OTP-8779

  • 用户指南中的一些小修正。

    内部 ID:OTP-8829

Asn1 1.6.14

改进和新功能

  • 默认情况下,在没有警告或错误的情况下,ASN.1 编译器现在是静默的。可以给出新的 'verbose' 选项或 erlc 的 '-v' 选项来显示额外的信息(例如,关于生成的文件)。(感谢 Tuncer Ayaz。)

    内部 ID:OTP-8565

Asn1 1.6.13

修复的错误和故障

  • asn1 和 ram_file_drv 中一个字节的无害缓冲区溢出。

    内部 ID:OTP-8451

改进和新功能

  • 交叉编译改进和其他构建系统改进。

    最值得注意的是

    • 大量的交叉编译改进。旧的交叉编译支持或多或少是不存在的,并且是损坏的。请注意,交叉编译支持仍然应被视为实验性的。另请注意,旧的交叉编译配置不能在未经修改的情况下使用。有关交叉编译 Erlang/OTP 的更多信息,请参阅 $ERL_TOP/INSTALL-CROSS.md 文件。
    • 支持使用 DESTDIR 进行分阶段安装。旧的损坏的 INSTALL_PREFIX 也已修复。有关更多信息,请参阅 $ERL_TOP/INSTALL.md 文件。
    • 顶层 Makefilerelease 目标的文档。有关更多信息,请参阅 $ERL_TOP/INSTALL.md 文件。
    • make install 现在默认创建相对符号链接而不是绝对符号链接。有关更多信息,请参阅 $ERL_TOP/INSTALL.md 文件。
    • $ERL_TOP/configure --help=recursive 现在可以工作,并打印所有带有 configure 脚本的应用程序的帮助信息。
    • make all 之后直接执行 make installmake release 不再触发其他重建。
    • 在没有先执行 make all 的情况下执行 make installmake release 时,现在会使用现有的引导系统。
    • cryptossl 应用程序在动态链接到 libssl.solibcrypto.so 时使用相同的运行时库路径。运行时库搜索路径也已扩展。
    • erl_interfaceodbcconfigure 脚本现在以与 ERTS 相同的方式搜索线程库和线程库的怪癖。
    • odbc 应用程序的 configure 脚本现在在 64 位系统上构建时,还会在 lib64lib/64 目录中查找 odbc 库。
    • erl_interface 应用程序中的 config.h.in 文件现在是自动生成的,而不是静态更新的,这减少了 configure 测试没有效果的风险。

    (感谢 Henrik Riomar 的建议和测试)

    (感谢 Winston Smith 的 AVR32-Linux 交叉配置和测试)

    * 可能的不兼容性 *

    内部 ID:OTP-8323

  • 增加对编译器生成的宏名称添加前缀的支持

    当单个模块中包含多个包含具有相同名称的宏的协议时,这很有用。

    将缺少的 record_name_prefix 编译器选项添加到文档中。

    内部 ID:OTP-8453

  • 根据 tidier 的建议进行清理,并对类型和规范进行现代化改造。

    内部 ID:OTP-8455

  • 添加了对 EXTENSIBILITY IMPLIEDSET/SEQ OF NamedType 的支持。

    内部 ID:OTP-8463

Asn1 1.6.12

改进和新功能

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

    内部 ID:OTP-8256

Asn1 1.6.11

改进和新功能

  • 可以使用新的选项 {n2n,TypeName} 来为选定的 ENUMERATION 类型启用从名称到数字以及反向转换的转换函数的生成。该选项可以重复多次,以便在同一个文件中指定多个类型。
    如果指定的 TypeName 不存在或不是 ENUMERATION 类型,编译将终止并返回错误代码。
    以下示例展示了如何从命令行使用 erlc 选项
    erlc -bper+"{n2n,'CauseMisc'}" +"{n2n,'CausePcl'}" MyModyle.asn

    自有 ID:OTP-8136 辅助 ID:seq11347

  • 为具有固定 SIZE 约束的 BIT STRING 添加了范围检查。

    自有 ID:OTP-7972 辅助 ID:seq11280

  • 现在支持 asn1 规范中的多行注释,如 ASN1 X.680 (07/2002) 第 11.6.4 节中所述

    自有 ID:OTP-8043

  • 现在解析并添加 PATTERN 子类型约束的抽象语法。不对此类约束执行其他操作。

    自有 ID:OTP-8046

  • 现在解析 ASN1 子类型约束 CONTAINING TypeCONTAINING Type ENCODED BY ValueENCODED BY Value。 添加了抽象语法,但在生成的代码中不采取进一步的操作。

    自有 ID:OTP-8047

Asn1 1.6.10

修复的 Bug 和故障

  • 已删除在驱动程序初始化时捕获所有消息的错误接收情况,并且初始化已重新构建。

    自有 ID:OTP-7954 辅助 ID:seq11220

改进和新功能

  • 已优化了将 ASN1 TLV 拆分为 Tag Value 元组的解码匿名部分。

    自有 ID:OTP-7953

Asn1 1.6.9

修复的 Bug 和故障

  • 已更正驱动程序加载时导致崩溃的错误。现在启用了 asn1 的并行驱动程序。

    自有 ID:OTP-7904 辅助 ID:seq11220

改进和新功能

  • 优化了编码器/解码器中 ENUMERATION 类型的代码。

    自有 ID:OTP-7909

Asn1 1.6.8.1

修复的 Bug 和故障

  • 由于加载驱动程序时失败,已删除并行驱动程序功能。

    自有 ID:OTP-7900 辅助 ID:seq11220

改进和新功能

  • 生成的代码现在使用非过时的保护语句,例如 is_integer/1 而不是 integer/1

    自有 ID:OTP-7910

Asn1 1.6.8

修复的 Bug 和故障

  • 当 BIT STRING 具有单值大小约束和扩展时(如 BIT STRING (SIZE (16,...)) 中所示),编码/解码错误。 此问题现已更正,并遵循 X.691 第 15.6 节。

    自有 ID:OTP-7876 辅助 ID:seq11220

Asn1 1.6.7

改进和新功能

  • 现在 asn1 启动多个驱动程序,以在使用链接驱动程序的 asn1 后端的不同进程中实现同步编码/解码。

    自有 ID:OTP-7801

Asn1 1.6.6

修复的 Bug 和故障

  • 当值为空的标记类型使用不确定长度编码时,开放类型的解码失败。 此问题现已更正。

    自有 ID:OTP-7759 辅助 ID:seq11166

  • 当值具有正确的大小(即不需要填充)时,在 UNALIGNED PER 中以 compact_bit_string 格式编码大小精确的 BIT STRING 失败。

    自有 ID:OTP-7763 辅助 ID:seq11182

Asn1 1.6.5

修复的 Bug 和故障

  • 对于使用 [per_bin,optimize, compact_bit_string] 编译的 SIZE 约束高于 255 的 BIT STRING,创建了一个不正确的 io 列表并将其发送到 c 驱动程序以进行完整编码。 此错误已解决。

    自有 ID:OTP-7734 辅助 ID:seq11170

Asn1 1.6.4

修复的 Bug 和故障

  • 具有带省略号的 CHOICE 类型的 SEQUENCE OF 错误地发生编译错误。 导致该错误的错误现已删除。

    自有 ID:OTP-7708 辅助 ID:seq11136

Asn1 1.6.3

修复的 Bug 和故障

  • 现在,值范围大于 512 的约束数字可以正确解释导致移位到下一个单元数(位)的值。 根据限制条件 2^m < "range" =< 2^(m + 1),则位数是 m + 1。

    自有 ID:OTP-7681 辅助 ID:seq11114

改进和新功能

  • 现在可以处理以其自身格式提供的简单类型的默认值,即不仅仅是 asn1_DEFAULT。

    自有 ID:OTP-7678 辅助 ID:seq11114

Asn1 1.6.2

修复的 Bug 和故障

  • 由于 valuedef 记录中的新模块名称字段,两个值定义的比较失败。 现在已更正。

    自有 ID:OTP-7608

Asn1 1.6.1

修复的 Bug 和故障

  • 修复了有关参数化类型参数传播的错误。

    自有 ID:OTP-7174 辅助 ID:seq10864

  • 已删除与参数列表中带有类型定义的参数化类型的实例化相关的错误。 参数类型的定义位于另一个模块中,而不是实例定义,从而导致模块信息有限。

    自有 ID:OTP-7299 辅助 ID:seq10864

  • 删除了可能导致名称冲突的硬编码名称。

    自有 ID:OTP-7322 辅助 ID:seq10864

  • 对于具有属性 UNIQUE OPTIONAL 的类的对象集,并且对象中缺少 ID 字段的情况,现在被视为没有唯一标识符的对象,即不为此对象生成表。

    自有 ID:OTP-7332 辅助 ID:seq10864

  • 当无法将 OID 作为 ValueFromObject 处理时,编译器崩溃。

    自有 ID:OTP-7476 辅助 ID:seq10999

  • 当至少两个字节的零缓冲区与 SET 组件的标记和长度匹配时,损坏的编码可能会导致循环。 仅当使用 berber_bin 选项生成的解码器发生此行为。 现在控制会中断循环。

    自有 ID:OTP-7533

  • 当使用 per_bin, optimize 选项编译规范时,编码具有 SIZE(integer()) 约束的长度超过 255 位的 BIT STRING 会导致崩溃。

    自有 ID:OTP-7602 辅助 ID:seq11079

改进和新功能

  • 现在支持 2 和 10 基数的 REAL 类型

    自有 ID:OTP-7166 辅助 ID:seq10864

  • 通过 asn1 编译器选项 {record_name_prefix Name},可以选择前缀作为在 .hrl 中生成的记录名称,并用于生成的 .erl 文件中。

    自有 ID:OTP-7204 辅助 ID:seq10853

  • 现在涵盖 TypeFromObject 生产

    自有 ID:OTP-7295 辅助 ID:seq10468

  • 扩展了对 ObjectSetFromObjects 的支持。 生产发生在 ObjectSetSpec 的 RootElementSetSpec 中。 还添加了对 ObjectSetSpec 中排除元素的支持。

    自有 ID:OTP-7306 辅助 ID:seq10864

  • 现在实现 RELATIVE-OID

    自有 ID:OTP-7334 辅助 ID:seq10864

Asn1 1.6

修复的 Bug 和故障

  • 现在按照规范顺序添加 SET 中组件的排序。 规范顺序在 X.691 9.2 和 X.680 8.6 中描述

    自有 ID:OTP-7375 辅助 ID:未对齐 PER

  • 对扩展约束的优先级规则进行了错误的解释。 该规则例如指出,如果类型上有多个带有扩展标记的约束,则只会保留最后一个扩展标记。 这会影响 PER 的编码,现在已得到纠正。

    自有 ID:OTP-7400 辅助 ID:OTP-7335

  • 在对齐/未对齐 PER 中,带有可扩展的单值约束的约束数字被错误地编码/解码。 此问题现已更正。

    自有 ID:OTP-7403

改进和新功能

  • ASN.1 编译器获得了一个新的后端,支持 PER UNALIGNED。 以前仅支持 PER ALIGNED。

    自有 ID:OTP-7335

  • 现在,asn1 编译器可以处理 PermittedAlphabet 约束的并集和交集。

    自有 ID:OTP-7374 辅助 ID:未对齐 PER

  • 使用未记录的选项 no_final_padding,整个编码消息不会填充到字节边界。 因此,返回的编码消息是 bitstring

    自有 ID:OTP-7407

Asn1 1.5.2

修复的 Bug 和故障

  • 当删除对象字段的重复项时,只会为每个唯一标识符值生成一个表访问函数。 当通过使用 ObjectSetFromObjects 合并多个对象集时,可能会发生这种情况。

    自有 ID:OTP-7263 辅助 ID:seq10864

  • DER:对于某些复杂类型和具有对类型多次引用的组件,未生成默认值检查函数。 现在已修复。

    自有 ID:OTP-7268 辅助 ID:seq10684

  • 现在,标记类型中的标记作为参数传播到实例。

    自有ID:OTP-7273 辅助ID:seq10864

改进和新特性

  • 添加了类型 T61String,它类似于 TeletexString

    自有ID:OTP-7264 辅助ID:seq10864

Asn1 1.5.1

修复的错误和故障

  • 已修复与类型重命名相关的错误。该错误在使用 .set.asn 功能时出现。

    自有ID:OTP-7149 辅助ID:seq10853

  • 现在正确显示ASN1值中的语法错误

    自有ID:OTP-7154 辅助ID:seq10864

  • 现在,参数化类型中的 COMPONENTS OF 构造可以正确展开

    自有ID:OTP-7155 辅助ID:seq10864

  • 现在,asn1 编译器还可以将空的 SEQUENCE DEFAULT 值作为 {} 处理。

    自有ID:OTP-7169 辅助ID:seq10864

  • 现在,SelectionType 获取所选类型的标签。

    自有ID:OTP-7171 辅助ID:seq10864

  • 更正了对 SEQUECNE OF/SET OF 中开放类型进行解码的生成代码。

    自有ID:OTP-7193 辅助ID:seq10875

改进和新特性

  • 关于默认值的其他改进和错误更正。

    自有ID:OTP-7199 辅助ID:seq10864

Asn1 1.5

改进和新特性

  • 现在,为参数化 SEQUENCE 或 SET 的实例在 .hrl 文件中生成记录。

    自有ID:OTP-6835

  • 在编码/解码函数中使用 bitstr 进行优化。 使用 [per_bin, optimize] 选项激活。

    * 可能的不兼容性 *

    自有ID:OTP-6882

Asn1 1.4.6

修复的错误和故障

  • 现在恢复了对使用带扩展的 SIZE 约束的类型的解析和编码/解码。

    自有ID:OTP-6763

  • inline 失败,因为尝试使用已删除的模块。

    自有ID:OTP-6769

  • 修复了从对象引用类型的问题。当使用 inline 选项时,由于类型名称的更改导致了失败。

    自有ID:OTP-6770

  • 在未解码的组件具有多个后续元素需要解码的情况下,独占解码的解码模式处理错误。

    自有ID:OTP-6786

改进和新特性

  • 现在,asn1 编译器根据 ComponentTypeLists 中的备选方案三(X.680 07/2002 第 24.1 节),即在两个省略号之间使用扩展列表,支持 SEQUENCE 和 SET 中的两个根列表。

    自有ID:OTP-5067 辅助ID:seq8452

Asn1 1.4.5

修复的错误和故障

  • 早期通过 inline 合并模块禁用了驱动程序(用于使用 [optimized]/[optimized,driver] 选项生成的模块)。现在已修复此问题。

    自有ID:OTP-6601

  • 检查阶段现在知道 INSTANCE OF 声明在哪个模块中。

    自有ID:OTP-6702

改进和新特性

  • 编译器现在根据 ITU-T 建议 X.681 (ISO/IEC 8824-2:2002) 处理所有形式的 ObjectSetSpec。

    自有ID:OTP-6698

  • 增强了对通过 ObjectSetFromObjects 引用对象集的支持。

    自有ID:OTP-6707

  • 支持对象集中的参数化对象。

    自有ID:OTP-6717