3  Scheduled for Removal

3 Scheduled for Removal

This document list all functionality in Erlang/OTP that currently are scheduled for removal. For more information regarding the strategy regarding removal of functionality see the documentation of Support, Compatibility, Deprecations, and Removal.

The old previously documented support for opening a port to an external resource by passing an atom (or a string) as first argument to open_port(), implemented by the vanilla driver, will be removed in OTP 27. This functionality was marked as obsolete about two decades ago and then a few years later the documentation for it was removed. If this functionality is not used with care it might hang or crash the runtime system.

  • file:pid2name/1 (this functionality is no longer supported)
  • disk_log:accessible_logs/0 (use disk_log:all/0 instead)
  • disk_log:lclose/1 (use disk_log:close/1 instead)
  • disk_log:lclose/2 (use disk_log:close/1 instead)
  • erts_alloc_config:_/_ (this module will be removed in OTP 26.0. See the documentation for details)
  • ftp:start_service/1 (use ftp:open/2 instead)
  • ftp:stop_service/1 (use ftp:close/1 instead)

Since OTP 21 the recommended module to handle URIs is uri_string. The module http_uri does not provide a implementation that satisfies the RFC. Formally deprecated since OTP-23.

  • filename:safe_relative_path/1 (use filelib:safe_relative_path/2 instead)
  • http_uri:decode/1 (use uri_string functions instead)
  • http_uri:encode/1 (use uri_string functions instead)
  • http_uri:parse/1 (use uri_string functions instead)
  • http_uri:parse/2 (use uri_string functions instead)
  • http_uri:scheme_defaults/0 (use uri_string functions instead)
  • snmpm:async_get/3 (use snmpm:async_get2/3 instead.)
  • snmpm:async_get/4 (use snmpm:async_get2/4 instead.)
  • snmpm:async_get/5 (use snmpm:async_get2/4 instead.)
  • snmpm:async_get/6 (use snmpm:async_get2/4 instead.)
  • snmpm:async_get_bulk/5 (use snmpm:async_get_bulk2/5 instead.)
  • snmpm:async_get_bulk/6 (use snmpm:async_get_bulk2/6 instead.)
  • snmpm:async_get_bulk/7 (use snmpm:async_get_bulk2/6 instead.)
  • snmpm:async_get_bulk/8 (use snmpm:async_get_bulk2/6 instead.)
  • snmpm:async_get_next/3 (use snmpm:async_get_next2/3 instead.)
  • snmpm:async_get_next/4 (use snmpm:async_get_next2/4 instead.)
  • snmpm:async_get_next/5 (use snmpm:async_get_next2/4 instead.)
  • snmpm:async_get_next/6 (use snmpm:async_get_next2/4 instead.)
  • snmpm:async_set/3 (use snmpm:async_set2/3 instead.)
  • snmpm:async_set/4 (use snmpm:async_set2/4 instead.)
  • snmpm:async_set/5 (use snmpm:async_set2/4 instead.)
  • snmpm:async_set/6 (use snmpm:async_set2/4 instead.)
  • snmpm:sync_get/3 (use snmpm:sync_get2/3 instead.)
  • snmpm:sync_get/4 (use snmpm:sync_get2/4 instead.)
  • snmpm:sync_get/5 (use snmpm:sync_get2/4 instead.)
  • snmpm:sync_get/6 (use snmpm:sync_get2/4 instead.)
  • snmpm:sync_get_bulk/5 (use snmpm:sync_get_bulk2/5 instead.)
  • snmpm:sync_get_bulk/6 (use snmpm:sync_get_bulk2/6 instead.)
  • snmpm:sync_get_bulk/7 (use snmpm:sync_get_bulk2/6 instead.)
  • snmpm:sync_get_bulk/8 (use snmpm:sync_get_bulk2/6 instead.)
  • snmpm:sync_get_next/3 (use snmpm:sync_get_next2/3 instead.)
  • snmpm:sync_get_next/4 (use snmpm:sync_get_next2/4 instead.)
  • snmpm:sync_get_next/5 (use snmpm:sync_get_next2/4 instead.)
  • snmpm:sync_get_next/6 (use snmpm:sync_get_next2/4 instead.)
  • snmpm:sync_set/3 (use snmpm:sync_set2/3 instead.)
  • snmpm:sync_set/4 (use snmpm:sync_set2/4 instead.)
  • snmpm:sync_set/5 (use snmpm:sync_set2/4 instead.)
  • snmpm:sync_set/6 (use snmpm:sync_set2/4 instead.)

The Old API will be removed as of OTP 24. The support was formally deprecated as of OTP 23.

For replacement functions see the New API.

pg2 is as of OTP 23 deprecated and will be removed in OTP 24.

The distributed disk_log feature is as of OTP 23 deprecated and will be removed in OTP 24.

As of OTP 24, the pre-release version 3 encoding configs; prev3a, prev3b and prev3c will be removed. Use the full version instead.

The (encoding) config option for the full version, {version3, 3}, will still be supported, even though its no longer necessary to specify it this way.

