stdlib
Stdlib
The OCaml Standard library.Stdlib.Arg
Parsing of command line arguments.Stdlib.Array
Array operations.Stdlib.ArrayLabels
Array operations.Stdlib.Atomic
Atomic references.Stdlib.Bigarray
Large, multi-dimensional, numerical arrays.Stdlib.Bool
Boolean values.Stdlib.Buffer
Extensible buffers.Stdlib.Bytes
Byte sequence operations.Stdlib.BytesLabels
Byte sequence operations.Stdlib.Callback
Registering OCaml values with the C runtime.Stdlib.Char
Character operations.Stdlib.Complex
Complex numbers.Stdlib.Condition
Condition variables.Stdlib.Digest
Message digest.Stdlib.Domain
Stdlib.Dynarray
Dynamic arrays.Stdlib.Effect
Stdlib.Either
Either type.Stdlib.Ephemeron
Ephemerons and weak hash tables.Stdlib.Filename
Operations on file names.Stdlib.Float
Floating-point arithmetic.Stdlib.Format
Pretty-printing.Stdlib.Fun
Function manipulation.Stdlib.Gc
Memory management control and statistics; finalised values.Stdlib.Hashtbl
Hash tables and hash functions.Stdlib.In_channel
Input channels.Stdlib.Int
Integer values.Stdlib.Int32
32-bit integers.Stdlib.Int64
64-bit integers.Stdlib.Lazy
Deferred computations.Stdlib.Lexing
The run-time library for lexers generated by ocamllex
.Stdlib.List
List operations.Stdlib.ListLabels
List operations.Stdlib.Map
Association tables over ordered types.Stdlib.Marshal
Marshaling of data structures.Stdlib.MoreLabels
Extra labeled libraries.Stdlib.Mutex
Locks for mutual exclusion.Stdlib.Nativeint
Processor-native integers.Stdlib.Obj
Operations on internal representations of values.Stdlib.Oo
Operations on objectsStdlib.Option
Option values.Stdlib.Out_channel
Output channels.Stdlib.Parsing
The run-time library for parsers generated by ocamlyacc
.Stdlib.Printexc
Facilities for printing exceptions and inspecting current call stack.Stdlib.Printf
Formatted output functions.Stdlib.Queue
First-in first-out queues.Stdlib.Random
Pseudo-random number generators (PRNG).Stdlib.Result
Result values.Stdlib.Scanf
Formatted input functions.Stdlib.Semaphore
SemaphoresStdlib.Seq
Sequences.Stdlib.Set
Sets over ordered types.Stdlib.Stack
Last-in first-out stacks.Stdlib.StdLabels
Standard labeled libraries.Stdlib.String
Strings.Stdlib.StringLabels
Strings.Stdlib.Sys
System interface.Stdlib.Type
Type introspection.Stdlib.Uchar
Unicode characters.Stdlib.Unit
Unit values.Stdlib.Weak
Arrays of weak pointers and hash sets of weak pointers.unix
Unix
Interface to the Unix system.UnixLabels
Interface to the Unix system.dynlink
Dynlink
Dynamic loading of .cmo, .cma and .cmxs files.runtime_events
Runtime_events
Runtime events - ring buffer-based runtime tracingstr
Str
Regular expressions and high-level string processingthreads
ocamldoc
Odoc
Odoc_analyse
Odoc_args
Odoc_ast
Odoc_class
Odoc_comments
Odoc_comments_global
Odoc_config
Odoc_cross
Odoc_dag2html
Odoc_dep
Top modules dependencies.Odoc_dot
Definition of a class which outputs a dot file showing top modules dependencies.Odoc_env
Odoc_exception
Odoc_extension
Representation and manipulation of type extensions.Odoc_gen
Odoc_global
Odoc_html
Generation of html documentation.Odoc_info
Interface to the information collected in source files.Odoc_latex
Generation of LaTeX documentation.Odoc_latex_style
The content of the LaTeX style to generate when generating LaTeX code.Odoc_lexer
Odoc_man
The man pages generator.Odoc_merge
Odoc_messages
The messages of the application.Odoc_misc
Odoc_module
Odoc_name
Odoc_ocamlhtml
Generation of html code to display OCaml code.Odoc_parameter
Representation and manipulation of method / function / class parameters.Odoc_parser
Odoc_print
Odoc_scan
Odoc_search
Odoc_see_lexer
Odoc_sig
Odoc_str
Odoc_test
Odoc_texi
Generation of Texinfo documentation.Odoc_text
Odoc_text_lexer
The lexer for string to build text structures.Odoc_text_parser
Odoc_to_text
Text generation.Odoc_type
Representation and manipulation of a type, but not class nor module type.Odoc_types
Odoc_value
Representation and manipulation of values, class attributes and class methods.compiler-libs
Afl_instrument
Instrumentation for afl-fuzz.Alias_analysis
Allocated_const
Constants that are always allocated (possibly statically). Blocks are not included here since they are always encoded using Prim (Pmakeblock, ...)
.Annot
Arch
Arg_helper
Decipher command line arguments of the form <value> | <key>=<value>,...
Asmgen
From Lambda to assembly codeAsmlibrarian
Asmlink
Asmpackager
Ast_helper
Helpers to produce Parsetree fragmentsAst_invariants
Check AST invariantsAst_iterator
Ast_iterator.iterator
enables 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_mapper
The interface of a -ppx rewriterAsttypes
Auxiliary AST types used by parsetree and typedtree.Attr_helper
Helpers for attributesAugment_specialised_args
Helper module for adding specialised arguments to sets of closures.Backend_intf
Knowledge that the middle end needs about the backend.Backend_var
Variables used in the backend, optionally equipped with "provenance" information, used for the emission of debugging information.Binutils
Branch_relaxation
Branch_relaxation_intf
Btype
Build_export_info
Construct export information, for emission into .cmx files, from an Flambda program.Build_path_prefix_map
Rewrite paths for reproducible buildsBuiltin_attributes
Support for the builtin attributes:Bytegen
Bytelibrarian
Bytelink
Bytepackager
Bytesections
CSE
Common interface to all architecture-specific CSE modulesCSEgen
CamlinternalMenhirLib
Ccomp
Compiling C files and building C librariesClambda
Clambda_primitives
Clflags
Command line flagsClosure
Closure_conversion
Closure_conversion_aux
Environments and auxiliary structures used during closure conversion.Closure_element
Closure_id
CR-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_middle_end
Closure_offsets
Assign numerical offsets, within closure blocks, for code pointers and environment entries.Closure_origin
Cmi_format
Cmm
Cmm_helpers
Cmm_invariants
Check a number of continuation-related invariantsCmmgen
Cmmgen_state
Mutable state used by Cmmgen
.Cmo_format
Cmt2annot
Cmt_format
cmt and cmti files format.Cmx_format
Cmxs_format
Coloring
Comballoc
Compenv
Compilation_unit
Compile
Bytecode compilation for .ml and .mli files.Compile_common
Common compilation pipeline between bytecode and native.Compilenv
Compmisc
Compression
Config
System configurationConfig_boot
System configurationConfig_main
System configurationConsistbl
Consistency tables: for checking consistency of module CRCsConvert_primitives
Ctype
Dataflow
Datarepr
Deadcode
Debuginfo
Depend
Module dependencies.Diffing
Parametric diffingDiffing_with_keys
When diffing lists where each element has a distinct key, we can refine the diffing patch by introducing two composite edit moves: swaps and moves.Dll
Docstrings
Documentation commentsDomainstate
Effect_analysis
Simple side effect analysis.Emit
Emitaux
Emitcode
Emitenv
Env
Envaux
Errors
Errortrace
Export_id
Export_info
Exported information (that is to say, information written into a .cmx file) about a compilation unit.Export_info_for_pack
Transformations on export information that are only used for the building of packs.Expunge
Extract_projections
Identify projections from variables used in function bodies (free variables or specialised args, for example, according to which_variables
below). Projections from variables that are also used boxed are not returned.Find_recursive_functions
"Recursive functions" are those functions f
that might call either:Flambda
Intermediate language used for tree-based analysis and optimization.Flambda_invariants
Flambda_iterators
Flambda_middle_end
Translate Lambda code to Flambda code, optimize it, and produce Clambda.Flambda_to_clambda
Flambda_utils
Utility functions for the Flambda intermediate language.Freshening
Freshening of various identifiers.Genprintval
Id_types
Ident
Identifiable
Uniform interface for common data structures over various things.Import_approx
Create simple value approximations from the export information in .cmx files.Includeclass
Includecore
Includemod
Includemod_errorprinter
Inconstant_idents
Initialize_symbol_to_let_symbol
Inline_and_simplify
Inline_and_simplify_aux
Environments and result structures used during inlining and simplification. (See inline_and_simplify.ml.)Inlining_cost
Measurement of the cost (including cost in space) of Flambda terms in the context of inlining.Inlining_decision
See the Flambda manual chapter for an explanation in prose of the inlining decision procedure.Inlining_decision_intf
Inlining_stats
Inlining_stats_types
Inlining_transforms
Source code transformations used during inlining.Instruct
Int_replace_polymorphic_compare
Interf
Internal_variable_names
Interval
Invariant_params
Lambda
Lazy_backtrack
Lexer
The lexical analyzerLift_code
Lift_constants
The 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.Lift_let_to_initialize_symbol
Linear
Linear_format
Linearize
Linkage_name
Linscan
Liveness
Load_path
Management of include directories.Local_store
This module provides some facilities for creating references (and hash tables) which can easily be snapshoted and restored to an arbitrary version.Location
Source code locations (ranges of positions), used in parsetree.Longident
Long identifiers, used in parsetree.Mach
Main
Main_args
Maindriver
Makedepend
Matching
Meta
Misc
Miscellaneous useful types and functionsMtype
Mutable_variable
Numbers
Modules about numbers, some of which satisfy Identifiable.S
.Opcodes
Oprint
Optcompile
Native compilation for .ml and .mli files.Opterrors
Optmain
Optmaindriver
Outcometree
Parameter
Parameter.t
carries a unique Variable.t
used as function parameter. It can also carry annotations about the usage of the variable.Parmatch
Detection of partial matches and unused match cases.Parse
Entry points in the parserParser
Parsetree
Abstract syntax tree produced by parsingPass_wrapper
Path
Patterns
Persistent_env
Polling
Analyses related to the insertion of Ipoll
operations.Pparse
Driver for the parser and external preprocessors.Pprintast
Pretty-printers for Parsetree
Predef
Primitive
Printast
Raw printer for Parsetree
Printclambda
Printclambda_primitives
Printcmm
Printinstr
Printlambda
Printlinear
Printmach
Printpat
Printtyp
Printtyped
Proc
Profile
Compiler performance recordingProjection
Representation of projections from closures and blocks.Ref_to_variables
Transform let
-bound references into variables.Reg
Reload
Reloadgen
Remove_free_vars_equal_to_args
Replace free variables in closures known to be equal to specialised arguments of such closures with those specialised arguments.Remove_unused_arguments
Remove_unused_closure_vars
Remove_unused_program_constructs
Runtimedef
Schedgen
Scheduling
Selectgen
Selection
Semantics_of_primitives
Description of the semantics of primitives, to be used for optimization purposes.Set_of_closures_id
An identifier, unique across the whole program, that identifies a set of closures (viz. Set_of_closures
).Set_of_closures_origin
Shape
Shapes are an abstract representation of modules' implementations which allow the tracking of definitions through functor applications and other module-level operations.Shape_reduce
Share_constants
Share lifted constants that are eligible for sharing (e.g. not strings) and have equal definitions.Signature_group
Iterate on signature by syntactic group of itemsSimple_value_approx
Simple 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.Simplif
Lambda simplification.Simplify_boxed_integer_ops
Simplify_boxed_integer_ops_intf
Simplify_common
const_*_expr expr v annot
, where the expression expr
is known to evaluate to the value v
, attempt to produce a more simple expression together with its approximation and the benefit gained by replacing expr
with this new expression. This simplification is only performed if expr
is known to have no side effects. Otherwise, expr
itself is returned, with an appropriate approximation but zero benefit.Simplify_primitives
Spill
Split
Stackframe
Stackframegen
Static_exception
An identifier that is used to label static exceptions. Its uniqueness properties are unspecified.Strmatch
Strongly_connected_components
Kosaraju's algorithm for strongly connected components.Stypes
Subst
Switch
Symbol
A symbol identifies a constant provided by either:Symtable
Syntaxerr
Auxiliary type for reporting syntax errorsTag
Tags on runtime boxed values.Targetint
Target processor-native integers.Tast_iterator
Allows the implementation of typed tree inspection using open recursionTast_mapper
Terminfo
Basic interface to the terminfo databaseThread_sanitizer
Instrumentation of memory accesses to use ThreadSanitizer (TSan) for data race detection. This module contains an instrumentation pass on Cmm, where most of the instrumentation happens.Tmc
Tail-modulo-cons optimization.Topcommon
This module provides common implementations for internals of Toploop
, for bytecode and native code (see Topeval
for the diverging parts of the implementation).Topdirs
Topeval
This module provides two alternative implementations for internals of Toploop
, for bytecode and native code.Tophooks
Toploop
Topmain
Topprinters
Topstart
Trace
Translattribute
Translclass
Translcore
Translmod
Translobj
Translprim
Traverse_for_exported_symbols
Type_immediacy
Immediacy status of a typeTypeclass
Typecore
Typedecl
Typedecl_immediacy
Typedecl_properties
Typedecl_separability
The 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.Typedecl_unboxed
Typedecl_variance
Typedtree
Abstract syntax tree after typingTypemod
Type-checking of the module language and typed ast hooksTypeopt
Types
Typetexp
Un_anf
Unbox_closures
Turn free variables of closures into specialised arguments. The aim is to cause the closure to become closed.Unbox_free_vars_of_closures
When 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_args
When 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.Unit_info
This module centralize the handling of compilation files and their metadata.Untypeast
Value_rec_check
Value_rec_compiler
Value_rec_types
Types related to the compilation of value let-recs (non-functional recursive definitions)Var_within_closure
An 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
Variable.t
is the equivalent of a non-persistent Ident.t
in the Flambda
tree. It wraps an Ident.t
together with its source compilation_unit
. As such, it is unique within a whole program, not just one compilation unit.Warnings
Warning definitionsX86_ast
Structured representation of Intel assembly language (32 and 64 bit).X86_dsl
Helpers for Intel code generatorsX86_gas
Emit assembly instructions for gas.X86_masm
Emit assembly instructions for MASM (Intel syntax).X86_proc
Definitions shared between the 32 and 64 bit Intel backends.changes-files | |
license-files | |
readme-files |