<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE erlref SYSTEM "erlref.dtd">

<erlref>
  <header>
    <copyright>
      <year>2022</year><year>2022</year>
      <holder>Ericsson AB. All Rights Reserved.</holder>
    </copyright>
    <legalnotice>
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
      You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

      Unless required by applicable law or agreed to in writing, software
      distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      See the License for the specific language governing permissions and
      limitations under the License.

    </legalnotice>

    <title>erl_features</title>
    <prepared>Cons T &Aring;hs</prepared>
    <responsible></responsible>
    <docno>1</docno>
    <approved></approved>
    <checked></checked>
    <date>2022-05-02</date>
    <rev>B</rev>
    <file>erl_features.xml</file>
  </header>
  <module since="OTP 25.0">erl_features</module>
  <modulesummary>Feature support.</modulesummary>
  <description>
    <p>This module contains functions for supporting features that can
    be enabled/disabled in Erlang.  It should be considered as mostly
    for internal use, although there are some functions that might be
    useful when writing tools.
    <marker id="erl_features"/>
    </p>
  </description>

  <datatypes>
    <datatype>
      <name name="feature"></name>
    </datatype>
    <datatype>
      <name name="release"></name>
    </datatype>
    <datatype>
      <name name="status"></name>
    </datatype>
    <datatype>
      <name name="type"></name>
    </datatype>
  </datatypes>

  <funcs>
    <func>
      <name name="all" arity="0" since="OTP 25.0"/>
      <fsummary>Return all known features.</fsummary>
      <desc>
        <p>Return a list of all known features.  This list will
        include features that have been removed (status
        <c>rejected</c>) and features that are no longer configurable
        (status <c>permanent</c>).</p>
      </desc>
    </func>

    <func>
      <name name="configurable" arity="0" since="OTP 25.1"/>
      <fsummary>Return all configurable features.</fsummary>
      <desc>
        <p>Return a list of all configurable features, that is, features
        with status <c>experimental</c> or <c>approved</c>.  These are
        the features that can be enabled or disabled.</p>
      </desc>
    </func>

    <func>
      <name name="info" arity="1" since="OTP 25.0"/>
      <fsummary>Return information about the given feature.</fsummary>
      <desc>
        <p>Return a map containing information about the given feature.</p>
      </desc>
    </func>

    <func>
      <name name="enabled" arity="0" since="OTP 25.0"/>
      <fsummary>Return list of currently enabled features.</fsummary>
      <desc>
        <p>Return a list of the features that are currently enabled.
        Note that the set of enabled is set during startup and can
        then not be changed.</p>
      </desc>
    </func>

    <func>
      <name name="used" arity="1" since="OTP 25.0"/>
      <fsummary>Return features used by a module or beam file.</fsummary>
      <desc>
        <p>Return the list of features enabled when compiling the
        module.  The module need not be loaded, but is found if it
        exists in the loadpath.  If not all features used by the
        module are enabled in the runtime, loading the module is not
        allowed.</p>
      </desc>
    </func>
  </funcs>

</erlref>
