CamlinternalLazyRun-time support for lazy values. All functions in this module are for system use only, not for the casual user.
CamlinternalModRun-time support for recursive modules. All functions in this module are for system use only, not for the casual user.
CamlinternalOORun-time support for objects and classes. All functions in this module are for system use only, not for the casual user.
DynlinkDynamic loading of .cmo, .cma and .cmxs files.
StdlibThe OCaml Standard library.
StrRegular expressions and high-level string processing
UnixInterface to the Unix system.
UnixLabelsInterface to the Unix system.
ConditionCondition variables to synchronize between threads.
EventFirst-class synchronous communication.
MutexLocks for mutual exclusion.
ThreadLightweight threads for Posix
ThreadUnixThread-compatible system calls.
Afl_instrumentInstrumentation for afl-fuzz.
Allocated_constConstants that are always allocated (possibly statically). Blocks are not included here since they are always encoded using
Prim (Pmakeblock, ...).
Arg_helperDecipher command line arguments of the form <value> | <key>=<value>
AsmgenFrom Lambda to assembly code
Ast_helperHelpers to produce Parsetree fragments
Ast_invariantsCheck AST invariants
Ast_iterator.iteratorenables AST inspection using open recursion. A typical mapper would be based on
Ast_iterator.default_iterator, a trivial iterator, and will fall back on it for handling the syntax it does not modify.
Ast_mapperThe interface of a -ppx rewriter
AsttypesAuxiliary AST types used by parsetree and typedtree.
Attr_helperHelpers for attributes
Augment_specialised_argsHelper module for adding specialised arguments to sets of closures.
Backend_intfKnowledge that the middle end needs about the backend.
Backend_varVariables used in the backend, optionally equipped with "provenance" information, used for the emission of debugging information.
Build_export_infoConstruct export information, for emission into .cmx files, from an Flambda program.
Build_path_prefix_mapRewrite paths for reproducible builds
Builtin_attributesSupport for some of the builtin attributes
BytesectionsRecording sections written to a bytecode executable file
CcompCompiling C files and building C libraries
ClflagsCommand line flags
Closure_conversion_auxEnvironments and auxiliary structures used during closure conversion.
Closure_idCR-someday lwhite: "Closure_id" is quite a generic name. I wonder whether something like "Closure_label" would better capture that it is the label of a projection.
Closure_offsetsAssign numerical offsets, within closure blocks, for code pointers and environment entries.
run ppf fundeclanalyses the given function, and returns whether any errors were encountered (with corresponding error messages printed on the given formatter).
Cmmgen_stateMutable state used by
Cmt_formatcmt and cmti files format.
CompileBytecode compilation for .ml and .mli files.
Compile_commonCommon compilation pipeline between bytecode and native.
ConsistblConsistency tables: for checking consistency of module CRCs
Diffing_with_keysWhen diffing lists where each element has a distinct key, we can refine the diffing patch by introducing two composite edit moves: swaps and moves.
Effect_analysisSimple side effect analysis.
Export_infoExported information (that is to say, information written into a .cmx file) about a compilation unit.
Export_info_for_packTransformations on export information that are only used for the building of packs.
Extract_projectionsIdentify projections from variables used in function bodies (free variables or specialised args, for example, according to
which_variablesbelow). Projections from variables that are also used boxed are not returned.
Find_recursive_functions"Recursive functions" are those functions
fthat might call either:
FlambdaIntermediate language used for tree-based analysis and optimization.
Flambda_middle_endTranslate Lambda code to Flambda code, optimize it, and produce Clambda.
Flambda_utilsUtility functions for the Flambda intermediate language.
FresheningFreshening of various identifiers.
IdentifiableUniform interface for common data structures over various things.
Import_approxCreate simple value approximations from the export information in .cmx files.
Inline_and_simplify_auxEnvironments and result structures used during inlining and simplification. (See inline_and_simplify.ml.)
Inlining_costMeasurement of the cost (including cost in space) of Flambda terms in the context of inlining.
Inlining_decisionSee the Flambda manual chapter for an explanation in prose of the inlining decision procedure.
Inlining_transformsSource code transformations used during inlining.
LexerThe lexical analyzer
Lift_constantsThe aim of this pass is to assign symbols to values known to be constant (in other words, whose values we know at compile time), with appropriate sharing of constants, and replace the occurrences of the constants with their corresponding symbols.
Load_pathManagement of include directories.
Local_storeThis module provides some facilities for creating references (and hash tables) which can easily be snapshoted and restored to an arbitrary version.
LocationSource code locations (ranges of positions), used in parsetree.
LongidentLong identifiers, used in parsetree.
MiscMiscellaneous useful types and functions
NumbersModules about numbers, some of which satisfy
OptcompileNative compilation for .ml and .mli files.
Parameter.tcarries a unique
Variable.tused as function parameter. It can also carry annotations about the usage of the variable.
ParmatchDetection of partial matches and unused match cases.
ParseEntry points in the parser
ParsetreeAbstract syntax tree produced by parsing
PollingAnalyses related to the insertion of
PparseDriver for the parser and external preprocessors.
PrintastRaw printer for
ProfileCompiler performance recording
ProjectionRepresentation of projections from closures and blocks.
let-bound references into variables.
Remove_free_vars_equal_to_argsReplace free variables in closures known to be equal to specialised arguments of such closures with those specialised arguments.
Semantics_of_primitivesDescription of the semantics of primitives, to be used for optimization purposes.
Set_of_closures_idAn identifier, unique across the whole program, that identifies a set of closures (viz.
Share_constantsShare lifted constants that are eligible for sharing (e.g. not strings) and have equal definitions.
Signature_groupIterate on signature by syntactic group of items
Simple_value_approxSimple approximations to the runtime results of computations. This pass is designed for speed rather than accuracy; the performance is important since it is used heavily during inlining.
const_*_expr expr v annot, where the expression
expris known to evaluate to the value
v, attempt to produce a more simple expression together with its approximation and the benefit gained by replacing
exprwith this new expression. This simplification is only performed if
expris known to have no side effects. Otherwise,
expritself is returned, with an appropriate approximation but zero benefit.
Static_exceptionAn identifier that is used to label static exceptions. Its uniqueness properties are unspecified.
Strongly_connected_componentsKosaraju's algorithm for strongly connected components.
SymbolA symbol identifies a constant provided by either:
SyntaxerrAuxiliary type for reporting syntax errors
TagTags on runtime boxed values.
TargetintTarget processor-native integers.
Tast_iteratorAllows the implementation of typed tree inspection using open recursion
TerminfoBasic interface to the terminfo database
TopcommonThis module provides common implementations for internals of
Toploop, for bytecode and native code (see
Topevalfor the diverging parts of the implementation).
TopevalThis module provides two alternative implementations for internals of
Toploop, for bytecode and native code.
Type_immediacyImmediacy status of a type
Typedecl_separabilityThe OCaml runtime assumes for type-directed optimizations that all types are "separable". A type is "separable" if either all its inhabitants (the values of this type) are floating-point numbers, or none of them are.
TypedtreeAbstract syntax tree after typing
TypemodType-checking of the module language and typed ast hooks
Unbox_closuresTurn free variables of closures into specialised arguments. The aim is to cause the closure to become closed.
Unbox_free_vars_of_closuresWhen approximations of free variables of closures indicate that they are closures or blocks, rewrite projections from such blocks to new variables (which become free in the closures), with the defining expressions of the projections lifted out of the corresponding sets of closures.
Unbox_specialised_argsWhen approximations of specialised arguments indicate that they are closures or blocks, add more specialised arguments corresponding to the projections from such blocks (with definitions of such projections lifted out), such that the original specialised arguments may later be eliminated.
Var_within_closureAn identifier, unique across the whole program, that identifies a particular variable within a particular closure. Only
Project_var, and not
Var, nodes are tagged with these identifiers.
Variable.tis the equivalent of a non-persistent
Flambdatree. It wraps an
Ident.ttogether with its source
compilation_unit. As such, it is unique within a whole program, not just one compilation unit.
X86_astStructured representation of Intel assembly language (32 and 64 bit).
X86_dslHelpers for Intel code generators
X86_gasEmit assembly instructions for gas.
X86_masmEmit assembly instructions for MASM (Intel syntax).
X86_procDefinitions shared between the 32 and 64 bit Intel backends.