As of OTP 24, the Erlang compiler will refuse to compile source files encoded in Latin-1 but without a %% coding: latin-1 comment at the beginning of the file.

  • crypto:block_decrypt/3 (use crypto:crypto_one_time/4 or crypto:crypto_init/3 + crypto:crypto_update/2 + crypto:crypto_final/1 instead)
  • crypto:block_decrypt/4 (use crypto:crypto_one_time/5, crypto:crypto_one_time_aead/6,7 or crypto:crypto_(dyn_iv)?_init + crypto:crypto_(dyn_iv)?_update + crypto:crypto_final instead)
  • crypto:block_encrypt/3 (use crypto:crypto_one_time/4 or crypto:crypto_init/3 + crypto:crypto_update/2 + crypto:crypto_final/1 instead)
  • crypto:block_encrypt/4 (use crypto:crypto_one_time/5, crypto:crypto_one_time_aead/6,7 or crypto:crypto_(dyn_iv)?_init + crypto:crypto_(dyn_iv)?_update + crypto:crypto_final instead)
  • crypto:cmac/3 (use crypto:mac/4 instead)
  • crypto:cmac/4 (use crypto:macN/5 instead)
  • crypto:hmac/3 (use crypto:mac/4 instead)
  • crypto:hmac/4 (use crypto:macN/5 instead)
  • crypto:hmac_final/1 (use crypto:mac_final/1 instead)
  • crypto:hmac_final_n/2 (use crypto:mac_finalN/2 instead)
  • crypto:hmac_init/2 (use crypto:mac_init/3 instead)
  • crypto:hmac_update/2 (use crypto:mac_update/2 instead)
  • crypto:next_iv/_ (see the 'New and Old API' chapter of the CRYPTO User's guide)
  • crypto:poly1305/2 (use crypto:mac/3 instead)
  • crypto:stream_decrypt/2 (use crypto:crypto_update/2 instead)
  • crypto:stream_encrypt/2 (use crypto:crypto_update/2 instead)
  • crypto:stream_init/_ (use crypto:crypto_init/3 + crypto:crypto_update/2 + crypto:crypto_final/1 or crypto:crypto_one_time/4 instead)
  • erl_tidy:_/_ (use https://github.com/richcarl/erl_tidy)
  • erlang:get_stacktrace/0 (use the new try/catch syntax for retrieving the stack backtrace)
  • filename:find_src/_ (use filelib:find_source/1,3 instead)
  • igor:_/_ (use https://github.com/richcarl/igor)
  • megaco:format_versions/1 (use megaco:print_version_info/0,1 instead.)
  • pg2:_/_ (use 'pg' instead)
  • snmp:add_agent_caps/2 (use snmpa:add_agent_caps/2 instead.)
  • snmp:c/1 (use snmpc:compile/1 instead.)
  • snmp:c/2 (use snmpc:compile/2 instead.)
  • snmp:change_log_size/1 (use snmpa:change_log_size/1 instead.)
  • snmp:compile/3 (use snmpc:compile/3 instead.)
  • snmp:current_address/0 (use snmpa:current_address/0 instead.)
  • snmp:current_community/0 (use snmpa:current_community/0 instead.)
  • snmp:current_context/0 (use snmpa:current_context/0 instead.)
  • snmp:current_net_if_data/0 (use snmpa:current_net_if_data/0 instead.)
  • snmp:current_request_id/0 (use snmpa:current_request_id/0 instead.)
  • snmp:del_agent_caps/1 (use snmpa:del_agent_caps/1 instead.)
  • snmp:dump_mibs/0 (use snmpa:dump_mibs/0 instead.)
  • snmp:dump_mibs/1 (use snmpa:dump_mibs/1 instead.)
  • snmp:enum_to_int/2 (use snmpa:enum_to_int/2 instead.)
  • snmp:enum_to_int/3 (use snmpa:enum_to_int/3 instead.)
  • snmp:get/2 (use snmpa:get/2 instead.)
  • snmp:get_agent_caps/0 (use snmpa:get_agent_caps/0 instead.)
  • snmp:get_symbolic_store_db/0 (use snmpa:get_symbolic_store_db/0 instead.)
  • snmp:info/1 (use snmpa:info/1 instead.)
  • snmp:int_to_enum/2 (use snmpa:int_to_enum/2 instead.)
  • snmp:int_to_enum/3 (use snmpa:int_to_enum/3 instead.)
  • snmp:is_consistent/1 (use snmpc:is_consistent/1 instead.)
  • snmp:load_mibs/2 (use snmpa:load_mibs/2 instead.)
  • snmp:log_to_txt/2 (use snmpa:log_to_txt/2 instead.)
  • snmp:log_to_txt/3 (use snmpa:log_to_txt/3 instead.)
  • snmp:log_to_txt/4 (use snmpa:log_to_txt/4 instead.)
  • snmp:mib_to_hrl/1 (use snmpc:mib_to_hrl/1 instead.)
  • snmp:name_to_oid/1 (use snmpa:name_to_oid/1 instead.)
  • snmp:name_to_oid/2 (use snmpa:name_to_oid/2 instead.)
  • snmp:oid_to_name/1 (use snmpa:oid_to_name/1 instead.)
  • snmp:oid_to_name/2 (use snmpa:oid_to_name/2 instead.)
  • snmp:register_subagent/3 (use snmpa:register_subagent/3 instead.)
  • snmp:send_notification/3 (use snmpa:send_notification/3 instead.)
  • snmp:send_notification/4 (use snmpa:send_notification/4 instead.)
  • snmp:send_notification/5 (use snmpa:send_notification/5 instead.)
  • snmp:send_notification/6 (use snmpa:send_notification/6 instead.)
  • snmp:send_trap/3 (use snmpa:send_trap/3 instead.)
  • snmp:send_trap/4 (use snmpa:send_trap/4 instead.)
  • snmp:unload_mibs/2 (use snmpa:unload_mibs/2 instead.)
  • snmp:unregister_subagent/2 (use snmpa:unregister_subagent/2 instead.)
  • snmpa:old_info_format/1 (use "new" format instead)
  • ssl:cipher_suites/0 (use cipher_suites/2,3 instead)
  • ssl:cipher_suites/1 (use cipher_suites/2,3 instead)
  • ssl:ssl_accept/_ (use ssl_handshake/1,2,3 instead)