查看源代码 asn1 发行说明
本文档描述了对 asn1 应用程序所做的更改。
Asn1 5.3.1
修复的错误和故障
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
修复的错误和故障
对于
per
和uper
ASN.1 编码规则,现在支持编码和解码具有 16384 个或更多项的SEQUENCE OF
和SET 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
修复的错误和故障
对于
per
和uper
ASN.1 编码规则,现在支持编码和解码具有 16384 个或更多项的SEQUENCE OF
和SET 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_wrapper
、undec_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
改进和新功能
从
encode
和decode
函数返回的error
元组现在将包含堆栈回溯,以便更容易了解哪里出了问题。自身 ID:OTP-13961
已删除已弃用的模块
asn1rt
。已删除已弃用的函数asn1ct:encode/3
和asn1ct:decode/3
。已删除未记录的函数asn1ct:encode/2
。* 可能的不兼容性 *
自身 ID:OTP-14146
新的“
maps
”选项将SEQUENCE
和SET
类型的表示形式更改为映射(而不是记录)。自身 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,3
和asn1ct: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
对
per
和uper
后端的代码生成进行了一些改进。自身 ID: OTP-11573
OCTET STRING 和 BIT STRING 类型现在更自然地映射到 Erlang 类型(分别为二进制和位串),这更有效,并且可以避免列表和二进制/位串之间的无用转换。
这是一个不兼容的更改。要恢复到旧的映射以支持现有应用程序,请使用
legacy_erlang_types
选项。影响:性能有提高的潜力,因为现在可以避免在生成的 ASN.1 编码/解码代码和应用程序本身中进行列表和二进制之间的转换。
* 可能的不兼容性 *
自身 ID: OTP-11594
asn1rt
模块中的所有函数,以及asn1ct:decode/3
和asn1ct: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 编译器的选项已大大简化。通过使用
ber
、per
或uper
来选择后端。不再需要optimize
、nif
和driver
选项。旧选项仍然有效,但会发出警告。另一个变化是,生成的
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
文件。 - 顶层
Makefile
的release
目标的文档。有关更多信息,请参阅$ERL_TOP/INSTALL.md
文件。 make install
现在默认创建相对符号链接而不是绝对符号链接。有关更多信息,请参阅$ERL_TOP/INSTALL.md
文件。$ERL_TOP/configure --help=recursive
现在可以工作,并打印所有带有configure
脚本的应用程序的帮助信息。- 在
make all
之后直接执行make install
或make release
不再触发其他重建。 - 在没有先执行
make all
的情况下执行make install
或make release
时,现在会使用现有的引导系统。 crypto
和ssl
应用程序在动态链接到libssl.so
和libcrypto.so
时使用相同的运行时库路径。运行时库搜索路径也已扩展。erl_interface
和odbc
的configure
脚本现在以与 ERTS 相同的方式搜索线程库和线程库的怪癖。odbc
应用程序的configure
脚本现在在 64 位系统上构建时,还会在lib64
和lib/64
目录中查找 odbc 库。erl_interface
应用程序中的config.h.in
文件现在是自动生成的,而不是静态更新的,这减少了configure
测试没有效果的风险。
(感谢 Henrik Riomar 的建议和测试)
(感谢 Winston Smith 的 AVR32-Linux 交叉配置和测试)
* 可能的不兼容性 *
内部 ID:OTP-8323
- 大量的交叉编译改进。旧的交叉编译支持或多或少是不存在的,并且是损坏的。请注意,交叉编译支持仍然应被视为实验性的。另请注意,旧的交叉编译配置不能在未经修改的情况下使用。有关交叉编译 Erlang/OTP 的更多信息,请参阅
增加对编译器生成的宏名称添加前缀的支持
当单个模块中包含多个包含具有相同名称的宏的协议时,这很有用。
将缺少的
record_name_prefix
编译器选项添加到文档中。内部 ID:OTP-8453
根据 tidier 的建议进行清理,并对类型和规范进行现代化改造。
内部 ID:OTP-8455
添加了对
EXTENSIBILITY IMPLIED
和SET/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 Type
,CONTAINING Type ENCODED BY Value
和ENCODED 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 组件的标记和长度匹配时,损坏的编码可能会导致循环。 仅当使用
ber
或ber_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