package ocaml-base-compiler
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
Official release 4.14.1
Install
dune-project
Dependency
Authors
Maintainers
Sources
4.14.1.tar.gz
sha256=776006e6f0b9bcfb6d9d74381c588e587432ca85562fde93bb80472a5145b028
doc/index.html
ocaml-base-compiler
API
Library bigarray
BigarrayLarge, multi-dimensional, numerical arrays.
Library dynlink
DynlinkDynamic loading of .cmo, .cma and .cmxs files.
Library ocamlbytecomp
BytegenBytelibrarianBytelinkBytepackagerCompileBytecode compilation for .ml and .mli files.EmitcodeErrorsInstructMaindriverPrintinstr
Library ocamlcommon
AnnotArg_helperDecipher command line arguments of the form <value> | <key>=<value>,...Ast_helperHelpers to produce Parsetree fragmentsAst_invariantsCheck AST invariantsAst_iteratorAst_iterator.iteratorenables AST inspection using open recursion. A typical mapper would be based onAst_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 rewriterAsttypesAuxiliary AST types used by parsetree and typedtree.Attr_helperHelpers for attributesBinutilsBtypeBuild_path_prefix_mapRewrite paths for reproducible buildsBuiltin_attributesSupport for some of the builtin attributesBytesectionsRecording sections written to a bytecode executable fileCamlinternalMenhirLibCcompCompiling C files and building C librariesClflagsCommand line flagsCmi_formatCmo_formatCmt2annotCmt_formatcmt and cmti files format.Cmxs_formatCompenvCompile_commonCommon compilation pipeline between bytecode and native.CompmiscConfigSystem configurationConsistblConsistency tables: for checking consistency of module CRCsCtypeDatareprDebuginfoDependModule dependencies.DiffingParametric diffingDiffing_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.DllDocstringsDocumentation commentsDomainstateEnvEnvauxErrortraceExpungeIdentIdentifiableUniform interface for common data structures over various things.IncludeclassIncludecoreIncludemodIncludemod_errorprinterInt_replace_polymorphic_compareLambdaLazy_backtrackLexerThe lexical analyzerLoad_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.Main_argsMakedependMatchingMetaMiscMiscellaneous useful types and functionsMtypeNumbersModules about numbers, some of which satisfyIdentifiable.S.OpcodesOprintOutcometreeParmatchDetection of partial matches and unused match cases.ParseEntry points in the parserParserParsetreeAbstract syntax tree produced by parsingPathPatternsPersistent_envPparseDriver for the parser and external preprocessors.PprintastPretty-printers forParsetreePredefPrimitivePrintastRaw printer forParsetreePrintlambdaPrintpatPrinttypPrinttypedProfileCompiler performance recordingRec_checkRuntimedefShapeSignature_groupIterate on signature by syntactic group of itemsSimplifLambda simplification.Strongly_connected_componentsKosaraju's algorithm for strongly connected components.StypesSubstSwitchSymtableSyntaxerrAuxiliary type for reporting syntax errorsTargetintTarget processor-native integers.Tast_iteratorAllows the implementation of typed tree inspection using open recursionTast_mapperTerminfoBasic interface to the terminfo databaseTmcTail-modulo-cons optimization.TranslattributeTranslclassTranslcoreTranslmodTranslobjTranslprimType_immediacyImmediacy status of a typeTypeclassTypecoreTypedeclTypedecl_immediacyTypedecl_propertiesTypedecl_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.Typedecl_unboxedTypedecl_varianceTypedtreeAbstract syntax tree after typingTypemodType-checking of the module language and typed ast hooksTypeoptTypesTypetexpUntypeastWarningsWarning definitions
Library ocamlmiddleend
Alias_analysisAllocated_constConstants that are always allocated (possibly statically). Blocks are not included here since they are always encoded usingPrim (Pmakeblock, ...).Augment_specialised_argsHelper module for adding specialised arguments to sets of closures.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.ClambdaClambda_primitivesClosureClosure_conversionClosure_conversion_auxEnvironments and auxiliary structures used during closure conversion.Closure_elementClosure_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_middle_endClosure_offsetsAssign numerical offsets, within closure blocks, for code pointers and environment entries.Closure_originCompilation_unitCompilenvConvert_primitivesEffect_analysisSimple side effect analysis.Export_idExport_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 towhich_variablesbelow). Projections from variables that are also used boxed are not returned.Find_recursive_functions"Recursive functions" are those functionsfthat might call either:FlambdaIntermediate language used for tree-based analysis and optimization.Flambda_invariantsFlambda_iteratorsFlambda_middle_endTranslate Lambda code to Flambda code, optimize it, and produce Clambda.Flambda_to_clambdaFlambda_utilsUtility functions for the Flambda intermediate language.FresheningFreshening of various identifiers.Id_typesImport_approxCreate simple value approximations from the export information in .cmx files.Inconstant_identsInitialize_symbol_to_let_symbolInline_and_simplifyInline_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_statsInlining_stats_typesInlining_transformsSource code transformations used during inlining.Internal_variable_namesInvariant_paramsLift_codeLift_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.Lift_let_to_initialize_symbolLinkage_nameMutable_variableParameterParameter.tcarries a uniqueVariable.tused as function parameter. It can also carry annotations about the usage of the variable.Pass_wrapperPrintclambdaPrintclambda_primitivesProjectionRepresentation of projections from closures and blocks.Ref_to_variablesTransformlet-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.Remove_unused_argumentsRemove_unused_closure_varsRemove_unused_program_constructsSemantics_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.Set_of_closures).Set_of_closures_originShare_constantsShare lifted constants that are eligible for sharing (e.g. not strings) and have equal definitions.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.Simplify_boxed_integer_opsSimplify_commonconst_*_expr expr v annot, where the expressionexpris known to evaluate to the valuev, attempt to produce a more simple expression together with its approximation and the benefit gained by replacingexprwith this new expression. This simplification is only performed ifexpris known to have no side effects. Otherwise,expritself is returned, with an appropriate approximation but zero benefit.Simplify_primitivesStatic_exceptionAn identifier that is used to label static exceptions. Its uniqueness properties are unspecified.SymbolA symbol identifies a constant provided by either:TagTags on runtime boxed values.Traverse_for_exported_symbolsUn_anfUnbox_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. OnlyProject_var, and notVar, nodes are tagged with these identifiers.VariableVariable.tis the equivalent of a non-persistentIdent.tin theFlambdatree. It wraps anIdent.ttogether with its sourcecompilation_unit. As such, it is unique within a whole program, not just one compilation unit.
Library ocamloptcomp
Afl_instrumentInstrumentation for afl-fuzz.Alias_analysisAllocated_constConstants that are always allocated (possibly statically). Blocks are not included here since they are always encoded usingPrim (Pmakeblock, ...).ArchAsmgenFrom Lambda to assembly codeAsmlibrarianAsmlinkAsmpackagerAugment_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.Branch_relaxationBranch_relaxation_intfBuild_export_infoConstruct export information, for emission into .cmx files, from an Flambda program.CSECSEgenClambdaClambda_primitivesClosureClosure_conversionClosure_conversion_auxEnvironments and auxiliary structures used during closure conversion.Closure_elementClosure_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_middle_endClosure_offsetsAssign numerical offsets, within closure blocks, for code pointers and environment entries.Closure_originCmmCmm_helpersCmm_invariantsrun ppf fundeclanalyses the given function, and returns whether any errors were encountered (with corresponding error messages printed on the given formatter).CmmgenCmmgen_stateMutable state used byCmmgen.Cmx_formatColoringComballocCompilation_unitCompilenvConvert_primitivesDataflowDeadcodeEffect_analysisSimple side effect analysis.EmitEmitauxEmitenvExport_idExport_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 towhich_variablesbelow). Projections from variables that are also used boxed are not returned.Find_recursive_functions"Recursive functions" are those functionsfthat might call either:FlambdaIntermediate language used for tree-based analysis and optimization.Flambda_invariantsFlambda_iteratorsFlambda_middle_endTranslate Lambda code to Flambda code, optimize it, and produce Clambda.Flambda_to_clambdaFlambda_utilsUtility functions for the Flambda intermediate language.FresheningFreshening of various identifiers.Id_typesImport_approxCreate simple value approximations from the export information in .cmx files.Inconstant_identsInitialize_symbol_to_let_symbolInline_and_simplifyInline_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_decision_intfInlining_statsInlining_stats_typesInlining_transformsSource code transformations used during inlining.InterfInternal_variable_namesIntervalInvariant_paramsLift_codeLift_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.Lift_let_to_initialize_symbolLinearLinear_formatLinearizeLinkage_nameLinscanLivenessMachMutable_variableOptcompileNative compilation for .ml and .mli files.OpterrorsOptmaindriverParameterParameter.tcarries a uniqueVariable.tused as function parameter. It can also carry annotations about the usage of the variable.Pass_wrapperPollingAnalyses related to the insertion ofIpolloperations.PrintclambdaPrintclambda_primitivesPrintcmmPrintlinearPrintmachProcProjectionRepresentation of projections from closures and blocks.Ref_to_variablesTransformlet-bound references into variables.RegReloadReloadgenRemove_free_vars_equal_to_argsReplace free variables in closures known to be equal to specialised arguments of such closures with those specialised arguments.Remove_unused_argumentsRemove_unused_closure_varsRemove_unused_program_constructsSchedgenSchedulingSelectgenSelectionSemantics_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.Set_of_closures).Set_of_closures_originShare_constantsShare lifted constants that are eligible for sharing (e.g. not strings) and have equal definitions.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.Simplify_boxed_integer_opsSimplify_boxed_integer_ops_intfSimplify_commonconst_*_expr expr v annot, where the expressionexpris known to evaluate to the valuev, attempt to produce a more simple expression together with its approximation and the benefit gained by replacingexprwith this new expression. This simplification is only performed ifexpris known to have no side effects. Otherwise,expritself is returned, with an appropriate approximation but zero benefit.Simplify_primitivesSpillSplitStatic_exceptionAn identifier that is used to label static exceptions. Its uniqueness properties are unspecified.StrmatchSymbolA symbol identifies a constant provided by either:TagTags on runtime boxed values.Traverse_for_exported_symbolsUn_anfUnbox_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. OnlyProject_var, and notVar, nodes are tagged with these identifiers.VariableVariable.tis the equivalent of a non-persistentIdent.tin theFlambdatree. It wraps anIdent.ttogether with its sourcecompilation_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 generatorsX86_gasEmit assembly instructions for gas.X86_masmEmit assembly instructions for MASM (Intel syntax).X86_procDefinitions shared between the 32 and 64 bit Intel backends.
Library ocamltoplevel
GenprintvalTopcommonThis module provides common implementations for internals ofToploop, for bytecode and native code (seeTopevalfor the diverging parts of the implementation).TopdirsTopevalThis module provides two alternative implementations for internals ofToploop, for bytecode and native code.ToploopTopmainTrace
Library odoc_info
Odoc_infoInterface to the information collected in source files.
Library stdlib
CamlinternalAtomicCamlinternalFormatCamlinternalFormatBasicsCamlinternalLazyRun-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.StdlibThe OCaml Standard library.Topdirs
Library str
StrRegular expressions and high-level string processing
Library threads
ConditionCondition variables to synchronize between threads.EventFirst-class synchronous communication.MutexLocks for mutual exclusion.SemaphoreSemaphoresThreadLightweight threads for Posix1003.1cand Win32.ThreadUnixThread-compatible system calls.
Library unix
UnixInterface to the Unix system.UnixLabelsInterface to the Unix system.
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page