2 Scheduled for Removal

2.1  Introduction

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.

2.2  OTP 25


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.

Functions Scheduled for Removal in OTP 25

  • 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.)

2.3  OTP 24

Old Crypto API

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.

Distributed Disk Logs

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

Megaco version 3 encoding config

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.

Compilation of Latin-1 Encoded Erlang Files

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.

erl_interface registry

The registry functionality part of erl_interface is as of OTP 23 deprecated and will be removed in OTP 24.

Functions Scheduled for Removal in OTP 24

  • 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)