# Chapter 29 The standard library

This chapter describes the functions provided by the OCaml standard library. The modules from the standard library are automatically linked with the user’s object code files by the ocamlc command. Hence, these modules can be used in standalone programs without having to add any .cmo file on the command line for the linking phase. Similarly, in interactive use, these globals can be used in toplevel phrases without having to load any .cmo file in memory.

Unlike the core Stdlib module, submodules are not automatically “opened” when compilation starts, or when the toplevel system is launched. Hence it is necessary to use qualified identifiers to refer to the functions provided by these modules, or to add open directives.

- Module Arg: parsing of command line arguments
- Module Array: array operations
- Module ArrayLabels: array operations (with labels)
- Module Atomic: atomic references
- Module Bigarray: large, multi-dimensional, numerical arrays
- Module Bool: boolean values
- Module Buffer: extensible buffers
- Module Bytes: byte sequences
- Module BytesLabels: byte sequences (with labels)
- Module Callback: registering OCaml values with the C runtime
- Module Char: character operations
- Module Complex: complex numbers
- Module Condition: condition variables to synchronize between threads
- Module Domain: Domain spawn/join and domain local variables
- Module Digest: MD5 message digest
- Module Dynarray: Dynamic arrays
- Module Iarray: Immutable arrays
- Module Effect: deep and shallow effect handlers
- Module Either: either values
- Module Ephemeron: Ephemerons and weak hash table
- Module Filename: operations on file names
- Module Float: floating-point numbers
- Module Format: pretty printing
- Module Fun: function values
- Module Gc: memory management control and statistics; finalized values
- Module Hashtbl: hash tables and hash functions
- Module In_channel: input channels
- Module Int: integers
- Module Int32: 32-bit integers
- Module Int64: 64-bit integers
- Module Lazy: deferred computations
- Module Lexing: the run-time library for lexers generated by ocamllex
- Module List: list operations
- Module ListLabels: list operations (with labels)
- Module Map: association tables over ordered types
- Module Marshal: marshaling of data structures
- Module MoreLabels: include modules Hashtbl, Map and Set with labels
- Module Mutex: locks for mutual exclusion
- Module Nativeint: processor-native integers
- Module Oo: object-oriented extension
- Module Option: option values
- Module Out_channel: output channels
- Module Pair: pairs of values
- Module Parsing: the run-time library for parsers generated by ocamlyacc
- Module Pqueue: priority queues
- Module Printexc: facilities for printing exceptions
- Module Printf: formatting printing functions
- Module Queue: first-in first-out queues
- Module Random: pseudo-random number generator (PRNG)
- Module Repr: functions defined on the low-level representation of values
- Module Result: result values
- Module Scanf: formatted input functions
- Module Seq: functional iterators
- Module Set: sets over ordered types
- Module Semaphore: semaphores, another thread synchronization mechanism
- Module Stack: last-in first-out stacks
- Module StdLabels: include modules Array, List, String and Iarray with labels
- Module String: string operations
- Module StringLabels: string operations (with labels)
- Module Sys: system interface
- Module Type: type introspection
- Module Uchar: Unicode characters
- Module Unit: unit values
- Module Weak: arrays of weak pointers