# Elixir v1.20.0-rc.1 - Table of Contents ## Pages - [Changelog for Elixir v1.20](changelog.md) - Getting started - [Introduction](introduction.md) - [Basic types](basic-types.md) - [Lists and tuples](lists-and-tuples.md) - [Pattern matching](pattern-matching.md) - [case, cond, and if](case-cond-and-if.md) - [Anonymous functions](anonymous-functions.md) - [Binaries, strings, and charlists](binaries-strings-and-charlists.md) - [Keyword lists and maps](keywords-and-maps.md) - [Modules and functions](modules-and-functions.md) - [alias, require, import, and use](alias-require-and-import.md) - [Module attributes](module-attributes.md) - [Structs](structs.md) - [Recursion](recursion.md) - [Enumerables and Streams](enumerable-and-streams.md) - [Comprehensions](comprehensions.md) - [Protocols](protocols.md) - [Sigils](sigils.md) - [try, catch, and rescue](try-catch-and-rescue.md) - [Processes](processes.md) - [IO and the file system](io-and-the-file-system.md) - [Writing documentation](writing-documentation.md) - [Optional syntax sheet](optional-syntax.md) - [Erlang libraries](erlang-libraries.md) - [Debugging](debugging.md) - Cheatsheets - [Enum cheatsheet](enum-cheat.md) - [Set-theoretic types cheatsheet](types-cheat.md) - Mix & OTP - [Introduction to Mix](introduction-to-mix.md) - [Simple state with agents](agents.md) - [Registries and supervision trees](supervisor-and-application.md) - [Supervising dynamic children](dynamic-supervisor.md) - [Task and gen_tcp](task-and-gen-tcp.md) - [Doctests, patterns, and with](docs-tests-and-with.md) - [Configuration and distribution](config-and-distribution.md) - [Client-server with GenServer](genservers.md) - [Releases](releases.md) - Anti-patterns - [What are anti-patterns?](what-anti-patterns.md) - [Code-related anti-patterns](code-anti-patterns.md) - [Design-related anti-patterns](design-anti-patterns.md) - [Process-related anti-patterns](process-anti-patterns.md) - [Meta-programming anti-patterns](macro-anti-patterns.md) - Meta-programming - [Quote and unquote](quote-and-unquote.md) - [Macros](macros.md) - [Domain-Specific Languages (DSLs)](domain-specific-languages.md) - References - [Compatibility and deprecations](compatibility-and-deprecations.md) - [Gradual set-theoretic types](gradual-set-theoretic-types.md) - [Library guidelines](library-guidelines.md) - [Naming conventions](naming-conventions.md) - [Operators reference](operators.md) - [Patterns and guards](patterns-and-guards.md) - [Syntax reference](syntax-reference.md) - [Typespecs reference](typespecs.md) - [Unicode syntax](unicode-syntax.md) ## Modules - [Kernel](Kernel.md): `Kernel` is Elixir's default environment. - [Kernel.SpecialForms](Kernel.SpecialForms.md): Special forms are the basic building blocks of Elixir, and therefore cannot be overridden by the developer. - Data Types - [Atom](Atom.md): Atoms are constants whose values are their own name. - [Base](Base.md): This module provides data encoding and decoding functions according to [RFC 4648](https://tools.ietf.org/html/rfc4648). - [Bitwise](Bitwise.md): A set of functions that perform calculations on bits. - [Date](Date.md): A Date struct and functions. - [DateTime](DateTime.md): A datetime implementation with a time zone. - [Duration](Duration.md): Struct and functions for handling durations. - [Exception](Exception.md): Functions for dealing with throw/catch/exit and exceptions. - [Float](Float.md): Functions for working with floating-point numbers. - [Function](Function.md): A set of functions for working with functions. - [Integer](Integer.md): Functions for working with integers. - [JSON](JSON.md): JSON encoding and decoding. - [Module](Module.md): Provides functions to deal with modules during compilation time. - [NaiveDateTime](NaiveDateTime.md): A NaiveDateTime struct (without a time zone) and functions. - [Record](Record.md): Module to work with, define, and import records. - [Regex](Regex.md): Provides regular expressions for Elixir. - [String](String.md): Strings in Elixir are UTF-8 encoded binaries. - [Time](Time.md): A Time struct and functions. - [Tuple](Tuple.md): Functions for working with tuples. - [URI](URI.md): Utilities for working with URIs. - [Version](Version.md): Functions for parsing and matching versions against requirements. - [Version.Requirement](Version.Requirement.md): A struct that holds version requirement information. - Collections & Enumerables - [Access](Access.md): Key-based access to data structures. - [Date.Range](Date.Range.md): Returns an inclusive range between dates. - [Enum](Enum.md): Functions for working with collections (known as enumerables). - [Keyword](Keyword.md): A keyword list is a list that consists exclusively of two-element tuples. - [List](List.md): Linked lists hold zero, one, or more elements in the chosen order. - [Map](Map.md): Maps are the "go to" key-value data structure in Elixir. - [MapSet](MapSet.md): Functions that work on sets. - [Range](Range.md): Ranges represent a sequence of zero, one or many, ascending or descending integers with a common difference called step. - [Stream](Stream.md): Functions for creating and composing streams. - IO & System - [File](File.md): This module contains functions to manipulate files. - [File.Stat](File.Stat.md): A struct that holds file information. - [File.Stream](File.Stream.md): Defines a `File.Stream` struct returned by `File.stream!/3`. - [IO](IO.md): Functions handling input/output (IO). - [IO.ANSI](IO.ANSI.md): Functionality to render ANSI escape sequences. - [IO.Stream](IO.Stream.md): Defines an `IO.Stream` struct returned by `IO.stream/2` and `IO.binstream/2`. - [OptionParser](OptionParser.md): Functions for parsing command line arguments. - [Path](Path.md): This module provides conveniences for manipulating or retrieving file system paths. - [Port](Port.md): Functions for interacting with the external world through ports. - [StringIO](StringIO.md): Controls an IO device process that wraps a string. - [System](System.md): The `System` module provides functions that interact directly with the VM or the host system. - Calendar - [Calendar](Calendar.md): This module defines the responsibilities for working with calendars, dates, times and datetimes in Elixir. - [Calendar.ISO](Calendar.ISO.md): The default calendar implementation, a Gregorian calendar following ISO 8601. - [Calendar.TimeZoneDatabase](Calendar.TimeZoneDatabase.md): This module defines a behaviour for providing time zone data. - [Calendar.UTCOnlyTimeZoneDatabase](Calendar.UTCOnlyTimeZoneDatabase.md): Built-in time zone database that works only in the `Etc/UTC` timezone. - Processes & Applications - [Agent](Agent.md): Agents are a simple abstraction around state. - [Application](Application.md): A module for working with applications and defining application callbacks. - [Config](Config.md): A simple keyword-based configuration API. - [Config.Provider](Config.Provider.md): Specifies a provider API that loads configuration during boot. - [Config.Reader](Config.Reader.md): API for reading config files defined with `Config`. - [DynamicSupervisor](DynamicSupervisor.md): A supervisor optimized to only start children dynamically. - [GenServer](GenServer.md): A behaviour module for implementing the server of a client-server relation. - [Node](Node.md): Functions related to VM nodes. - [PartitionSupervisor](PartitionSupervisor.md): A supervisor that starts multiple partitions of the same child. - [Process](Process.md): Conveniences for working with processes and the process dictionary. - [Registry](Registry.md): A local, decentralized and scalable key-value process storage. - [Supervisor](Supervisor.md): A behaviour module for implementing supervisors. - [Task](Task.md): Conveniences for spawning and awaiting tasks. - [Task.Supervisor](Task.Supervisor.md): A task supervisor. - Protocols - [Collectable](Collectable.md): A protocol to traverse data structures. - [Enumerable](Enumerable.md): Enumerable protocol used by `Enum` and `Stream` modules. - [Inspect](Inspect.md): The `Inspect` protocol converts an Elixir data structure into an algebra document. - [Inspect.Algebra](Inspect.Algebra.md): A set of functions for creating and manipulating algebra documents. - [Inspect.Opts](Inspect.Opts.md): Defines the options used by the `Inspect` protocol. - [JSON.Encoder](JSON.Encoder.md): A protocol for custom JSON encoding of data structures. - [List.Chars](List.Chars.md): The `List.Chars` protocol is responsible for converting a structure to a charlist (only if applicable). - [Protocol](Protocol.md): Reference and functions for working with protocols. - [String.Chars](String.Chars.md): The `String.Chars` protocol is responsible for converting a structure to a binary (only if applicable). - Code & Macros - [Code](Code.md): Utilities for managing code compilation, code evaluation, and code loading. - [Code.Fragment](Code.Fragment.md): This module provides conveniences for analyzing fragments of textual code and extract available information whenever possible. - [Kernel.ParallelCompiler](Kernel.ParallelCompiler.md): A module responsible for compiling and requiring files in parallel. - [Macro](Macro.md): Functions for manipulating AST and implementing macros. - [Macro.Env](Macro.Env.md): A struct that holds compile time environment information. - Deprecated - [Behaviour](Behaviour.md): Mechanism for handling behaviours. - [Dict](Dict.md): Generic API for dictionaries. - [GenEvent](GenEvent.md): An event manager with event handlers behaviour. - [HashDict](HashDict.md): Tuple-based HashDict implementation. - [HashSet](HashSet.md): Tuple-based HashSet implementation. - [Set](Set.md): Generic API for sets. - [Supervisor.Spec](Supervisor.Spec.md): Outdated functions for building child specifications. - Exceptions - [ArgumentError](ArgumentError.md): An exception raised when an argument to a function is invalid. - [ArithmeticError](ArithmeticError.md): An exception raised on invalid arithmetic operations. - [BadArityError](BadArityError.md): An exception raised when a function is called with the wrong number of arguments. - [BadBooleanError](BadBooleanError.md): An exception raised when a boolean is expected, but something else was given. - [BadFunctionError](BadFunctionError.md): An exception raised when a function is expected, but something else was given. - [BadMapError](BadMapError.md): An exception raised when a map is expected, but something else was given. - [CaseClauseError](CaseClauseError.md): An exception raised when a term in a `case/2` expression does not match any of the defined `->` clauses. - [Code.LoadError](Code.LoadError.md): An exception raised when a file cannot be loaded. - [CompileError](CompileError.md): An exception raised when there's an error when compiling code. - [CondClauseError](CondClauseError.md): An exception raised when no clauses in a `cond/1` expression evaluate to a truthy value. - [Enum.EmptyError](Enum.EmptyError.md): An exception that is raised when something expects a non-empty enumerable but finds an empty one. - [Enum.OutOfBoundsError](Enum.OutOfBoundsError.md): An exception that is raised when a function expects an enumerable to have a certain size but finds that it is too small. - [ErlangError](ErlangError.md): An exception raised when invoking an Erlang code that errors with a value not handled by Elixir. - [File.CopyError](File.CopyError.md): An exception that is raised when copying a file fails. - [File.Error](File.Error.md): An exception that is raised when a file operation fails. - [File.LinkError](File.LinkError.md): An exception that is raised when linking a file fails. - [File.RenameError](File.RenameError.md): An exception that is raised when renaming a file fails. - [FunctionClauseError](FunctionClauseError.md): An exception raised when a function call doesn't match any defined clause. - [IO.StreamError](IO.StreamError.md) - [Inspect.Error](Inspect.Error.md): Raised when a struct cannot be inspected. - [JSON.DecodeError](JSON.DecodeError.md): The exception raised by `JSON.decode!/1`. - [Kernel.TypespecError](Kernel.TypespecError.md): An exception raised when there's an error in a typespec. - [KeyError](KeyError.md): An exception raised when a key is not found in a data structure. - [MatchError](MatchError.md): An exception raised when a pattern match (`=/2`) fails. - [MismatchedDelimiterError](MismatchedDelimiterError.md): An exception raised when a mismatched delimiter is found when parsing code. - [MissingApplicationsError](MissingApplicationsError.md): An exception that is raised when an application depends on one or more missing applications. - [OptionParser.ParseError](OptionParser.ParseError.md): An exception raised when parsing option fails. - [Protocol.UndefinedError](Protocol.UndefinedError.md): An exception raised when a protocol is not implemented for a given value. - [Regex.CompileError](Regex.CompileError.md): An exception raised when a regular expression could not be compiled. - [RuntimeError](RuntimeError.md): An exception for a generic runtime error. - [SyntaxError](SyntaxError.md): An exception raised when there's a syntax error when parsing code. - [System.EnvError](System.EnvError.md): An exception raised when a system environment variable is not set. - [SystemLimitError](SystemLimitError.md): An exception raised when a system limit has been reached. - [TokenMissingError](TokenMissingError.md): An exception raised when a token is missing when parsing code. - [TryClauseError](TryClauseError.md): An exception raised when none of the `else` clauses in a `try/1` match. - [URI.Error](URI.Error.md): An exception raised when an error occurs when a `URI` is invalid. - [UndefinedFunctionError](UndefinedFunctionError.md): An exception raised when a function is invoked that is not defined. - [UnicodeConversionError](UnicodeConversionError.md): An exception raised when converting data to or from Unicode. - [Version.InvalidRequirementError](Version.InvalidRequirementError.md): An exception raised when a version requirement is invalid. - [Version.InvalidVersionError](Version.InvalidVersionError.md): An exception raised when a version is invalid. - [WithClauseError](WithClauseError.md): An exception raised when a term in a `with/1` expression does not match any of the defined `->` clauses in its `else`.