2 已移除的功能
2.1 简介
本文档列出了 Erlang/OTP 中所有已移除的功能。有关移除策略的更多信息,请参见 支持、兼容性、弃用和移除 的文档。
2.2 OTP 26
没有大型节点容器支持的 Erlang 分布
截至 OTP 24,在没有支持大型 节点容器数据类型 (版本 4) 的情况下,通过 Erlang 分布进行通信已被弃用,并且计划在 OTP 26 中移除其支持。也就是说,从 OTP 26 开始,将强制使用大型节点容器数据类型。这也包括由 term_to_binary()/term_to_iovec() 生成的外部项格式。
旧的链接协议
截至 OTP 24,在通过 Erlang 分布进行通信时使用的旧链接协议已被弃用,并且计划在 OTP 26 中移除其支持。从 OTP 26 开始,新的链接协议 成为强制性的。也就是说,Erlang 节点将拒绝连接到未实现新链接协议的节点。
OTP 26 中移除的功能
- code:is_module_native/1 (HiPE 已被移除)
- code:rehash/0 (代码路径缓存功能已被移除)
- disk_log:accessible_logs/0 (使用 disk_log:all/0 代替)
- disk_log:lclose/1 (使用 disk_log:close/1 代替)
- disk_log:lclose/2 (使用 disk_log:close/1 代替)
- erts_alloc_config:_/_ (此模块已从 OTP 26.0 中移除)
- ftp:start_service/1 (使用 ftp:open/2 代替)
- ftp:stop_service/1 (使用 ftp:close/1 代替)
- httpd_util:decode_hex/1 (使用 uri_string:unquote 函数代替)
- httpd_util:encode_hex/1 (使用 uri_string:quote 函数代替)
- httpd_util:flatlength/1 (使用 erlang:iolist_size/1 代替)
- httpd_util:hexlist_to_integer/1 (使用 erlang:list_to_integer/2 并将基数设置为 16 代替)
- httpd_util:integer_to_hexlist/1 (使用 erlang:integer_to_list/2 并将基数设置为 16 代替)
- httpd_util:strip/1 (使用 string:trim/1 代替)
- httpd_util:suffix/1 (使用 filename:extension/1 和 string:trim/2 代替)
2.3 OTP 25
OTP 25 中移除的功能
- filename:safe_relative_path/1 (使用 filelib:safe_relative_path/2 代替)
- http_uri:parse/1 (使用 uri_string 函数代替)
- http_uri:parse/2 (使用 uri_string 函数代替)
- http_uri:scheme_defaults/0 (使用 uri_string 函数代替)
- public_key:ssh_decode/2 (使用 ssh_file:decode/2 代替)
- public_key:ssh_encode/2 (使用 ssh_file:encode/2 代替)
- public_key:ssh_hostkey_fingerprint/1 (使用 ssh:hostkey_fingerprint/1 代替)
- public_key:ssh_hostkey_fingerprint/2 (使用 ssh:hostkey_fingerprint/2 代替)
2.4 OTP 24
erl_interface 注册表
截至 OTP 23,erl_interface 的 registry 功能已被弃用,并在 OTP 24 中被移除。
编译 Latin-1 编码的 Erlang 文件
Erlang 编译器现在拒绝编译以 Latin-1 编码的源文件,除非该文件开头包含 %% coding: latin-1 注释。
语法工具中的 igor 和 erl_tidy 模块
igor 和 erl_tidy 模块已从 OTP 中移除,现在由其原始作者 Richard Carlsson 维护。它们分别位于 github.com/richcarl/igor 和 github.com/richcarl/erl_tidy。
分布式磁盘日志
截至 OTP 23,分布式 disk_log 功能已被弃用,并在 OTP 24 中被移除。
旧的加密 API
OTP 24 中已移除 旧 API。截至 OTP 23,正式弃用对它的支持。
有关替换函数,请参见 新 API。
Megaco 版本 3 编码配置
OTP 24 中已移除预发布版本 3 编码配置;prev3a、prev3b 和 prev3c。请使用完整版本。
完整版本的 (编码) 配置选项 {version3, 3} 仍然受支持,即使不再需要以这种方式指定它。
OTP 24 中移除的功能
- crypto:block_decrypt/3 (使用 crypto:crypto_one_time/4 或 crypto:crypto_init/3 + crypto:crypto_update/2 + crypto:crypto_final/1 代替)
- crypto:block_decrypt/4 (使用 crypto:crypto_one_time/5、crypto:crypto_one_time_aead/6,7 或 crypto:crypto_(dyn_iv)?_init + crypto:crypto_(dyn_iv)?_update + crypto:crypto_final 代替)
- crypto:block_encrypt/3 (使用 crypto:crypto_one_time/4 或 crypto:crypto_init/3 + crypto:crypto_update/2 + crypto:crypto_final/1 代替)
- crypto:block_encrypt/4 (使用 crypto:crypto_one_time/5、crypto:crypto_one_time_aead/6,7 或 crypto:crypto_(dyn_iv)?_init + crypto:crypto_(dyn_iv)?_update + crypto:crypto_final 代替)
- crypto:cmac/3 (使用 crypto:mac/4 代替)
- crypto:cmac/4 (使用 crypto:macN/5 代替)
- crypto:hmac/3 (使用 crypto:mac/4 代替)
- crypto:hmac/4 (使用 crypto:macN/5 代替)
- crypto:hmac_final/1 (使用 crypto:mac_final/1 代替)
- crypto:hmac_final_n/2 (使用 crypto:mac_finalN/2 代替)
- crypto:hmac_init/2 (使用 crypto:mac_init/3 代替)
- crypto:hmac_update/2 (使用 crypto:mac_update/2 代替)
- crypto:next_iv/_ (参见 CRYPTO 用户指南中的“新旧 API”章节)
- crypto:poly1305/2 (使用 crypto:mac/3 代替)
- crypto:stream_decrypt/2 (使用 crypto:crypto_update/2 代替)
- crypto:stream_encrypt/2 (使用 crypto:crypto_update/2 代替)
- crypto:stream_init/_ (使用 crypto:crypto_init/3 + crypto:crypto_update/2 + crypto:crypto_final/1 或 crypto:crypto_one_time/4 代替)
- filename:find_src/_ (使用 filelib:find_source/1,3 代替)
- pg2:_/_ (此模块已在 OTP 24 中移除。使用“pg”代替)
- ssl:cipher_suites/0 (使用 cipher_suites/2,3 代替)
- ssl:cipher_suites/1 (使用 cipher_suites/2,3 代替)
- ssl:ssl_accept/_ (使用 ssl_handshake/1,2,3 代替)
2.5 OTP 23
VxWorks 支持
OTP 的某些部分具有有限的 VxWorks 支持,例如 erl_interface。OTP 23 中已移除此支持。截至 OTP 22,正式弃用此有限的支持。
erl_interface 的旧部分
OTP 23 中已移除旧的遗留 erl_interface 库(以 erl_ 为前缀的函数)。这些 erl_interface 部分在很长一段时间内一直非正式地被弃用,并且在 OTP 22 中被正式弃用。通常,您需要将使用 erl_interface 库替换为使用 ei 库,该库也是 erl_interface 应用程序的一部分。
httpd_conf 模块
名为 httpd_conf 的模块中的 API 函数已被弃用,改为使用标准模块,例如 lists、string、filelib 和 erlang。截至 OTP 18,正式弃用。
inets - httpd Apache 配置文件
OTP 23 中已移除对 Apache 兼容配置文件的支持。OTP 12 中引入了新的配置文件格式。
SSL/TLS
出于安全原因,SSL-3.0 现在不再受支持。
OTP 23 中移除的功能
- erlang:get_stacktrace/0 (使用新的 try/catch 语法检索堆栈回溯)
- httpd_conf:check_enum/2 (使用 lists:member/2 代替)
- httpd_conf:clean/1 (使用 string:strip/1 代替,或者可能使用 re 模块)
- httpd_conf:custom_clean/3 (使用 string:strip/1 代替,或者可能使用 re 模块)
- httpd_conf:is_directory/1 (使用 filelib:is_dir/1 代替)
- httpd_conf:is_file/1 (使用 filelib:is_file/1 代替)
- httpd_conf:make_integer/1 (使用 erlang:list_to_integer/1 代替)
2.6 OTP 22
OTP 22 中移除的功能
- os_mon_mib:_/_ (此模块已在 OTP 22.0 中移除)
2.7 OTP 20
OTP 20 中移除的功能
- asn1ct:decode/_ (使用 Mod:decode/2 代替)
- asn1ct:encode/_ (使用 Mod:encode/2 代替)
- erlang:hash/2 (使用 erlang:phash2/2 代替)
- ssl:connection_info/1 (使用 ssl:connection_information/[1,2] 代替)
- ssl:negotiated_next_protocol/1 (使用 ssl:negotiated_protocol/1 代替)
2.8 OTP 19
OTP 19 中移除的功能
- core_lib:get_anno/1 (使用 cerl:get_ann/1 代替)
- core_lib:is_literal/1 (使用 cerl:is_literal/1 代替)
- core_lib:is_literal_list/1 (使用 cerl:is_literal_list/1 代替)
- core_lib:literal_value/1 (使用 cerl:concrete/1 代替)
- core_lib:set_anno/2 (使用 cerl:set_ann/2 代替)
- erl_lint:modify_line/2 (使用 erl_parse:map_anno/2 代替)
- erl_parse:get_attribute/2 (使用 erl_anno:{column,line,location,text}/1 代替)
- erl_parse:get_attributes/1 (使用 erl_anno:{column,line,location,text}/1 代替)
- erl_parse:set_line/2 (使用 erl_anno:set_line/2)
- erl_scan:attributes_info/_ (使用 erl_anno:{column,line,location,text}/1 代替)
- erl_scan:set_attribute/3 (使用 erl_anno:set_line/2 代替)
- erl_scan:token_info/_ (使用 erl_scan:{category,column,line,location,symbol,text}/1 代替)
- rpc:safe_multi_server_call/2 (使用 rpc:multi_server_call/2 代替)
- rpc:safe_multi_server_call/3 (使用 rpc:multi_server_call/3 代替)