[appendix]
== Upcoming changes in Ranch 2.0

The following changes will be done in Ranch 2.0. In most
cases an alternative is already available in the most
recent Ranch version.

* The callback function `ranch_transport:listen/1` and its
  implementations in `ranch_tcp` and `ranch_ssl` have changed
  to accept a map of transport options instead of socket
  options.

* The function `ranch:start_listener/6` has been deprecated
  in favor of `ranch:start_listener/5`. The number of acceptors
  was removed and will be taken from the transport options.

* The function `ranch:child_spec/6` has also been deprecated,
  in favor of `ranch:child_spec/5`.

* The function `ranch:accept_ack/1` has been deprecated in
  favor of `ranch:handshake/1,2`.

* The function `ranch:info/1,2` will return a map containing
  each listener's information rather than a list of key/values.
  The `num_acceptors` key will be removed.

* The socket will no longer be passed to the protocol when
  starting it. It will be available as a return value from
  `ranch:handshake/1,2` only.

* Starting from Ranch 2.0 it will no longer be allowed to
  pass Ranch options along with socket options as a proplist.
  The only forms allowed will be the `ranch:opts()` map or socket
  options as-is. The `ranch:opts()` map must be used in case socket
  options also use a map.

* The `socket` option will be removed. A more viable solution
  is to define a custom transport module that returns a fresh
  socket when `Transport:listen/1` is called.
