Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.

Phobos Runtime Library

Phobos is the standard runtime library that comes with the D language compiler.

Generally, the std namespace is used for the main modules in the Phobos standard library. The etc namespace is used for external C/C++ library bindings. The core namespace is used for low-level D runtime functions.

The following table is a quick reference guide for which Phobos modules to use for a given category of functionality. Note that some modules may appear in more than one category, as some Phobos modules are quite generic and can be applied in a variety of situations.

Modules Description
    Algorithms & ranges
std.algorithm
std.range
std.range.primitives
std.range.interfaces
Generic algorithms that work with ranges of any type, including strings, arrays, and other kinds of sequentially-accessed data. Algorithms include searching, comparison, iteration, sorting, set operations, and mutation.
    Array manipulation
std.array
std.algorithm
Convenient operations commonly used with built-in arrays. Note that many common array operations are subsets of more generic algorithms that work with arbitrary ranges, so they are found in std.algorithm.
    Containers
std.container.array
std.container.binaryheap
std.container.dlist
std.container.rbtree
std.container.slist
See std.container.* for an overview.
    Data formats
std.base64 Encoding / decoding Base64 format.
std.csv Read Comma Separated Values and its variants from an input range of dchar.
std.json Read/write data in JSON format.
std.zip Read/write data in the ZIP archive format.
std.zlib Compress/decompress data using the zlib library.
    Data integrity
std.checkedint Checked integral types.
std.digest Compute digests such as md5, sha1 and crc32.
std.digest.crc Cyclic Redundancy Check (32-bit) implementation.
std.digest.hmac Compute HMAC digests of arbitrary data.
std.digest.md Compute MD5 hash of arbitrary data.
std.digest.murmurhash Compute MurmurHash of arbitrary data.
std.digest.ripemd Compute RIPEMD-160 hash of arbitrary data.
std.digest.sha Compute SHA1 and SHA2 hashes of arbitrary data.
    Date & time
std.datetime Provides convenient access to date and time representations.
core.time Implements low-level time primitives.
    Exception handling
std.exception Implements routines related to exceptions.
core.exception Defines built-in exception types and low-level language hooks required by the compiler.
    External library bindings
etc.c.curl Interface to libcurl C library.
etc.c.odbc.sql Interface to ODBC C library.
etc.c.odbc.sqlext
etc.c.odbc.sqltypes
etc.c.odbc.sqlucode
etc.c.sqlite3 Interface to SQLite C library.
etc.c.zlib Interface to zlib C library.
    I/O & File system
std.file Manipulate files and directories.
std.path Manipulate strings that represent filesystem paths.
std.stdio Perform buffered I/O.
    Interoperability
core.stdc.complex
core.stdc.ctype
core.stdc.errno
core.stdc.fenv
core.stdc.float_
core.stdc.inttypes
core.stdc.limits
core.stdc.locale
core.stdc.math
core.stdc.signal
core.stdc.stdarg
core.stdc.stddef
core.stdc.stdint
core.stdc.stdio
core.stdc.stdlib
core.stdc.string
core.stdc.tgmath
core.stdc.time
core.stdc.wchar_
core.stdc.wctype
D bindings for standard C headers.

These are mostly undocumented, as documentation for the functions these declarations provide bindings to can be found on external resources.
    Memory management
core.memory Control the built-in garbage collector.
std.typecons Build scoped variables and reference-counted types.
    Metaprogramming
core.attribute Definitions of special attributes recognized by the compiler.
core.demangle Convert mangled D symbol identifiers to source representation.
std.demangle A simple wrapper around core.demangle.
std.meta Construct and manipulate template argument lists (aka type lists).
std.traits Extract information about types and symbols at compile time.
std.typecons Construct new, useful general purpose types.
    Multitasking
std.concurrency Low level messaging API for threads.
std.parallelism High level primitives for SMP parallelism.
std.process Starting and manipulating processes.
core.atomic Basic support for lock-free concurrent programming.
core.sync.barrier Synchronize the progress of a group of threads.
core.sync.condition Synchronized condition checking.
core.sync.exception Base class for synchronization exceptions.
core.sync.mutex Mutex for mutually exclusive access.
core.sync.rwmutex Shared read access and mutually exclusive write access.
core.sync.semaphore General use synchronization semaphore.
core.thread Thread creation and management.
    Networking
std.socket Socket primitives.
std.net.curl Networking client functionality as provided by libcurl.
std.net.isemail Validates an email address according to RFCs 5321, 5322 and others.
std.uri Encode and decode Uniform Resource Identifiers (URIs).
std.uuid Universally-unique identifiers for resources in distributed systems.
    Numeric
std.bigint An arbitrary-precision integer type.
std.complex A complex number type.
std.math Elementary mathematical functions (powers, roots, trigonometry).
std.mathspecial Families of transcendental functions.
std.numeric Floating point numerics functions.
std.random Pseudo-random number generators.
core.checkedint Range-checking integral arithmetic primitives.
core.math Built-in mathematical intrinsics.
    Paradigms
std.functional Functions that manipulate other functions.
std.algorithm Generic algorithms for processing sequences.
std.signals Signal-and-slots framework for event-driven programming.
    Runtime utilities
object Core language definitions. Automatically imported.
std.getopt Parsing of command-line arguments.
std.compiler Host compiler vendor string and language version.
std.system Runtime environment, such as OS type and endianness.
core.cpuid Capabilities of the CPU the program is running on.
core.memory Control the built-in garbage collector.
core.runtime Control and configure the D runtime.
    String manipulation
std.string Algorithms that work specifically with strings.
std.array Manipulate builtin arrays.
std.algorithm Generic algorithms for processing sequences.
std.uni Fundamental Unicode algorithms and data structures.
std.utf Encode and decode UTF-8, UTF-16 and UTF-32 strings.
std.format Format data into strings.
std.path Manipulate strings that represent filesystem paths.
std.regex Regular expressions.
std.ascii Routines specific to the ASCII subset of Unicode.
std.encoding Handle and transcode between various text encodings.
std.windows.charset Windows specific character set support.
std.outbuffer Serialize data to ubyte arrays.
    Type manipulations
std.conv Convert types from one type to another.
std.typecons Type constructors for scoped variables, ref counted types, etc.
std.bitmanip High level bit level manipulation, bit arrays, bit fields.
std.variant Dynamically-typed variable that can hold a value of any type.
core.bitop Low level bit manipulation.
std.sumtype Type-safe discriminated union.
    Vector programming
core.simd SIMD intrinsics
    Logging
std.logger
std.logger.core
std.logger.filelogger
std.logger.multilogger
std.logger.nulllogger
Logging.