# 3 Scheduled for Removal

###
3.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.

###
3.2 OTP 27

####
Functions Scheduled for Removal in OTP 27

- zlib:adler32/2 (use erlang:adler32/1 instead)
- zlib:adler32/3 (use erlang:adler32/2 instead)
- zlib:adler32_combine/4 (use erlang:adler_combine/3 instead)
- zlib:crc32/1 (use erlang:crc32/1 on the uncompressed data instead)
- zlib:crc32/2 (use erlang:crc32/1 instead)
- zlib:crc32/3 (use erlang:crc32/2 instead)
- zlib:crc32_combine/4 (use erlang:crc32_combine/3 instead)
- zlib:getBufSize/1 (this function will be removed in a future release)
- zlib:inflateChunk/1 (use safeInflate/2 instead)
- zlib:inflateChunk/2 (use safeInflate/2 instead)
- zlib:setBufSize/2 (this function will be removed in a future release)

###
3.3 OTP 26

####
Erlang Distribution Without Large Node Container Support

Communication over the Erlang distribution without support for large node container data types (version 4) is as of OTP 24 deprecated and support for it is scheduled for removal in OTP 26. That is, as of OTP 26, support for large node container data types will become mandatory.

####
Old Link Protocol

The old link protocol used when communicating over the Erlang distribution is as of OTP 24 deprecated and support for it is scheduled for removal in OTP 26. As of OTP 26 the new link protocol will become mandatory. That is, Erlang nodes will then refuse to connect to nodes not implementing the new link protocol. If you implement the Erlang distribution yourself, you are, however, encouraged to implement the new link protocol as soon as possible since the old protocol can cause links to enter an inconsistent state.

####
Functions Scheduled for Removal in OTP 26

- code:is_module_native/1 (HiPE has been removed)
- code:rehash/0 (the code path cache feature has been removed)
- 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)
- ftp:start_service/1 (use ftp:open/2 instead)
- ftp:stop_service/1 (use ftp:close/1 instead)
- httpd_util:flatlength/1 (use erlang:iolist_size/1 instead)
- httpd_util:hexlist_to_integer/1 (use erlang:list_to_integer/2 with base 16 instead)
- httpd_util:integer_to_hexlist/1 (use erlang:integer_to_list/2 with base 16 instead)
- httpd_util:strip/1 (use string:trim/1 instead)
- httpd_util:suffix/1 (use filename:extension/1 and string:trim/2 instead)
- public_key:ssh_decode/2 (use ssh_file:decode/2 instead)
- public_key:ssh_encode/2 (use ssh_file:encode/2 instead)
- public_key:ssh_hostkey_fingerprint/1 (use ssh:hostkey_fingerprint/1 instead)
- public_key:ssh_hostkey_fingerprint/2 (use ssh:hostkey_fingerprint/2 instead)

###
3.4 OTP 25

####
http_uri

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