From 457cfc466250b05317b52d44bf7832c76070aac6 Mon Sep 17 00:00:00 2001 From: c-cube Date: Fri, 22 Dec 2023 18:21:55 +0000 Subject: [PATCH] deploy: 469cb89ecd74a8aacdccc0b1955060dc159e36e2 --- dev/either/Either/index.html | 2 +- dev/either/index.html | 2 +- dev/moonpool/Moonpool/Atomic/index.html | 2 +- .../Moonpool/Blocking_queue/index.html | 2 +- .../Moonpool/Bounded_queue/index.html | 2 +- dev/moonpool/Moonpool/Chan/index.html | 2 +- .../For_runner_implementors/index.html | 2 +- dev/moonpool/Moonpool/Fifo_pool/index.html | 2 +- dev/moonpool/Moonpool/Fork_join/index.html | 2 +- dev/moonpool/Moonpool/Fut/Advanced/index.html | 7 + dev/moonpool/Moonpool/Fut/Infix/index.html | 2 +- dev/moonpool/Moonpool/Fut/index.html | 2 +- .../For_runner_implementors/index.html | 2 +- .../Moonpool/Immediate_runner/index.html | 2 +- dev/moonpool/Moonpool/Lock/index.html | 2 +- .../Runner/For_runner_implementors/index.html | 2 +- dev/moonpool/Moonpool/Runner/index.html | 2 +- .../Moonpool/Thread_local_storage/index.html | 2 +- .../For_runner_implementors/index.html | 2 +- dev/moonpool/Moonpool/Ws_pool/index.html | 2 +- dev/moonpool/Moonpool/index.html | 2 +- dev/moonpool/index.html | 2 +- dev/ocaml/Afl_instrument/index.html | 2 +- dev/ocaml/Alias_analysis/index.html | 2 +- dev/ocaml/Allocated_const/index.html | 2 +- dev/ocaml/Annot/index.html | 2 +- dev/ocaml/Arch/index.html | 2 +- .../Make/argument-1-S/Key/Map/index.html | 2 +- .../Make/argument-1-S/Key/index.html | 2 +- .../Make/argument-1-S/Value/index.html | 2 +- .../Arg_helper/Make/argument-1-S/index.html | 2 +- dev/ocaml/Arg_helper/Make/index.html | 2 +- dev/ocaml/Arg_helper/index.html | 2 +- dev/ocaml/Asmgen/index.html | 2 +- dev/ocaml/Asmlibrarian/index.html | 2 +- dev/ocaml/Asmlink/index.html | 2 +- dev/ocaml/Asmpackager/index.html | 2 +- dev/ocaml/Ast_helper/Attr/index.html | 2 +- dev/ocaml/Ast_helper/Cf/index.html | 2 +- dev/ocaml/Ast_helper/Ci/index.html | 2 +- dev/ocaml/Ast_helper/Cl/index.html | 2 +- dev/ocaml/Ast_helper/Const/index.html | 2 +- dev/ocaml/Ast_helper/Csig/index.html | 2 +- dev/ocaml/Ast_helper/Cstr/index.html | 2 +- dev/ocaml/Ast_helper/Ctf/index.html | 2 +- dev/ocaml/Ast_helper/Cty/index.html | 2 +- dev/ocaml/Ast_helper/Exp/index.html | 2 +- dev/ocaml/Ast_helper/Incl/index.html | 2 +- dev/ocaml/Ast_helper/Mb/index.html | 2 +- dev/ocaml/Ast_helper/Md/index.html | 2 +- dev/ocaml/Ast_helper/Mod/index.html | 2 +- dev/ocaml/Ast_helper/Ms/index.html | 2 +- dev/ocaml/Ast_helper/Mtd/index.html | 2 +- dev/ocaml/Ast_helper/Mty/index.html | 2 +- dev/ocaml/Ast_helper/Of/index.html | 2 +- dev/ocaml/Ast_helper/Opn/index.html | 2 +- dev/ocaml/Ast_helper/Pat/index.html | 2 +- dev/ocaml/Ast_helper/Rf/index.html | 2 +- dev/ocaml/Ast_helper/Sig/index.html | 2 +- dev/ocaml/Ast_helper/Str/index.html | 2 +- dev/ocaml/Ast_helper/Te/index.html | 2 +- dev/ocaml/Ast_helper/Typ/index.html | 2 +- dev/ocaml/Ast_helper/Type/index.html | 2 +- dev/ocaml/Ast_helper/Val/index.html | 2 +- dev/ocaml/Ast_helper/Vb/index.html | 2 +- dev/ocaml/Ast_helper/index.html | 2 +- dev/ocaml/Ast_invariants/index.html | 2 +- dev/ocaml/Ast_iterator/index.html | 2 +- dev/ocaml/Ast_mapper/index.html | 2 +- dev/ocaml/Asttypes/index.html | 2 +- dev/ocaml/Attr_helper/index.html | 2 +- .../Definition/index.html | 2 +- .../Make/argument-1-_/index.html | 2 +- .../Augment_specialised_args/Make/index.html | 2 +- .../What_to_specialise/index.html | 2 +- dev/ocaml/Augment_specialised_args/index.html | 2 +- .../module-type-S/index.html | 2 +- dev/ocaml/Backend_intf/index.html | 2 +- .../Backend_intf/module-type-S/index.html | 2 +- dev/ocaml/Backend_var/Provenance/index.html | 2 +- .../Backend_var/With_provenance/index.html | 2 +- dev/ocaml/Backend_var/index.html | 2 +- dev/ocaml/Binutils/index.html | 2 +- .../Make/argument-1-T/Cond_branch/index.html | 2 +- .../Make/argument-1-T/index.html | 2 +- dev/ocaml/Branch_relaxation/Make/index.html | 2 +- dev/ocaml/Branch_relaxation/index.html | 2 +- dev/ocaml/Branch_relaxation_intf/index.html | 2 +- .../module-type-S/Cond_branch/index.html | 2 +- .../module-type-S/index.html | 2 +- dev/ocaml/Btype/For_copy/index.html | 2 +- dev/ocaml/Btype/TransientTypeMap/index.html | 2 +- dev/ocaml/Btype/TypeHash/index.html | 2 +- dev/ocaml/Btype/TypeMap/index.html | 2 +- dev/ocaml/Btype/TypePairs/index.html | 2 +- dev/ocaml/Btype/TypeSet/index.html | 2 +- dev/ocaml/Btype/index.html | 2 +- dev/ocaml/Build_export_info/index.html | 2 +- dev/ocaml/Build_path_prefix_map/index.html | 2 +- dev/ocaml/Builtin_attributes/index.html | 2 +- dev/ocaml/Bytegen/index.html | 2 +- dev/ocaml/Bytelibrarian/index.html | 2 +- dev/ocaml/Bytelink/index.html | 2 +- dev/ocaml/Bytepackager/index.html | 2 +- dev/ocaml/Bytesections/index.html | 2 +- dev/ocaml/CSE/class-cse/index.html | 2 +- dev/ocaml/CSE/index.html | 2 +- dev/ocaml/CSEgen/class-cse_generic/index.html | 2 +- dev/ocaml/CSEgen/index.html | 2 +- dev/ocaml/CamlinternalFormat/index.html | 2 +- dev/ocaml/CamlinternalFormatBasics/index.html | 2 +- dev/ocaml/CamlinternalLazy/index.html | 2 +- .../Convert/Simplified/index.html | 2 +- .../CamlinternalMenhirLib/Convert/index.html | 2 +- .../Engine/Make/argument-1-T/Log/index.html | 2 +- .../Engine/Make/argument-1-T/index.html | 2 +- .../Engine/Make/index.html | 4 +- .../CamlinternalMenhirLib/Engine/index.html | 2 +- .../EngineTypes/index.html | 2 +- .../EngineTypes/module-type-ENGINE/index.html | 4 +- .../index.html | 2 +- .../module-type-MONOLITHIC_ENGINE/index.html | 2 +- .../module-type-TABLE/Log/index.html | 2 +- .../EngineTypes/module-type-TABLE/index.html | 2 +- .../ErrorReports/index.html | 2 +- .../CamlinternalMenhirLib/General/index.html | 2 +- .../IncrementalEngine/index.html | 2 +- .../module-type-EVERYTHING/index.html | 2 +- .../module-type-INCREMENTAL_ENGINE/index.html | 2 +- .../module-type-INSPECTION/index.html | 2 +- .../module-type-SYMBOLS/index.html | 2 +- .../InfiniteArray/index.html | 2 +- .../InspectionTableFormat/index.html | 2 +- .../module-type-TABLES/index.html | 2 +- .../Make/argument-1-TT/index.html | 2 +- .../Make/argument-2-IT/index.html | 2 +- .../Make/argument-3-ET/Log/index.html | 2 +- .../Make/argument-3-ET/index.html | 2 +- .../Make/argument-4-E/index.html | 2 +- .../Make/index.html | 2 +- .../Symbols/argument-1-T/index.html | 2 +- .../Symbols/index.html | 2 +- .../InspectionTableInterpreter/index.html | 2 +- .../LexerUtil/index.html | 2 +- .../LinearizedArray/index.html | 2 +- .../PackedIntArray/index.html | 2 +- .../Printers/Make/argument-1-I/index.html | 4 +- .../Printers/Make/argument-2-User/index.html | 2 +- .../Printers/Make/index.html | 2 +- .../CamlinternalMenhirLib/Printers/index.html | 2 +- .../RowDisplacement/index.html | 2 +- .../StaticVersion/index.html | 2 +- .../TableFormat/index.html | 2 +- .../TableFormat/module-type-TABLES/index.html | 2 +- .../MakeEngineTable/Log/index.html | 2 +- .../MakeEngineTable/argument-1-T/index.html | 2 +- .../MakeEngineTable/index.html | 2 +- .../TableInterpreter/index.html | 2 +- dev/ocaml/CamlinternalMenhirLib/index.html | 2 +- dev/ocaml/CamlinternalMod/index.html | 2 +- dev/ocaml/CamlinternalOO/index.html | 2 +- dev/ocaml/Ccomp/index.html | 2 +- dev/ocaml/Clambda/index.html | 2 +- dev/ocaml/Clambda_primitives/index.html | 2 +- dev/ocaml/Clflags/Compiler_pass/index.html | 2 +- dev/ocaml/Clflags/Float_arg_helper/index.html | 2 +- dev/ocaml/Clflags/Int_arg_helper/index.html | 2 +- dev/ocaml/Clflags/index.html | 2 +- dev/ocaml/Closure/index.html | 2 +- dev/ocaml/Closure_conversion/index.html | 2 +- .../Closure_conversion_aux/Env/index.html | 2 +- .../Function_decls/Function_decl/index.html | 2 +- .../Function_decls/index.html | 2 +- dev/ocaml/Closure_conversion_aux/index.html | 2 +- dev/ocaml/Closure_element/Map/index.html | 2 +- dev/ocaml/Closure_element/Set/index.html | 2 +- dev/ocaml/Closure_element/T/index.html | 2 +- dev/ocaml/Closure_element/Tbl/index.html | 2 +- dev/ocaml/Closure_element/index.html | 2 +- dev/ocaml/Closure_id/Map/index.html | 2 +- dev/ocaml/Closure_id/Set/index.html | 2 +- dev/ocaml/Closure_id/T/index.html | 2 +- dev/ocaml/Closure_id/Tbl/index.html | 2 +- dev/ocaml/Closure_id/index.html | 2 +- dev/ocaml/Closure_middle_end/index.html | 2 +- dev/ocaml/Closure_offsets/index.html | 2 +- dev/ocaml/Closure_origin/Map/index.html | 2 +- dev/ocaml/Closure_origin/Set/index.html | 2 +- dev/ocaml/Closure_origin/T/index.html | 2 +- dev/ocaml/Closure_origin/Tbl/index.html | 2 +- dev/ocaml/Closure_origin/index.html | 2 +- dev/ocaml/Cmi_format/index.html | 2 +- dev/ocaml/Cmm/index.html | 2 +- dev/ocaml/Cmm_helpers/index.html | 2 +- dev/ocaml/Cmm_invariants/index.html | 2 +- dev/ocaml/Cmmgen/index.html | 2 +- dev/ocaml/Cmmgen_state/index.html | 2 +- dev/ocaml/Cmo_format/index.html | 2 +- dev/ocaml/Cmt2annot/index.html | 2 +- dev/ocaml/Cmt_format/index.html | 2 +- dev/ocaml/Cmx_format/index.html | 2 +- dev/ocaml/Cmxs_format/index.html | 2 +- dev/ocaml/Coloring/index.html | 2 +- dev/ocaml/Comballoc/index.html | 2 +- dev/ocaml/Compenv/index.html | 2 +- dev/ocaml/Compilation_unit/Map/index.html | 2 +- dev/ocaml/Compilation_unit/Set/index.html | 2 +- dev/ocaml/Compilation_unit/T/index.html | 2 +- dev/ocaml/Compilation_unit/Tbl/index.html | 2 +- dev/ocaml/Compilation_unit/index.html | 2 +- dev/ocaml/Compile/index.html | 2 +- dev/ocaml/Compile_common/index.html | 2 +- dev/ocaml/Compilenv/index.html | 2 +- dev/ocaml/Compmisc/index.html | 2 +- dev/ocaml/Config/index.html | 2 +- dev/ocaml/Config_boot/index.html | 2 +- dev/ocaml/Config_main/index.html | 2 +- .../argument-1-Module_name/Map/index.html | 2 +- .../argument-1-Module_name/Set/index.html | 2 +- .../argument-1-Module_name/Tbl/index.html | 2 +- .../Make/argument-1-Module_name/index.html | 2 +- dev/ocaml/Consistbl/Make/index.html | 2 +- dev/ocaml/Consistbl/index.html | 2 +- dev/ocaml/Convert_primitives/index.html | 2 +- dev/ocaml/Ctype/index.html | 2 +- .../Dataflow/Backward/argument-1-D/index.html | 2 +- dev/ocaml/Dataflow/Backward/index.html | 2 +- dev/ocaml/Dataflow/index.html | 2 +- .../Dataflow/module-type-DOMAIN/index.html | 2 +- dev/ocaml/Datarepr/index.html | 2 +- dev/ocaml/Deadcode/index.html | 2 +- .../Debuginfo/Scoped_location/index.html | 2 +- dev/ocaml/Debuginfo/index.html | 2 +- dev/ocaml/Depend/index.html | 2 +- .../Left_variadic/argument-1-_/index.html | 2 +- .../Diffing/Define/Left_variadic/index.html | 2 +- .../Right_variadic/argument-1-_/index.html | 2 +- .../Diffing/Define/Right_variadic/index.html | 2 +- .../Define/Simple/argument-1-_/index.html | 2 +- dev/ocaml/Diffing/Define/Simple/index.html | 2 +- .../Diffing/Define/argument-1-D/index.html | 2 +- dev/ocaml/Diffing/Define/index.html | 2 +- .../Define/module-type-Parameters/index.html | 2 +- .../Diffing/Define/module-type-S/index.html | 2 +- dev/ocaml/Diffing/index.html | 2 +- dev/ocaml/Diffing/module-type-Defs/index.html | 2 +- .../Define/Simple/argument-1-_/index.html | 2 +- .../Define/Simple/index.html | 2 +- .../Define/argument-1-D/index.html | 2 +- dev/ocaml/Diffing_with_keys/Define/index.html | 2 +- .../Define/module-type-Parameters/index.html | 2 +- dev/ocaml/Diffing_with_keys/index.html | 2 +- dev/ocaml/Dll/index.html | 2 +- dev/ocaml/Docstrings/WithMenhir/index.html | 2 +- dev/ocaml/Docstrings/index.html | 2 +- dev/ocaml/Domainstate/index.html | 2 +- dev/ocaml/Dynlink/index.html | 2 +- dev/ocaml/Effect_analysis/index.html | 2 +- dev/ocaml/Emit/index.html | 2 +- dev/ocaml/Emitaux/index.html | 2 +- dev/ocaml/Emitcode/index.html | 2 +- dev/ocaml/Emitenv/index.html | 2 +- dev/ocaml/Env/index.html | 2 +- dev/ocaml/Envaux/index.html | 2 +- dev/ocaml/Errors/index.html | 2 +- dev/ocaml/Errortrace/Subtype/index.html | 2 +- dev/ocaml/Errortrace/index.html | 2 +- dev/ocaml/Event/index.html | 2 +- dev/ocaml/Export_id/Map/index.html | 2 +- dev/ocaml/Export_id/Set/index.html | 2 +- dev/ocaml/Export_id/T/index.html | 2 +- dev/ocaml/Export_id/Tbl/index.html | 2 +- dev/ocaml/Export_id/index.html | 2 +- dev/ocaml/Export_info/index.html | 2 +- dev/ocaml/Export_info_for_pack/index.html | 2 +- dev/ocaml/Expunge/index.html | 2 +- dev/ocaml/Extract_projections/index.html | 2 +- dev/ocaml/Find_recursive_functions/index.html | 2 +- .../Constant_defining_value/Map/index.html | 2 +- .../Constant_defining_value/Set/index.html | 2 +- .../Constant_defining_value/T/index.html | 2 +- .../Constant_defining_value/Tbl/index.html | 2 +- .../Constant_defining_value/index.html | 2 +- .../Flambda/With_free_variables/index.html | 2 +- dev/ocaml/Flambda/index.html | 2 +- dev/ocaml/Flambda_invariants/index.html | 2 +- dev/ocaml/Flambda_iterators/index.html | 2 +- dev/ocaml/Flambda_middle_end/index.html | 2 +- dev/ocaml/Flambda_to_clambda/index.html | 2 +- .../Flambda_utils/Switch_storer/index.html | 2 +- dev/ocaml/Flambda_utils/index.html | 2 +- dev/ocaml/Freshening/Project_var/index.html | 2 +- dev/ocaml/Freshening/index.html | 2 +- .../Genprintval/Make/argument-1-O/index.html | 2 +- .../Genprintval/Make/argument-2-_/index.html | 2 +- dev/ocaml/Genprintval/Make/index.html | 2 +- dev/ocaml/Genprintval/index.html | 2 +- .../module-type-EVALPATH/index.html | 2 +- .../Genprintval/module-type-OBJ/index.html | 2 +- .../Genprintval/module-type-S/index.html | 2 +- dev/ocaml/Id_types/Id/index.html | 2 +- .../Id_types/UnitId/argument-1-_/index.html | 2 +- .../argument-2-Compilation_unit/index.html | 2 +- dev/ocaml/Id_types/UnitId/index.html | 2 +- dev/ocaml/Id_types/index.html | 2 +- .../Id_types/module-type-BaseId/index.html | 2 +- dev/ocaml/Id_types/module-type-Id/index.html | 2 +- .../Compilation_unit/index.html | 2 +- .../Id_types/module-type-UnitId/index.html | 2 +- dev/ocaml/Ident/Map/index.html | 2 +- dev/ocaml/Ident/Set/index.html | 2 +- dev/ocaml/Ident/T/index.html | 2 +- dev/ocaml/Ident/Tbl/index.html | 2 +- dev/ocaml/Ident/index.html | 2 +- dev/ocaml/Identifiable/Make/Map/index.html | 2 +- dev/ocaml/Identifiable/Make/Set/index.html | 2 +- dev/ocaml/Identifiable/Make/T/index.html | 2 +- dev/ocaml/Identifiable/Make/Tbl/index.html | 2 +- .../Identifiable/Make/argument-1-T/index.html | 2 +- dev/ocaml/Identifiable/Make/index.html | 2 +- .../Identifiable/Pair/argument-1-A/index.html | 2 +- .../Identifiable/Pair/argument-2-B/index.html | 2 +- dev/ocaml/Identifiable/Pair/index.html | 2 +- dev/ocaml/Identifiable/index.html | 2 +- .../Identifiable/module-type-Map/T/index.html | 2 +- .../Identifiable/module-type-Map/index.html | 2 +- .../Identifiable/module-type-S/Map/index.html | 2 +- .../Identifiable/module-type-S/Set/index.html | 2 +- .../Identifiable/module-type-S/T/index.html | 2 +- .../Identifiable/module-type-S/Tbl/index.html | 2 +- .../Identifiable/module-type-S/index.html | 2 +- .../Identifiable/module-type-Set/T/index.html | 2 +- .../Identifiable/module-type-Set/index.html | 2 +- .../Identifiable/module-type-Tbl/T/index.html | 2 +- .../Identifiable/module-type-Tbl/index.html | 2 +- .../Identifiable/module-type-Thing/index.html | 2 +- dev/ocaml/Import_approx/index.html | 2 +- dev/ocaml/Includeclass/index.html | 2 +- dev/ocaml/Includecore/index.html | 2 +- dev/ocaml/Includemod/Error/index.html | 2 +- dev/ocaml/Includemod/FieldMap/index.html | 2 +- .../Functor_app_diff/Defs/index.html | 2 +- .../Includemod/Functor_app_diff/index.html | 2 +- .../Functor_inclusion_diff/Defs/index.html | 2 +- .../Functor_inclusion_diff/index.html | 2 +- dev/ocaml/Includemod/index.html | 2 +- dev/ocaml/Includemod_errorprinter/index.html | 2 +- dev/ocaml/Inconstant_idents/index.html | 2 +- .../index.html | 2 +- dev/ocaml/Inline_and_simplify/index.html | 2 +- .../Inline_and_simplify_aux/Env/index.html | 2 +- .../Inline_and_simplify_aux/Result/index.html | 2 +- dev/ocaml/Inline_and_simplify_aux/index.html | 2 +- dev/ocaml/Inlining_cost/Benefit/index.html | 2 +- dev/ocaml/Inlining_cost/Threshold/index.html | 2 +- .../Whether_sufficient_benefit/index.html | 2 +- dev/ocaml/Inlining_cost/index.html | 2 +- dev/ocaml/Inlining_decision/index.html | 2 +- dev/ocaml/Inlining_decision_intf/index.html | 2 +- .../Inlining_stats/Closure_stack/index.html | 2 +- dev/ocaml/Inlining_stats/index.html | 2 +- .../Inlining_stats_types/Decision/index.html | 2 +- .../Inlining_stats_types/Inlined/index.html | 2 +- .../Not_inlined/index.html | 2 +- .../Not_specialised/index.html | 2 +- .../Inlining_stats_types/Prevented/index.html | 2 +- .../Specialised/index.html | 2 +- dev/ocaml/Inlining_stats_types/index.html | 2 +- dev/ocaml/Inlining_transforms/index.html | 2 +- dev/ocaml/Instruct/index.html | 2 +- .../index.html | 2 +- dev/ocaml/Interf/index.html | 2 +- dev/ocaml/Internal_variable_names/index.html | 2 +- dev/ocaml/Interval/index.html | 2 +- dev/ocaml/Invariant_params/index.html | 2 +- dev/ocaml/Lambda/index.html | 2 +- dev/ocaml/Lazy_backtrack/index.html | 2 +- dev/ocaml/Lexer/index.html | 2 +- dev/ocaml/Lift_code/index.html | 2 +- dev/ocaml/Lift_constants/index.html | 2 +- .../Lift_let_to_initialize_symbol/index.html | 2 +- dev/ocaml/Linear/index.html | 2 +- dev/ocaml/Linear_format/index.html | 2 +- dev/ocaml/Linearize/index.html | 2 +- dev/ocaml/Linkage_name/Map/index.html | 2 +- dev/ocaml/Linkage_name/Set/index.html | 2 +- dev/ocaml/Linkage_name/T/index.html | 2 +- dev/ocaml/Linkage_name/Tbl/index.html | 2 +- dev/ocaml/Linkage_name/index.html | 2 +- dev/ocaml/Linscan/index.html | 2 +- dev/ocaml/Liveness/index.html | 2 +- dev/ocaml/Load_path/Dir/index.html | 2 +- dev/ocaml/Load_path/index.html | 2 +- dev/ocaml/Local_store/index.html | 2 +- dev/ocaml/Location/index.html | 2 +- dev/ocaml/Longident/index.html | 2 +- dev/ocaml/Mach/index.html | 2 +- dev/ocaml/Main/index.html | 2 +- dev/ocaml/Main_args/Default/Main/index.html | 2 +- .../Main_args/Default/Odoc_args/index.html | 2 +- .../Main_args/Default/Optmain/index.html | 2 +- .../Main_args/Default/Opttopmain/index.html | 2 +- .../Main_args/Default/Topmain/index.html | 2 +- dev/ocaml/Main_args/Default/index.html | 2 +- .../argument-1-_/index.html | 2 +- .../Make_bytecomp_options/index.html | 2 +- .../argument-1-_/index.html | 2 +- .../Main_args/Make_bytetop_options/index.html | 2 +- .../argument-1-_/index.html | 2 +- .../Make_ocamldoc_options/index.html | 2 +- .../argument-1-_/index.html | 2 +- .../Main_args/Make_optcomp_options/index.html | 2 +- .../argument-1-_/index.html | 2 +- .../Main_args/Make_opttop_options/index.html | 2 +- dev/ocaml/Main_args/index.html | 2 +- .../Main_args/module-type-Arg_list/index.html | 2 +- .../module-type-Bytecomp_options/index.html | 2 +- .../module-type-Bytetop_options/index.html | 2 +- .../module-type-Common_options/index.html | 2 +- .../module-type-Compiler_options/index.html | 2 +- .../module-type-Core_options/index.html | 2 +- .../module-type-Ocamldoc_options/index.html | 2 +- .../module-type-Optcommon_options/index.html | 2 +- .../module-type-Optcomp_options/index.html | 2 +- .../module-type-Opttop_options/index.html | 2 +- .../module-type-Toplevel_options/index.html | 2 +- dev/ocaml/Maindriver/index.html | 2 +- dev/ocaml/Makedepend/index.html | 2 +- dev/ocaml/Matching/index.html | 2 +- dev/ocaml/Meta/index.html | 2 +- dev/ocaml/Misc/Color/index.html | 2 +- dev/ocaml/Misc/Error_style/index.html | 2 +- .../Misc/Int_literal_converter/index.html | 2 +- dev/ocaml/Misc/LongString/index.html | 2 +- dev/ocaml/Misc/Magic_number/index.html | 2 +- dev/ocaml/Misc/Stdlib/Array/index.html | 2 +- dev/ocaml/Misc/Stdlib/List/index.html | 2 +- dev/ocaml/Misc/Stdlib/Option/index.html | 2 +- dev/ocaml/Misc/Stdlib/String/Map/index.html | 2 +- dev/ocaml/Misc/Stdlib/String/Set/index.html | 2 +- dev/ocaml/Misc/Stdlib/String/Tbl/index.html | 2 +- dev/ocaml/Misc/Stdlib/String/index.html | 2 +- dev/ocaml/Misc/Stdlib/index.html | 2 +- dev/ocaml/Misc/index.html | 2 +- dev/ocaml/Mtype/index.html | 2 +- dev/ocaml/Mutable_variable/Map/index.html | 2 +- dev/ocaml/Mutable_variable/Set/index.html | 2 +- dev/ocaml/Mutable_variable/T/index.html | 2 +- dev/ocaml/Mutable_variable/Tbl/index.html | 2 +- dev/ocaml/Mutable_variable/index.html | 2 +- dev/ocaml/Numbers/Float/Map/index.html | 2 +- dev/ocaml/Numbers/Float/Set/index.html | 2 +- dev/ocaml/Numbers/Float/T/index.html | 2 +- dev/ocaml/Numbers/Float/Tbl/index.html | 2 +- dev/ocaml/Numbers/Float/index.html | 2 +- dev/ocaml/Numbers/Int/Map/index.html | 2 +- dev/ocaml/Numbers/Int/Set/index.html | 2 +- dev/ocaml/Numbers/Int/T/index.html | 2 +- dev/ocaml/Numbers/Int/Tbl/index.html | 2 +- dev/ocaml/Numbers/Int/index.html | 2 +- dev/ocaml/Numbers/Int16/index.html | 2 +- dev/ocaml/Numbers/Int8/index.html | 2 +- dev/ocaml/Numbers/index.html | 2 +- dev/ocaml/Ocamlmktop_init/index.html | 2 +- dev/ocaml/Odoc/index.html | 2 +- dev/ocaml/Odoc_analyse/index.html | 2 +- dev/ocaml/Odoc_args/index.html | 2 +- .../Odoc_ast/Analyser/argument-1-_/index.html | 2 +- dev/ocaml/Odoc_ast/Analyser/index.html | 2 +- .../Odoc_ast/Typedtree_search/index.html | 2 +- dev/ocaml/Odoc_ast/index.html | 2 +- dev/ocaml/Odoc_class/index.html | 2 +- .../Basic_info_retriever/index.html | 2 +- dev/ocaml/Odoc_comments/index.html | 2 +- .../module-type-Texter/index.html | 2 +- dev/ocaml/Odoc_comments_global/index.html | 2 +- dev/ocaml/Odoc_config/index.html | 2 +- dev/ocaml/Odoc_control/index.html | 2 +- dev/ocaml/Odoc_cross/index.html | 2 +- dev/ocaml/Odoc_dag2html/index.html | 2 +- dev/ocaml/Odoc_dep/Dep/index.html | 2 +- dev/ocaml/Odoc_dep/index.html | 2 +- .../Odoc_dot/Generator/class-dot/index.html | 2 +- dev/ocaml/Odoc_dot/Generator/index.html | 2 +- dev/ocaml/Odoc_dot/index.html | 2 +- .../class-dot/index.html | 2 +- .../module-type-Dot_generator/index.html | 2 +- dev/ocaml/Odoc_env/index.html | 2 +- dev/ocaml/Odoc_exception/index.html | 2 +- dev/ocaml/Odoc_extension/index.html | 2 +- .../Base_generator/class-generator/index.html | 2 +- dev/ocaml/Odoc_gen/Base_generator/index.html | 2 +- .../class-type-doc_generator/index.html | 2 +- dev/ocaml/Odoc_gen/index.html | 2 +- .../class-generator/index.html | 2 +- .../Odoc_gen/module-type-Base/index.html | 2 +- .../argument-1-_/class-generator/index.html | 2 +- .../argument-1-_/index.html | 2 +- .../class-generator/index.html | 2 +- .../module-type-Base_functor/index.html | 2 +- .../argument-1-_/class-dot/index.html | 2 +- .../argument-1-_/index.html | 2 +- .../class-dot/index.html | 2 +- .../module-type-Dot_functor/index.html | 2 +- .../argument-1-_/class-html/index.html | 2 +- .../argument-1-_/index.html | 2 +- .../class-html/index.html | 2 +- .../module-type-Html_functor/index.html | 2 +- .../argument-1-_/class-latex/index.html | 2 +- .../argument-1-_/index.html | 2 +- .../class-latex/index.html | 2 +- .../module-type-Latex_functor/index.html | 2 +- .../argument-1-_/class-man/index.html | 2 +- .../argument-1-_/index.html | 2 +- .../class-man/index.html | 2 +- .../module-type-Man_functor/index.html | 2 +- .../argument-1-_/class-texi/index.html | 2 +- .../argument-1-_/index.html | 2 +- .../class-texi/index.html | 2 +- .../module-type-Texi_functor/index.html | 2 +- dev/ocaml/Odoc_global/index.html | 2 +- .../Odoc_html/Generator/class-html/index.html | 2 +- dev/ocaml/Odoc_html/Generator/index.html | 2 +- dev/ocaml/Odoc_html/Naming/index.html | 2 +- dev/ocaml/Odoc_html/class-info/index.html | 2 +- .../Odoc_html/class-ocaml_code/index.html | 2 +- dev/ocaml/Odoc_html/class-text/index.html | 2 +- dev/ocaml/Odoc_html/index.html | 2 +- .../class-html/index.html | 2 +- .../module-type-Html_generator/index.html | 2 +- dev/ocaml/Odoc_info/Class/index.html | 2 +- dev/ocaml/Odoc_info/Dep/index.html | 2 +- dev/ocaml/Odoc_info/Exception/index.html | 2 +- dev/ocaml/Odoc_info/Extension/index.html | 2 +- dev/ocaml/Odoc_info/Global/index.html | 2 +- dev/ocaml/Odoc_info/Module/index.html | 2 +- dev/ocaml/Odoc_info/Name/index.html | 2 +- dev/ocaml/Odoc_info/Parameter/index.html | 2 +- .../Odoc_info/Scan/class-scanner/index.html | 2 +- dev/ocaml/Odoc_info/Scan/index.html | 2 +- dev/ocaml/Odoc_info/Search/index.html | 2 +- dev/ocaml/Odoc_info/Type/index.html | 2 +- dev/ocaml/Odoc_info/Value/index.html | 2 +- dev/ocaml/Odoc_info/index.html | 2 +- dev/ocaml/Odoc_inherit/index.html | 2 +- .../Generator/class-latex/index.html | 2 +- dev/ocaml/Odoc_latex/Generator/index.html | 2 +- dev/ocaml/Odoc_latex/class-info/index.html | 2 +- dev/ocaml/Odoc_latex/class-text/index.html | 2 +- dev/ocaml/Odoc_latex/index.html | 2 +- .../class-latex/index.html | 2 +- .../module-type-Latex_generator/index.html | 2 +- dev/ocaml/Odoc_latex_style/index.html | 2 +- dev/ocaml/Odoc_lexer/index.html | 2 +- .../Odoc_man/Generator/class-man/index.html | 2 +- dev/ocaml/Odoc_man/Generator/index.html | 2 +- dev/ocaml/Odoc_man/class-info/index.html | 2 +- dev/ocaml/Odoc_man/index.html | 2 +- .../class-man/index.html | 2 +- .../module-type-Man_generator/index.html | 2 +- dev/ocaml/Odoc_merge/index.html | 2 +- dev/ocaml/Odoc_messages/index.html | 2 +- dev/ocaml/Odoc_misc/index.html | 2 +- dev/ocaml/Odoc_module/index.html | 2 +- dev/ocaml/Odoc_name/Map/index.html | 2 +- dev/ocaml/Odoc_name/index.html | 2 +- dev/ocaml/Odoc_ocamlhtml/index.html | 2 +- dev/ocaml/Odoc_parameter/index.html | 2 +- dev/ocaml/Odoc_parser/index.html | 2 +- dev/ocaml/Odoc_print/index.html | 2 +- dev/ocaml/Odoc_scan/class-scanner/index.html | 2 +- dev/ocaml/Odoc_scan/index.html | 2 +- dev/ocaml/Odoc_search/P_name/index.html | 2 +- .../Search/argument-1-P/index.html | 2 +- dev/ocaml/Odoc_search/Search/index.html | 2 +- .../Odoc_search/Search_by_name/index.html | 2 +- dev/ocaml/Odoc_search/index.html | 2 +- .../module-type-Predicates/index.html | 2 +- dev/ocaml/Odoc_see_lexer/index.html | 2 +- .../Odoc_sig/Analyser/argument-1-_/index.html | 2 +- dev/ocaml/Odoc_sig/Analyser/index.html | 2 +- .../Odoc_sig/Signature_search/index.html | 2 +- dev/ocaml/Odoc_sig/index.html | 2 +- .../module-type-Info_retriever/index.html | 2 +- dev/ocaml/Odoc_str/index.html | 2 +- .../argument-1-G/class-generator/index.html | 2 +- .../Generator/argument-1-G/index.html | 2 +- .../Generator/class-generator/index.html | 2 +- .../Generator/class-string_gen/index.html | 2 +- dev/ocaml/Odoc_test/Generator/index.html | 2 +- dev/ocaml/Odoc_test/index.html | 2 +- .../Odoc_texi/Generator/class-texi/index.html | 2 +- dev/ocaml/Odoc_texi/Generator/index.html | 2 +- dev/ocaml/Odoc_texi/Texi/index.html | 2 +- dev/ocaml/Odoc_texi/class-text/index.html | 2 +- dev/ocaml/Odoc_texi/index.html | 4 +- .../class-texi/index.html | 2 +- .../module-type-Texi_generator/index.html | 2 +- dev/ocaml/Odoc_text/Texter/index.html | 2 +- dev/ocaml/Odoc_text/index.html | 2 +- dev/ocaml/Odoc_text_lexer/index.html | 2 +- dev/ocaml/Odoc_text_parser/index.html | 2 +- dev/ocaml/Odoc_to_text/class-info/index.html | 2 +- .../Odoc_to_text/class-to_text/index.html | 2 +- dev/ocaml/Odoc_to_text/index.html | 2 +- dev/ocaml/Odoc_type/index.html | 2 +- dev/ocaml/Odoc_types/index.html | 2 +- dev/ocaml/Odoc_value/index.html | 2 +- dev/ocaml/Opcodes/index.html | 2 +- dev/ocaml/Oprint/index.html | 2 +- dev/ocaml/Optcompile/index.html | 2 +- dev/ocaml/Opterrors/index.html | 2 +- dev/ocaml/Optmain/index.html | 2 +- dev/ocaml/Optmaindriver/index.html | 2 +- dev/ocaml/Outcometree/index.html | 2 +- dev/ocaml/Parameter/List/index.html | 2 +- dev/ocaml/Parameter/Map/index.html | 2 +- dev/ocaml/Parameter/Set/index.html | 2 +- dev/ocaml/Parameter/T/index.html | 2 +- dev/ocaml/Parameter/Tbl/index.html | 2 +- dev/ocaml/Parameter/index.html | 2 +- .../Parmatch/Compat/argument-1-_/index.html | 2 +- dev/ocaml/Parmatch/Compat/index.html | 2 +- dev/ocaml/Parmatch/index.html | 2 +- dev/ocaml/Parse/index.html | 2 +- dev/ocaml/Parser/Incremental/index.html | 2 +- dev/ocaml/Parser/MenhirInterpreter/index.html | 4 +- dev/ocaml/Parser/index.html | 2 +- dev/ocaml/Parsetree/index.html | 2 +- dev/ocaml/Pass_wrapper/index.html | 2 +- dev/ocaml/Path/Map/index.html | 2 +- dev/ocaml/Path/Set/index.html | 2 +- dev/ocaml/Path/index.html | 2 +- dev/ocaml/Patterns/General/index.html | 2 +- dev/ocaml/Patterns/Half_simple/index.html | 2 +- dev/ocaml/Patterns/Head/index.html | 2 +- dev/ocaml/Patterns/Non_empty_row/index.html | 2 +- dev/ocaml/Patterns/Simple/index.html | 6 +- dev/ocaml/Patterns/index.html | 2 +- dev/ocaml/Persistent_env/Consistbl/index.html | 2 +- .../Persistent_signature/index.html | 2 +- dev/ocaml/Persistent_env/index.html | 2 +- dev/ocaml/Polling/index.html | 2 +- dev/ocaml/Pparse/index.html | 2 +- dev/ocaml/Pprintast/index.html | 2 +- dev/ocaml/Predef/index.html | 2 +- dev/ocaml/Primitive/index.html | 2 +- dev/ocaml/Printast/index.html | 2 +- dev/ocaml/Printclambda/index.html | 2 +- dev/ocaml/Printclambda_primitives/index.html | 2 +- dev/ocaml/Printcmm/index.html | 2 +- dev/ocaml/Printinstr/index.html | 2 +- dev/ocaml/Printlambda/index.html | 2 +- dev/ocaml/Printlinear/index.html | 2 +- dev/ocaml/Printmach/index.html | 2 +- dev/ocaml/Printpat/index.html | 2 +- dev/ocaml/Printtyp/Conflicts/index.html | 2 +- dev/ocaml/Printtyp/Naming_context/index.html | 2 +- dev/ocaml/Printtyp/Out_name/index.html | 2 +- dev/ocaml/Printtyp/Subtype/index.html | 2 +- dev/ocaml/Printtyp/index.html | 2 +- dev/ocaml/Printtyped/index.html | 2 +- dev/ocaml/Proc/index.html | 2 +- dev/ocaml/Profile/index.html | 2 +- dev/ocaml/Profiling/index.html | 2 +- dev/ocaml/Projection/Map/index.html | 2 +- dev/ocaml/Projection/Set/index.html | 2 +- dev/ocaml/Projection/T/index.html | 2 +- dev/ocaml/Projection/Tbl/index.html | 2 +- dev/ocaml/Projection/index.html | 2 +- dev/ocaml/Rec_check/index.html | 2 +- dev/ocaml/Ref_to_variables/index.html | 2 +- dev/ocaml/Reg/Map/index.html | 2 +- dev/ocaml/Reg/Raw_name/index.html | 2 +- dev/ocaml/Reg/Set/index.html | 2 +- dev/ocaml/Reg/index.html | 2 +- dev/ocaml/Reload/index.html | 2 +- .../Reloadgen/class-reload_generic/index.html | 2 +- dev/ocaml/Reloadgen/index.html | 2 +- .../Remove_free_vars_equal_to_args/index.html | 2 +- dev/ocaml/Remove_unused_arguments/index.html | 2 +- .../Remove_unused_closure_vars/index.html | 2 +- .../index.html | 2 +- dev/ocaml/Runtime_events/Callbacks/index.html | 2 +- dev/ocaml/Runtime_events/Timestamp/index.html | 2 +- dev/ocaml/Runtime_events/index.html | 2 +- dev/ocaml/Runtimedef/index.html | 2 +- .../class-scheduler_generic/index.html | 2 +- dev/ocaml/Schedgen/index.html | 2 +- dev/ocaml/Scheduling/index.html | 2 +- dev/ocaml/Selectgen/Coeffect/index.html | 2 +- dev/ocaml/Selectgen/Effect/index.html | 2 +- .../Selectgen/Effect_and_coeffect/index.html | 2 +- .../class-selector_generic/index.html | 2 +- dev/ocaml/Selectgen/index.html | 2 +- dev/ocaml/Selection/index.html | 2 +- dev/ocaml/Semantics_of_primitives/index.html | 2 +- dev/ocaml/Set_of_closures_id/Map/index.html | 2 +- dev/ocaml/Set_of_closures_id/Set/index.html | 2 +- dev/ocaml/Set_of_closures_id/T/index.html | 2 +- dev/ocaml/Set_of_closures_id/Tbl/index.html | 2 +- dev/ocaml/Set_of_closures_id/index.html | 2 +- .../Set_of_closures_origin/Map/index.html | 2 +- .../Set_of_closures_origin/Set/index.html | 2 +- dev/ocaml/Set_of_closures_origin/T/index.html | 2 +- .../Set_of_closures_origin/Tbl/index.html | 2 +- dev/ocaml/Set_of_closures_origin/index.html | 2 +- dev/ocaml/Shape/Item/Map/index.html | 2 +- dev/ocaml/Shape/Item/index.html | 2 +- .../Make_reduce/argument-1-Context/index.html | 2 +- dev/ocaml/Shape/Make_reduce/index.html | 2 +- dev/ocaml/Shape/Map/index.html | 2 +- dev/ocaml/Shape/Sig_component_kind/index.html | 2 +- dev/ocaml/Shape/Uid/Map/index.html | 2 +- dev/ocaml/Shape/Uid/Set/index.html | 2 +- dev/ocaml/Shape/Uid/T/index.html | 2 +- dev/ocaml/Shape/Uid/Tbl/index.html | 2 +- dev/ocaml/Shape/Uid/index.html | 2 +- dev/ocaml/Shape/index.html | 2 +- dev/ocaml/Share_constants/index.html | 2 +- dev/ocaml/Signature_group/index.html | 2 +- dev/ocaml/Simple_value_approx/index.html | 2 +- dev/ocaml/Simplif/index.html | 2 +- .../Simplify_boxed_int32/index.html | 2 +- .../Simplify_boxed_int64/index.html | 2 +- .../Simplify_boxed_nativeint/index.html | 2 +- .../Simplify_boxed_integer_ops/index.html | 2 +- .../index.html | 2 +- .../module-type-S/index.html | 2 +- dev/ocaml/Simplify_common/index.html | 2 +- dev/ocaml/Simplify_primitives/index.html | 2 +- dev/ocaml/Spill/index.html | 2 +- dev/ocaml/Split/index.html | 2 +- dev/ocaml/Static_exception/Map/index.html | 2 +- dev/ocaml/Static_exception/Set/index.html | 2 +- dev/ocaml/Static_exception/T/index.html | 2 +- dev/ocaml/Static_exception/Tbl/index.html | 2 +- dev/ocaml/Static_exception/index.html | 2 +- dev/ocaml/Std_exit/index.html | 2 +- dev/ocaml/Stdlib/Arg/index.html | 2 +- dev/ocaml/Stdlib/Array/index.html | 2 +- dev/ocaml/Stdlib/ArrayLabels/index.html | 2 +- dev/ocaml/Stdlib/Atomic/index.html | 2 +- dev/ocaml/Stdlib/Bigarray/Array0/index.html | 2 +- dev/ocaml/Stdlib/Bigarray/Array1/index.html | 2 +- dev/ocaml/Stdlib/Bigarray/Array2/index.html | 2 +- dev/ocaml/Stdlib/Bigarray/Array3/index.html | 2 +- dev/ocaml/Stdlib/Bigarray/Genarray/index.html | 2 +- dev/ocaml/Stdlib/Bigarray/index.html | 2 +- dev/ocaml/Stdlib/Bool/index.html | 2 +- dev/ocaml/Stdlib/Buffer/index.html | 2 +- dev/ocaml/Stdlib/Bytes/index.html | 2 +- dev/ocaml/Stdlib/BytesLabels/index.html | 2 +- dev/ocaml/Stdlib/Callback/index.html | 2 +- dev/ocaml/Stdlib/Char/index.html | 2 +- dev/ocaml/Stdlib/Complex/index.html | 2 +- dev/ocaml/Stdlib/Condition/index.html | 2 +- dev/ocaml/Stdlib/Digest/index.html | 2 +- dev/ocaml/Stdlib/Domain/DLS/index.html | 2 +- dev/ocaml/Stdlib/Domain/index.html | 2 +- dev/ocaml/Stdlib/Effect/Deep/index.html | 2 +- dev/ocaml/Stdlib/Effect/Shallow/index.html | 2 +- dev/ocaml/Stdlib/Effect/index.html | 2 +- dev/ocaml/Stdlib/Either/index.html | 2 +- .../Stdlib/Ephemeron/K1/Bucket/index.html | 2 +- .../Ephemeron/K1/Make/argument-1-H/index.html | 2 +- dev/ocaml/Stdlib/Ephemeron/K1/Make/index.html | 2 +- .../K1/MakeSeeded/argument-1-H/index.html | 2 +- .../Stdlib/Ephemeron/K1/MakeSeeded/index.html | 2 +- dev/ocaml/Stdlib/Ephemeron/K1/index.html | 2 +- .../Stdlib/Ephemeron/K2/Bucket/index.html | 2 +- .../K2/Make/argument-1-H1/index.html | 2 +- .../K2/Make/argument-2-H2/index.html | 2 +- dev/ocaml/Stdlib/Ephemeron/K2/Make/index.html | 2 +- .../K2/MakeSeeded/argument-1-H1/index.html | 2 +- .../K2/MakeSeeded/argument-2-H2/index.html | 2 +- .../Stdlib/Ephemeron/K2/MakeSeeded/index.html | 2 +- dev/ocaml/Stdlib/Ephemeron/K2/index.html | 2 +- .../Stdlib/Ephemeron/Kn/Bucket/index.html | 2 +- .../Ephemeron/Kn/Make/argument-1-H/index.html | 2 +- dev/ocaml/Stdlib/Ephemeron/Kn/Make/index.html | 2 +- .../Kn/MakeSeeded/argument-1-H/index.html | 2 +- .../Stdlib/Ephemeron/Kn/MakeSeeded/index.html | 2 +- dev/ocaml/Stdlib/Ephemeron/Kn/index.html | 2 +- dev/ocaml/Stdlib/Ephemeron/index.html | 2 +- .../Stdlib/Ephemeron/module-type-S/index.html | 2 +- .../Ephemeron/module-type-SeededS/index.html | 2 +- dev/ocaml/Stdlib/Filename/index.html | 2 +- dev/ocaml/Stdlib/Float/Array/index.html | 2 +- dev/ocaml/Stdlib/Float/ArrayLabels/index.html | 2 +- dev/ocaml/Stdlib/Float/index.html | 2 +- dev/ocaml/Stdlib/Format/index.html | 4 +- dev/ocaml/Stdlib/Fun/index.html | 2 +- dev/ocaml/Stdlib/Gc/Memprof/index.html | 2 +- dev/ocaml/Stdlib/Gc/index.html | 2 +- .../Hashtbl/Make/argument-1-H/index.html | 2 +- dev/ocaml/Stdlib/Hashtbl/Make/index.html | 2 +- .../MakeSeeded/argument-1-H/index.html | 2 +- .../Stdlib/Hashtbl/MakeSeeded/index.html | 2 +- dev/ocaml/Stdlib/Hashtbl/index.html | 2 +- .../Hashtbl/module-type-HashedType/index.html | 2 +- .../Stdlib/Hashtbl/module-type-S/index.html | 2 +- .../module-type-SeededHashedType/index.html | 2 +- .../Hashtbl/module-type-SeededS/index.html | 2 +- dev/ocaml/Stdlib/In_channel/index.html | 2 +- dev/ocaml/Stdlib/Int/index.html | 2 +- dev/ocaml/Stdlib/Int32/index.html | 2 +- dev/ocaml/Stdlib/Int64/index.html | 2 +- dev/ocaml/Stdlib/LargeFile/index.html | 2 +- dev/ocaml/Stdlib/Lazy/index.html | 2 +- dev/ocaml/Stdlib/Lexing/index.html | 2 +- dev/ocaml/Stdlib/List/index.html | 2 +- dev/ocaml/Stdlib/ListLabels/index.html | 2 +- .../Stdlib/Map/Make/argument-1-Ord/index.html | 2 +- dev/ocaml/Stdlib/Map/Make/index.html | 2 +- dev/ocaml/Stdlib/Map/index.html | 2 +- .../Map/module-type-OrderedType/index.html | 2 +- dev/ocaml/Stdlib/Map/module-type-S/index.html | 2 +- dev/ocaml/Stdlib/Marshal/index.html | 2 +- .../Hashtbl/Make/argument-1-H/index.html | 2 +- .../Stdlib/MoreLabels/Hashtbl/Make/index.html | 2 +- .../MakeSeeded/argument-1-H/index.html | 2 +- .../MoreLabels/Hashtbl/MakeSeeded/index.html | 2 +- .../Stdlib/MoreLabels/Hashtbl/index.html | 2 +- .../Hashtbl/module-type-HashedType/index.html | 2 +- .../Hashtbl/module-type-S/index.html | 2 +- .../module-type-SeededHashedType/index.html | 2 +- .../Hashtbl/module-type-SeededS/index.html | 2 +- .../Map/Make/argument-1-Ord/index.html | 2 +- .../Stdlib/MoreLabels/Map/Make/index.html | 2 +- dev/ocaml/Stdlib/MoreLabels/Map/index.html | 2 +- .../Map/module-type-OrderedType/index.html | 2 +- .../MoreLabels/Map/module-type-S/index.html | 2 +- .../Set/Make/argument-1-Ord/index.html | 2 +- .../Stdlib/MoreLabels/Set/Make/index.html | 2 +- dev/ocaml/Stdlib/MoreLabels/Set/index.html | 2 +- .../Set/module-type-OrderedType/index.html | 2 +- .../MoreLabels/Set/module-type-S/index.html | 2 +- dev/ocaml/Stdlib/MoreLabels/index.html | 2 +- dev/ocaml/Stdlib/Mutex/index.html | 2 +- dev/ocaml/Stdlib/Nativeint/index.html | 2 +- dev/ocaml/Stdlib/Obj/Closure/index.html | 2 +- dev/ocaml/Stdlib/Obj/Ephemeron/index.html | 2 +- .../Obj/Extension_constructor/index.html | 2 +- dev/ocaml/Stdlib/Obj/index.html | 2 +- dev/ocaml/Stdlib/Oo/index.html | 2 +- dev/ocaml/Stdlib/Option/index.html | 2 +- dev/ocaml/Stdlib/Out_channel/index.html | 2 +- dev/ocaml/Stdlib/Parsing/index.html | 2 +- dev/ocaml/Stdlib/Printexc/Slot/index.html | 2 +- dev/ocaml/Stdlib/Printexc/index.html | 2 +- dev/ocaml/Stdlib/Printf/index.html | 2 +- dev/ocaml/Stdlib/Queue/index.html | 2 +- dev/ocaml/Stdlib/Random/State/index.html | 2 +- dev/ocaml/Stdlib/Random/index.html | 2 +- dev/ocaml/Stdlib/Result/index.html | 2 +- dev/ocaml/Stdlib/Scanf/Scanning/index.html | 2 +- dev/ocaml/Stdlib/Scanf/index.html | 2 +- dev/ocaml/Stdlib/Semaphore/Binary/index.html | 2 +- .../Stdlib/Semaphore/Counting/index.html | 2 +- dev/ocaml/Stdlib/Semaphore/index.html | 2 +- dev/ocaml/Stdlib/Seq/index.html | 2 +- .../Stdlib/Set/Make/argument-1-Ord/index.html | 2 +- dev/ocaml/Stdlib/Set/Make/index.html | 2 +- dev/ocaml/Stdlib/Set/index.html | 2 +- .../Set/module-type-OrderedType/index.html | 2 +- dev/ocaml/Stdlib/Set/module-type-S/index.html | 2 +- dev/ocaml/Stdlib/Stack/index.html | 2 +- dev/ocaml/Stdlib/StdLabels/index.html | 2 +- dev/ocaml/Stdlib/String/index.html | 2 +- dev/ocaml/Stdlib/StringLabels/index.html | 2 +- .../Make/argument-1-Immediate/index.html | 2 +- .../Make/argument-2-Non_immediate/index.html | 2 +- .../Stdlib/Sys/Immediate64/Make/index.html | 2 +- dev/ocaml/Stdlib/Sys/Immediate64/index.html | 2 +- .../module-type-Immediate/index.html | 2 +- .../module-type-Non_immediate/index.html | 2 +- dev/ocaml/Stdlib/Sys/index.html | 2 +- dev/ocaml/Stdlib/Uchar/index.html | 2 +- dev/ocaml/Stdlib/Unit/index.html | 2 +- .../Stdlib/Weak/Make/argument-1-H/index.html | 2 +- dev/ocaml/Stdlib/Weak/Make/index.html | 2 +- dev/ocaml/Stdlib/Weak/index.html | 2 +- .../Stdlib/Weak/module-type-S/index.html | 2 +- dev/ocaml/Stdlib/index.html | 2 +- dev/ocaml/Str/index.html | 2 +- .../Strmatch/Make/argument-1-_/index.html | 2 +- dev/ocaml/Strmatch/Make/index.html | 2 +- dev/ocaml/Strmatch/index.html | 2 +- dev/ocaml/Strmatch/module-type-I/index.html | 2 +- .../Make/argument-1-Id/Map/index.html | 2 +- .../Make/argument-1-Id/Set/index.html | 2 +- .../Make/argument-1-Id/T/index.html | 2 +- .../Make/argument-1-Id/Tbl/index.html | 2 +- .../Make/argument-1-Id/index.html | 2 +- .../Make/index.html | 2 +- .../Strongly_connected_components/index.html | 2 +- .../module-type-S/Id/Map/index.html | 2 +- .../module-type-S/Id/Set/index.html | 2 +- .../module-type-S/Id/T/index.html | 2 +- .../module-type-S/Id/Tbl/index.html | 2 +- .../module-type-S/Id/index.html | 2 +- .../module-type-S/index.html | 2 +- dev/ocaml/Stypes/index.html | 2 +- dev/ocaml/Subst/Lazy/index.html | 2 +- dev/ocaml/Subst/index.html | 2 +- .../Switch/CtxStore/argument-1-A/index.html | 2 +- dev/ocaml/Switch/CtxStore/index.html | 2 +- .../Switch/Make/argument-1-Arg/index.html | 2 +- dev/ocaml/Switch/Make/index.html | 2 +- .../Switch/Store/argument-1-A/index.html | 2 +- dev/ocaml/Switch/Store/index.html | 2 +- dev/ocaml/Switch/index.html | 2 +- .../Switch/module-type-CtxStored/index.html | 2 +- dev/ocaml/Switch/module-type-S/index.html | 2 +- .../Switch/module-type-Stored/index.html | 2 +- dev/ocaml/Symbol/Map/index.html | 2 +- dev/ocaml/Symbol/Set/index.html | 2 +- dev/ocaml/Symbol/T/index.html | 2 +- dev/ocaml/Symbol/Tbl/index.html | 2 +- dev/ocaml/Symbol/index.html | 2 +- dev/ocaml/Symtable/index.html | 2 +- dev/ocaml/Syntaxerr/index.html | 2 +- dev/ocaml/Tag/Map/index.html | 2 +- dev/ocaml/Tag/Set/index.html | 2 +- dev/ocaml/Tag/T/index.html | 2 +- dev/ocaml/Tag/Tbl/index.html | 2 +- dev/ocaml/Tag/index.html | 2 +- dev/ocaml/Targetint/index.html | 2 +- dev/ocaml/Tast_iterator/index.html | 2 +- dev/ocaml/Tast_mapper/index.html | 2 +- dev/ocaml/Terminfo/index.html | 2 +- dev/ocaml/Thread/index.html | 2 +- dev/ocaml/Tmc/index.html | 2 +- dev/ocaml/Topcommon/index.html | 2 +- dev/ocaml/Topdirs/index.html | 2 +- dev/ocaml/Topeval/index.html | 2 +- dev/ocaml/Tophooks/index.html | 2 +- dev/ocaml/Toploop/index.html | 4 +- dev/ocaml/Topmain/index.html | 2 +- dev/ocaml/Topstart/index.html | 2 +- dev/ocaml/Trace/index.html | 2 +- dev/ocaml/Translattribute/index.html | 2 +- dev/ocaml/Translclass/index.html | 2 +- dev/ocaml/Translcore/index.html | 2 +- dev/ocaml/Translmod/index.html | 2 +- dev/ocaml/Translobj/index.html | 2 +- dev/ocaml/Translprim/index.html | 2 +- .../Traverse_for_exported_symbols/index.html | 2 +- dev/ocaml/Type_immediacy/Violation/index.html | 2 +- dev/ocaml/Type_immediacy/index.html | 2 +- dev/ocaml/Typeclass/index.html | 2 +- dev/ocaml/Typecore/Datatype_kind/index.html | 2 +- dev/ocaml/Typecore/index.html | 2 +- dev/ocaml/Typedecl/index.html | 2 +- dev/ocaml/Typedecl_immediacy/index.html | 2 +- dev/ocaml/Typedecl_properties/index.html | 2 +- dev/ocaml/Typedecl_separability/index.html | 2 +- dev/ocaml/Typedecl_unboxed/index.html | 2 +- dev/ocaml/Typedecl_variance/index.html | 2 +- dev/ocaml/Typedtree/index.html | 2 +- .../Typemod/Sig_component_kind/index.html | 2 +- dev/ocaml/Typemod/Signature_names/index.html | 2 +- dev/ocaml/Typemod/index.html | 2 +- dev/ocaml/Typeopt/index.html | 2 +- dev/ocaml/Types/MethSet/index.html | 2 +- dev/ocaml/Types/Meths/index.html | 2 +- dev/ocaml/Types/Separability/index.html | 2 +- dev/ocaml/Types/TransientTypeOps/index.html | 2 +- dev/ocaml/Types/Transient_expr/index.html | 2 +- dev/ocaml/Types/VarSet/index.html | 2 +- dev/ocaml/Types/Variance/index.html | 2 +- dev/ocaml/Types/Vars/index.html | 2 +- dev/ocaml/Types/index.html | 2 +- dev/ocaml/Typetexp/index.html | 2 +- dev/ocaml/Un_anf/index.html | 2 +- dev/ocaml/Unbox_closures/index.html | 2 +- .../Unbox_free_vars_of_closures/index.html | 2 +- dev/ocaml/Unbox_specialised_args/index.html | 2 +- dev/ocaml/Unix/LargeFile/index.html | 2 +- dev/ocaml/Unix/index.html | 2 +- dev/ocaml/UnixLabels/LargeFile/index.html | 2 +- dev/ocaml/UnixLabels/index.html | 2 +- dev/ocaml/Untypeast/index.html | 2 +- dev/ocaml/Var_within_closure/Map/index.html | 2 +- dev/ocaml/Var_within_closure/Set/index.html | 2 +- dev/ocaml/Var_within_closure/T/index.html | 2 +- dev/ocaml/Var_within_closure/Tbl/index.html | 2 +- dev/ocaml/Var_within_closure/index.html | 2 +- dev/ocaml/Variable/Map/index.html | 2 +- dev/ocaml/Variable/Pair/Map/index.html | 2 +- dev/ocaml/Variable/Pair/Set/index.html | 2 +- dev/ocaml/Variable/Pair/T/index.html | 2 +- dev/ocaml/Variable/Pair/Tbl/index.html | 2 +- dev/ocaml/Variable/Pair/index.html | 2 +- dev/ocaml/Variable/Set/index.html | 2 +- dev/ocaml/Variable/T/index.html | 2 +- dev/ocaml/Variable/Tbl/index.html | 2 +- dev/ocaml/Variable/index.html | 2 +- dev/ocaml/Warnings/index.html | 2 +- dev/ocaml/X86_ast/index.html | 2 +- dev/ocaml/X86_dsl/D/index.html | 2 +- dev/ocaml/X86_dsl/I/index.html | 2 +- dev/ocaml/X86_dsl/index.html | 2 +- dev/ocaml/X86_gas/index.html | 2 +- dev/ocaml/X86_masm/index.html | 2 +- dev/ocaml/X86_proc/index.html | 2 +- dev/ocaml/index.html | 2 +- dev/odoc.css | 463 ++++++++++++++++-- dev/odoc_search.js | 66 +++ 1010 files changed, 1517 insertions(+), 1051 deletions(-) create mode 100644 dev/moonpool/Moonpool/Fut/Advanced/index.html create mode 100644 dev/odoc_search.js diff --git a/dev/either/Either/index.html b/dev/either/Either/index.html index 788ef294..d04a2724 100644 --- a/dev/either/Either/index.html +++ b/dev/either/Either/index.html @@ -1,5 +1,5 @@ -Either (either.Either)

Module Either

type ('a, 'b) t = ('a, 'b) Stdlib.Either.t =
  1. | Left of 'a
  2. | Right of 'b

This module defines the common Either interface that is provided for all OCaml versions. For documentation of these functions, refer to the standard library.

val left : 'a -> ('a, 'b) t
val right : 'b -> ('a, 'b) t
val is_left : ('a, 'b) t -> bool
val is_right : ('a, 'b) t -> bool
val find_left : ('a, 'b) t -> 'a option
val find_right : ('a, 'b) t -> 'b option
val map_left : ('a1 -> 'a2) -> ('a1, 'b) t -> ('a2, 'b) t
val map_right : ('b1 -> 'b2) -> ('a, 'b1) t -> ('a, 'b2) t
val map : +Either (either.Either)

Module Either

type ('a, 'b) t = ('a, 'b) Stdlib.Either.t =
  1. | Left of 'a
  2. | Right of 'b

This module defines the common Either interface that is provided for all OCaml versions. For documentation of these functions, refer to the standard library.

val left : 'a -> ('a, 'b) t
val right : 'b -> ('a, 'b) t
val is_left : ('a, 'b) t -> bool
val is_right : ('a, 'b) t -> bool
val find_left : ('a, 'b) t -> 'a option
val find_right : ('a, 'b) t -> 'b option
val map_left : ('a1 -> 'a2) -> ('a1, 'b) t -> ('a2, 'b) t
val map_right : ('b1 -> 'b2) -> ('a, 'b1) t -> ('a, 'b2) t
val map : left:('a1 -> 'a2) -> right:('b1 -> 'b2) -> ('a1, 'b1) t -> diff --git a/dev/either/index.html b/dev/either/index.html index 5793f4b5..41521aea 100644 --- a/dev/either/index.html +++ b/dev/either/index.html @@ -1,2 +1,2 @@ -index (either.index)

Package either

Package info

changes-files
license-files
readme-files
+index (either.index)

Package either

Package info

changes-files
license-files
readme-files
diff --git a/dev/moonpool/Moonpool/Atomic/index.html b/dev/moonpool/Moonpool/Atomic/index.html index ca57fc78..5f1f34ce 100644 --- a/dev/moonpool/Moonpool/Atomic/index.html +++ b/dev/moonpool/Moonpool/Atomic/index.html @@ -1,2 +1,2 @@ -Atomic (moonpool.Moonpool.Atomic)

Module Moonpool.Atomic

Atomic values.

This is either a shim using ref, on pre-OCaml 5, or the standard Atomic module on OCaml 5.

include module type of struct include Stdlib.Atomic end
type !'a t = 'a Stdlib.Atomic.t

An atomic (mutable) reference to a value of type 'a.

val make : 'a -> 'a t

Create an atomic reference.

val get : 'a t -> 'a

Get the current value of the atomic reference.

val set : 'a t -> 'a -> unit

Set a new value for the atomic reference.

val exchange : 'a t -> 'a -> 'a

Set a new value for the atomic reference, and return the current value.

val compare_and_set : 'a t -> 'a -> 'a -> bool

compare_and_set r seen v sets the new value of r to v only if its current value is physically equal to seen -- the comparison and the set occur atomically. Returns true if the comparison succeeded (so the set happened) and false otherwise.

val fetch_and_add : int t -> int -> int

fetch_and_add r n atomically increments the value of r by n, and returns the current value (before the increment).

val incr : int t -> unit

incr r atomically increments the value of r by 1.

val decr : int t -> unit

decr r atomically decrements the value of r by 1.

+Atomic (moonpool.Moonpool.Atomic)

Module Moonpool.Atomic

Atomic values.

This is either a shim using ref, on pre-OCaml 5, or the standard Atomic module on OCaml 5.

include module type of struct include Stdlib.Atomic end
type !'a t = 'a Stdlib.Atomic.t

An atomic (mutable) reference to a value of type 'a.

val make : 'a -> 'a t

Create an atomic reference.

val get : 'a t -> 'a

Get the current value of the atomic reference.

val set : 'a t -> 'a -> unit

Set a new value for the atomic reference.

val exchange : 'a t -> 'a -> 'a

Set a new value for the atomic reference, and return the current value.

val compare_and_set : 'a t -> 'a -> 'a -> bool

compare_and_set r seen v sets the new value of r to v only if its current value is physically equal to seen -- the comparison and the set occur atomically. Returns true if the comparison succeeded (so the set happened) and false otherwise.

val fetch_and_add : int t -> int -> int

fetch_and_add r n atomically increments the value of r by n, and returns the current value (before the increment).

val incr : int t -> unit

incr r atomically increments the value of r by 1.

val decr : int t -> unit

decr r atomically decrements the value of r by 1.

diff --git a/dev/moonpool/Moonpool/Blocking_queue/index.html b/dev/moonpool/Moonpool/Blocking_queue/index.html index 91897a43..f521b67c 100644 --- a/dev/moonpool/Moonpool/Blocking_queue/index.html +++ b/dev/moonpool/Moonpool/Blocking_queue/index.html @@ -1,5 +1,5 @@ -Blocking_queue (moonpool.Moonpool.Blocking_queue)

Module Moonpool.Blocking_queue

A simple blocking queue.

This queue is quite basic and will not behave well under heavy contention. However, it can be sufficient for many practical use cases.

NOTE: this queue will typically block the caller thread in case the operation (push/pop) cannot proceed. Be wary of deadlocks when using the queue from a pool when you expect the other end to also be produced/consumed from the same pool.

See discussion on Fut.wait_block for more details on deadlocks and how to mitigate the risk of running into them.

More scalable queues can be found in Lockfree (https://github.com/ocaml-multicore/lockfree/)

type 'a t

Unbounded blocking queue.

This queue is thread-safe and will block when calling pop on it when it's empty.

val create : unit -> _ t

Create a new unbounded queue.

val size : _ t -> int

Number of items currently in the queue. Note that pop might still block if this returns a non-zero number, since another thread might have consumed the items in the mean time.

  • since 0.2
exception Closed
val push : 'a t -> 'a -> unit

push q x pushes x into q, and returns ().

In the current implementation, push q will never block for a long time, it will only block while waiting for a lock so it can push the element.

  • raises Closed

    if the queue is closed (by a previous call to close q)

val pop : 'a t -> 'a

pop q pops the next element in q. It might block until an element comes.

  • raises Closed

    if the queue was closed before a new element was available.

val close : _ t -> unit

Close the queue, meaning there won't be any more push allowed, ie push will raise Closed.

pop will keep working and will return the elements present in the queue, until it's entirely drained; then pop will also raise Closed.

val try_pop : force_lock:bool -> 'a t -> 'a option

try_pop q immediately pops the first element of q, if any, or returns None without blocking.

  • parameter force_lock

    if true, use Mutex.lock (which can block under contention); if false, use Mutex.try_lock, which might return None even in presence of an element if there's contention

val try_push : 'a t -> 'a -> bool

try_push q x tries to push into q, in which case it returns true; or it fails to push and returns false without blocking.

  • raises Closed

    if the locking succeeded but the queue is closed.

val transfer : 'a t -> 'a Stdlib.Queue.t -> unit

transfer bq q2 transfers all items presently in bq into q2 in one atomic section, and clears bq. It blocks if no element is in bq.

This is useful to consume elements from the queue in batch. Create a Queue.t locally:

let dowork (work_queue: job Bb_queue.t) =
+Blocking_queue (moonpool.Moonpool.Blocking_queue)

Module Moonpool.Blocking_queue

A simple blocking queue.

This queue is quite basic and will not behave well under heavy contention. However, it can be sufficient for many practical use cases.

NOTE: this queue will typically block the caller thread in case the operation (push/pop) cannot proceed. Be wary of deadlocks when using the queue from a pool when you expect the other end to also be produced/consumed from the same pool.

See discussion on Fut.wait_block for more details on deadlocks and how to mitigate the risk of running into them.

More scalable queues can be found in Lockfree (https://github.com/ocaml-multicore/lockfree/)

type 'a t

Unbounded blocking queue.

This queue is thread-safe and will block when calling pop on it when it's empty.

val create : unit -> _ t

Create a new unbounded queue.

val size : _ t -> int

Number of items currently in the queue. Note that pop might still block if this returns a non-zero number, since another thread might have consumed the items in the mean time.

  • since 0.2
exception Closed
val push : 'a t -> 'a -> unit

push q x pushes x into q, and returns ().

In the current implementation, push q will never block for a long time, it will only block while waiting for a lock so it can push the element.

  • raises Closed

    if the queue is closed (by a previous call to close q)

val pop : 'a t -> 'a

pop q pops the next element in q. It might block until an element comes.

  • raises Closed

    if the queue was closed before a new element was available.

val close : _ t -> unit

Close the queue, meaning there won't be any more push allowed, ie push will raise Closed.

pop will keep working and will return the elements present in the queue, until it's entirely drained; then pop will also raise Closed.

val try_pop : force_lock:bool -> 'a t -> 'a option

try_pop q immediately pops the first element of q, if any, or returns None without blocking.

  • parameter force_lock

    if true, use Mutex.lock (which can block under contention); if false, use Mutex.try_lock, which might return None even in presence of an element if there's contention

val try_push : 'a t -> 'a -> bool

try_push q x tries to push into q, in which case it returns true; or it fails to push and returns false without blocking.

  • raises Closed

    if the locking succeeded but the queue is closed.

val transfer : 'a t -> 'a Stdlib.Queue.t -> unit

transfer bq q2 transfers all items presently in bq into q2 in one atomic section, and clears bq. It blocks if no element is in bq.

This is useful to consume elements from the queue in batch. Create a Queue.t locally:

let dowork (work_queue: job Bb_queue.t) =
   (* local queue, not thread safe *)
   let local_q = Queue.create() in
   try
diff --git a/dev/moonpool/Moonpool/Bounded_queue/index.html b/dev/moonpool/Moonpool/Bounded_queue/index.html
index 4b4b06b9..29ca03a9 100644
--- a/dev/moonpool/Moonpool/Bounded_queue/index.html
+++ b/dev/moonpool/Moonpool/Bounded_queue/index.html
@@ -1,2 +1,2 @@
 
-Bounded_queue (moonpool.Moonpool.Bounded_queue)

Module Moonpool.Bounded_queue

A blocking queue of finite size.

This queue, while still using locks underneath (like the regular blocking queue) should be enough for usage under reasonable contention.

The bounded size is helpful whenever some form of backpressure is desirable: if the queue is used to communicate between producer(s) and consumer(s), the consumer(s) can limit the rate at which producer(s) send new work down their way. Whenever the queue is full, means that producer(s) will have to wait before pushing new work.

  • since 0.4
type 'a t

A bounded queue.

val create : max_size:int -> unit -> 'a t
val close : _ t -> unit

close q closes q. No new elements can be pushed into q, and after all the elements still in q currently are pop'd, pop will also raise Closed.

exception Closed
val push : 'a t -> 'a -> unit

push q x pushes x at the end of the queue. If q is full, this will block until there is room for x.

val try_push : force_lock:bool -> 'a t -> 'a -> bool

try_push q x attempts to push x into q, but abandons if it cannot acquire q or if q is full.

  • parameter force_lock

    if true, use Mutex.lock (which can block under contention); if false, use Mutex.try_lock, which might return false even if there's room in the queue.

val pop : 'a t -> 'a

pop q pops the first element off q. It blocks if q is empty, until some element becomes available.

  • raises Closed

    if q is empty and closed.

val try_pop : force_lock:bool -> 'a t -> 'a option

try_pop ~force_lock q tries to pop the first element, or returns None if no element is available or if it failed to acquire q.

  • parameter force_lock

    if true, use Mutex.lock (which can block under contention); if false, use Mutex.try_lock, which might return None even in presence of an element if there's contention.

  • raises Closed

    if q is empty and closed.

val size : _ t -> int

Number of elements currently in q

val max_size : _ t -> int

Maximum size of the queue. See create.

val transfer : 'a t -> 'a Stdlib.Queue.t -> unit

transfer bq q2 transfers all elements currently available in bq into local queue q2, and clears bq, atomically. It blocks if bq is empty.

See Bb_queue.transfer for more details.

  • raises Closed

    if bq is empty and closed.

type 'a gen = unit -> 'a option
type 'a iter = ('a -> unit) -> unit
val to_iter : 'a t -> 'a iter

to_iter q returns an iterator over all items in the queue. This might not terminate if q is never closed.

val to_gen : 'a t -> 'a gen

to_gen q returns a generator from the queue.

val to_seq : 'a t -> 'a Stdlib.Seq.t

to_gen q returns a (transient) sequence from the queue.

+Bounded_queue (moonpool.Moonpool.Bounded_queue)

Module Moonpool.Bounded_queue

A blocking queue of finite size.

This queue, while still using locks underneath (like the regular blocking queue) should be enough for usage under reasonable contention.

The bounded size is helpful whenever some form of backpressure is desirable: if the queue is used to communicate between producer(s) and consumer(s), the consumer(s) can limit the rate at which producer(s) send new work down their way. Whenever the queue is full, means that producer(s) will have to wait before pushing new work.

  • since 0.4
type 'a t

A bounded queue.

val create : max_size:int -> unit -> 'a t
val close : _ t -> unit

close q closes q. No new elements can be pushed into q, and after all the elements still in q currently are pop'd, pop will also raise Closed.

exception Closed
val push : 'a t -> 'a -> unit

push q x pushes x at the end of the queue. If q is full, this will block until there is room for x.

val try_push : force_lock:bool -> 'a t -> 'a -> bool

try_push q x attempts to push x into q, but abandons if it cannot acquire q or if q is full.

  • parameter force_lock

    if true, use Mutex.lock (which can block under contention); if false, use Mutex.try_lock, which might return false even if there's room in the queue.

val pop : 'a t -> 'a

pop q pops the first element off q. It blocks if q is empty, until some element becomes available.

  • raises Closed

    if q is empty and closed.

val try_pop : force_lock:bool -> 'a t -> 'a option

try_pop ~force_lock q tries to pop the first element, or returns None if no element is available or if it failed to acquire q.

  • parameter force_lock

    if true, use Mutex.lock (which can block under contention); if false, use Mutex.try_lock, which might return None even in presence of an element if there's contention.

  • raises Closed

    if q is empty and closed.

val size : _ t -> int

Number of elements currently in q

val max_size : _ t -> int

Maximum size of the queue. See create.

val transfer : 'a t -> 'a Stdlib.Queue.t -> unit

transfer bq q2 transfers all elements currently available in bq into local queue q2, and clears bq, atomically. It blocks if bq is empty.

See Bb_queue.transfer for more details.

  • raises Closed

    if bq is empty and closed.

type 'a gen = unit -> 'a option
type 'a iter = ('a -> unit) -> unit
val to_iter : 'a t -> 'a iter

to_iter q returns an iterator over all items in the queue. This might not terminate if q is never closed.

val to_gen : 'a t -> 'a gen

to_gen q returns a generator from the queue.

val to_seq : 'a t -> 'a Stdlib.Seq.t

to_gen q returns a (transient) sequence from the queue.

diff --git a/dev/moonpool/Moonpool/Chan/index.html b/dev/moonpool/Moonpool/Chan/index.html index c0f57d5a..1ca3b25d 100644 --- a/dev/moonpool/Moonpool/Chan/index.html +++ b/dev/moonpool/Moonpool/Chan/index.html @@ -1,2 +1,2 @@ -Chan (moonpool.Moonpool.Chan)

Module Moonpool.Chan

Channels.

Channels are pipelines of values where threads can push into one end, and pull from the other end.

Unlike Moonpool.Blocking_queue, channels are designed so that pushing never blocks, and pop'ing values returns a future.

  • since 0.3
type 'a or_error = 'a Fut.or_error
type 'a t

Channel carrying values of type 'a.

val create : unit -> 'a t

Create a channel.

exception Closed
val push : 'a t -> 'a -> unit

push chan x pushes x into chan. This does not block.

  • raises Closed

    if the channel is closed.

val pop : 'a t -> 'a Fut.t

Pop an element. This returns a future that will be fulfilled when an element is available.

  • raises Closed

    if the channel is closed, or fails the future if the channel is closed before an element is available for it.

val try_pop : 'a t -> 'a option

try_pop chan pops and return an element if one is available immediately. Otherwise it returns None.

val pop_block_exn : 'a t -> 'a

Like pop, but blocks if an element is not available immediately. The precautions around blocking from inside a thread pool are the same as explained in Fut.wait_block.

val close : _ t -> unit

Close the channel. Further push and pop calls will fail. This is idempotent.

val pop_await : 'a t -> 'a

Like pop but suspends the current thread until an element is available. See await for more details.

  • since 0.3
+Chan (moonpool.Moonpool.Chan)

Module Moonpool.Chan

Channels.

Channels are pipelines of values where threads can push into one end, and pull from the other end.

Unlike Moonpool.Blocking_queue, channels are designed so that pushing never blocks, and pop'ing values returns a future.

  • since 0.3
type 'a or_error = 'a Fut.or_error
type 'a t

Channel carrying values of type 'a.

val create : unit -> 'a t

Create a channel.

exception Closed
val push : 'a t -> 'a -> unit

push chan x pushes x into chan. This does not block.

  • raises Closed

    if the channel is closed.

val pop : 'a t -> 'a Fut.t

Pop an element. This returns a future that will be fulfilled when an element is available.

  • raises Closed

    if the channel is closed, or fails the future if the channel is closed before an element is available for it.

val try_pop : 'a t -> 'a option

try_pop chan pops and return an element if one is available immediately. Otherwise it returns None.

val pop_block_exn : 'a t -> 'a

Like pop, but blocks if an element is not available immediately. The precautions around blocking from inside a thread pool are the same as explained in Fut.wait_block.

val close : _ t -> unit

Close the channel. Further push and pop calls will fail. This is idempotent.

val pop_await : 'a t -> 'a

Like pop but suspends the current thread until an element is available. See await for more details.

  • since 0.3
diff --git a/dev/moonpool/Moonpool/Fifo_pool/For_runner_implementors/index.html b/dev/moonpool/Moonpool/Fifo_pool/For_runner_implementors/index.html index c677347f..ec69133d 100644 --- a/dev/moonpool/Moonpool/Fifo_pool/For_runner_implementors/index.html +++ b/dev/moonpool/Moonpool/Fifo_pool/For_runner_implementors/index.html @@ -1,5 +1,5 @@ -For_runner_implementors (moonpool.Moonpool.Fifo_pool.For_runner_implementors)

Module Fifo_pool.For_runner_implementors

This module is specifically intended for users who implement their own runners. Regular users of Moonpool should not need to look at it.

val create : +For_runner_implementors (moonpool.Moonpool.Fifo_pool.For_runner_implementors)

Module Fifo_pool.For_runner_implementors

This module is specifically intended for users who implement their own runners. Regular users of Moonpool should not need to look at it.

val create : size:(unit -> int) -> num_tasks:(unit -> int) -> shutdown:(wait:bool -> unit -> unit) -> diff --git a/dev/moonpool/Moonpool/Fifo_pool/index.html b/dev/moonpool/Moonpool/Fifo_pool/index.html index 60d78536..3ec08713 100644 --- a/dev/moonpool/Moonpool/Fifo_pool/index.html +++ b/dev/moonpool/Moonpool/Fifo_pool/index.html @@ -1,5 +1,5 @@ -Fifo_pool (moonpool.Moonpool.Fifo_pool)

Module Moonpool.Fifo_pool

A simple thread pool in FIFO order.

FIFO: first-in, first-out. Basically tasks are put into a queue, and worker threads pull them out of the queue at the other end.

Since this uses a single blocking queue to manage tasks, it's very simple and reliable. The number of worker threads is fixed, but they are spread over several domains to enable parallelism.

This can be useful for latency-sensitive applications (e.g. as a pool of workers for network servers). Work-stealing pools might have higher throughput but they're very unfair to some tasks; by contrast, here, older tasks have priority over younger tasks.

  • since 0.5
include module type of Runner
type task = unit -> unit
type t

A runner.

If a runner is no longer needed, shutdown can be used to signal all worker threads in it to stop (after they finish their work), and wait for them to stop.

The threads are distributed across a fixed domain pool (whose size is determined by Domain.recommended_domain_count on OCaml 5, and simple the single runtime on OCaml 4).

val size : t -> int

Number of threads/workers.

val num_tasks : t -> int

Current number of tasks. This is at best a snapshot, useful for metrics and debugging.

val shutdown : t -> unit

Shutdown the runner and wait for it to terminate. Idempotent.

val shutdown_without_waiting : t -> unit

Shutdown the pool, and do not wait for it to terminate. Idempotent.

exception Shutdown
val run_async : t -> task -> unit

run_async pool f schedules f for later execution on the runner in one of the threads. f() will run on one of the runner's worker threads/domains.

  • raises Shutdown

    if the runner was shut down before run_async was called.

val run_wait_block : t -> (unit -> 'a) -> 'a

run_wait_block pool f schedules f for later execution on the pool, like run_async. It then blocks the current thread until f() is done executing, and returns its result. If f() raises an exception, then run_wait_block pool f will raise it as well.

NOTE be careful with deadlocks (see notes in Fut.wait_block about the required discipline to avoid deadlocks).

module For_runner_implementors : sig ... end

This module is specifically intended for users who implement their own runners. Regular users of Moonpool should not need to look at it.

val get_current_runner : unit -> t option

Access the current runner. This returns Some r if the call happens on a thread that belongs in a runner.

  • since 0.5
type ('a, 'b) create_args = +Fifo_pool (moonpool.Moonpool.Fifo_pool)

Module Moonpool.Fifo_pool

A simple thread pool in FIFO order.

FIFO: first-in, first-out. Basically tasks are put into a queue, and worker threads pull them out of the queue at the other end.

Since this uses a single blocking queue to manage tasks, it's very simple and reliable. The number of worker threads is fixed, but they are spread over several domains to enable parallelism.

This can be useful for latency-sensitive applications (e.g. as a pool of workers for network servers). Work-stealing pools might have higher throughput but they're very unfair to some tasks; by contrast, here, older tasks have priority over younger tasks.

  • since 0.5
include module type of Runner
type task = unit -> unit
type t

A runner.

If a runner is no longer needed, shutdown can be used to signal all worker threads in it to stop (after they finish their work), and wait for them to stop.

The threads are distributed across a fixed domain pool (whose size is determined by Domain.recommended_domain_count on OCaml 5, and simple the single runtime on OCaml 4).

val size : t -> int

Number of threads/workers.

val num_tasks : t -> int

Current number of tasks. This is at best a snapshot, useful for metrics and debugging.

val shutdown : t -> unit

Shutdown the runner and wait for it to terminate. Idempotent.

val shutdown_without_waiting : t -> unit

Shutdown the pool, and do not wait for it to terminate. Idempotent.

exception Shutdown
val run_async : t -> task -> unit

run_async pool f schedules f for later execution on the runner in one of the threads. f() will run on one of the runner's worker threads/domains.

  • raises Shutdown

    if the runner was shut down before run_async was called.

val run_wait_block : t -> (unit -> 'a) -> 'a

run_wait_block pool f schedules f for later execution on the pool, like run_async. It then blocks the current thread until f() is done executing, and returns its result. If f() raises an exception, then run_wait_block pool f will raise it as well.

NOTE be careful with deadlocks (see notes in Fut.wait_block about the required discipline to avoid deadlocks).

module For_runner_implementors : sig ... end

This module is specifically intended for users who implement their own runners. Regular users of Moonpool should not need to look at it.

val get_current_runner : unit -> t option

Access the current runner. This returns Some r if the call happens on a thread that belongs in a runner.

  • since 0.5
type ('a, 'b) create_args = ?on_init_thread:(dom_id:int -> t_id:int -> unit -> unit) -> ?on_exit_thread:(dom_id:int -> t_id:int -> unit -> unit) -> ?on_exn:(exn -> Stdlib.Printexc.raw_backtrace -> unit) -> diff --git a/dev/moonpool/Moonpool/Fork_join/index.html b/dev/moonpool/Moonpool/Fork_join/index.html index 49950463..7daf7a14 100644 --- a/dev/moonpool/Moonpool/Fork_join/index.html +++ b/dev/moonpool/Moonpool/Fork_join/index.html @@ -1,5 +1,5 @@ -Fork_join (moonpool.Moonpool.Fork_join)

Module Moonpool.Fork_join

Fork-join primitives.

NOTE These are only available on OCaml 5.0 and above.

  • since 0.3
val both : (unit -> 'a) -> (unit -> 'b) -> 'a * 'b

both f g runs f() and g(), potentially in parallel, and returns their result when both are done. If any of f() and g() fails, then the whole computation fails.

This must be run from within the pool: for example, inside Pool.run or inside a Fut.spawn computation. This is because it relies on an effect handler to be installed.

  • since 0.3

NOTE this is only available on OCaml 5.

val both_ignore : (unit -> _) -> (unit -> _) -> unit

Same as both f g |> ignore.

  • since 0.3

NOTE this is only available on OCaml 5.

val for_ : ?chunk_size:int -> int -> (int -> int -> unit) -> unit

for_ n f is the parallel version of for i=0 to n-1 do f i done.

f is called with parameters low and high and must use them like so:

for j = low to high do (* … actual work *) done 

. If chunk_size=1 then low=high and the loop is not actually needed.

  • parameter chunk_size

    controls the granularity of parallelism. The default chunk size is not specified. See all_array or all_list for more details.

    Example:

    let total_sum = Atomic.make 0
    +Fork_join (moonpool.Moonpool.Fork_join)

    Module Moonpool.Fork_join

    Fork-join primitives.

    NOTE These are only available on OCaml 5.0 and above.

    • since 0.3
    val both : (unit -> 'a) -> (unit -> 'b) -> 'a * 'b

    both f g runs f() and g(), potentially in parallel, and returns their result when both are done. If any of f() and g() fails, then the whole computation fails.

    This must be run from within the pool: for example, inside Pool.run or inside a Fut.spawn computation. This is because it relies on an effect handler to be installed.

    • since 0.3

    NOTE this is only available on OCaml 5.

    val both_ignore : (unit -> _) -> (unit -> _) -> unit

    Same as both f g |> ignore.

    • since 0.3

    NOTE this is only available on OCaml 5.

    val for_ : ?chunk_size:int -> int -> (int -> int -> unit) -> unit

    for_ n f is the parallel version of for i=0 to n-1 do f i done.

    f is called with parameters low and high and must use them like so:

    for j = low to high do (* … actual work *) done 

    . If chunk_size=1 then low=high and the loop is not actually needed.

    • parameter chunk_size

      controls the granularity of parallelism. The default chunk size is not specified. See all_array or all_list for more details.

      Example:

      let total_sum = Atomic.make 0
       
       let() = for_ ~chunk_size:5 100
         (fun low high ->
      diff --git a/dev/moonpool/Moonpool/Fut/Advanced/index.html b/dev/moonpool/Moonpool/Fut/Advanced/index.html
      new file mode 100644
      index 00000000..b45006e2
      --- /dev/null
      +++ b/dev/moonpool/Moonpool/Fut/Advanced/index.html
      @@ -0,0 +1,7 @@
      +
      +Advanced (moonpool.Moonpool.Fut.Advanced)

      Module Fut.Advanced

      val barrier_on_abstract_container_of_futures : + iter:(('a t -> unit) -> 'cont -> unit) -> + len:('cont -> int) -> + aggregate_results:(('a t -> 'a) -> 'cont -> 'res) -> + 'cont -> + 'res t

      barrier_on_abstract_container_of_futures ~iter ~aggregate_results ~len cont takes a container of futures (cont), with len elements, and returns a future result of type res (possibly another type of container).

      This waits for all futures in cont: 'cont to be done (futures obtained via iter <some function> cont). If they all succeed, their results are aggregated into a new result of type 'res via aggregate_results <some function> cont.

      NOTE: the behavior is not specified if iter f cont (for a function f) doesn't call f on exactly len cont elements.

      • since NEXT_RELEASE
      diff --git a/dev/moonpool/Moonpool/Fut/Infix/index.html b/dev/moonpool/Moonpool/Fut/Infix/index.html index a48db867..2c2cd687 100644 --- a/dev/moonpool/Moonpool/Fut/Infix/index.html +++ b/dev/moonpool/Moonpool/Fut/Infix/index.html @@ -1,2 +1,2 @@ -Infix (moonpool.Moonpool.Fut.Infix)

      Module Fut.Infix

      • since 0.5
      val (>|=) : 'a t -> ('a -> 'b) -> 'b t
      val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
      val let+ : 'a t -> ('a -> 'b) -> 'b t
      val and+ : 'a t -> 'b t -> ('a * 'b) t
      val let* : 'a t -> ('a -> 'b t) -> 'b t
      val and* : 'a t -> 'b t -> ('a * 'b) t
      +Infix (moonpool.Moonpool.Fut.Infix)

      Module Fut.Infix

      • since 0.5
      val (>|=) : 'a t -> ('a -> 'b) -> 'b t
      val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
      val let+ : 'a t -> ('a -> 'b) -> 'b t
      val and+ : 'a t -> 'b t -> ('a * 'b) t
      val let* : 'a t -> ('a -> 'b t) -> 'b t
      val and* : 'a t -> 'b t -> ('a * 'b) t
      diff --git a/dev/moonpool/Moonpool/Fut/index.html b/dev/moonpool/Moonpool/Fut/index.html index 45702d6c..af8e8e2c 100644 --- a/dev/moonpool/Moonpool/Fut/index.html +++ b/dev/moonpool/Moonpool/Fut/index.html @@ -1,2 +1,2 @@ -Fut (moonpool.Moonpool.Fut)

      Module Moonpool.Fut

      Futures.

      A future of type 'a t represents the result of a computation that will yield a value of type 'a.

      Typically, the computation is running on a thread pool Runner.t and will proceed on some worker. Once set, a future cannot change. It either succeeds (storing a Ok x with x: 'a), or fail (storing a Error (exn, bt) with an exception and the corresponding backtrace).

      Combinators such as map and join_array can be used to produce futures from other futures (in a monadic way). Some combinators take a on argument to specify a runner on which the intermediate computation takes place; for example map ~on:pool ~f fut maps the value in fut using function f, applicatively; the call to f happens on the runner pool (once fut resolves successfully with a value).

      type 'a or_error = ('a, exn * Stdlib.Printexc.raw_backtrace) result
      type 'a t

      A future with a result of type 'a.

      type 'a promise

      A promise, which can be fulfilled exactly once to set the corresponding future

      val make : unit -> 'a t * 'a promise

      Make a new future with the associated promise

      val on_result : 'a t -> ('a or_error -> unit) -> unit

      on_result fut f registers f to be called in the future when fut is set ; or calls f immediately if fut is already set.

      exception Already_fulfilled
      val fulfill : 'a promise -> 'a or_error -> unit

      Fullfill the promise, setting the future at the same time.

      val fulfill_idempotent : 'a promise -> 'a or_error -> unit

      Fullfill the promise, setting the future at the same time. Does nothing if the promise is already fulfilled.

      val return : 'a -> 'a t

      Already settled future, with a result

      val fail : exn -> Stdlib.Printexc.raw_backtrace -> _ t

      Already settled future, with a failure

      val of_result : 'a or_error -> 'a t
      val is_resolved : _ t -> bool

      is_resolved fut is true iff fut is resolved.

      val peek : 'a t -> 'a or_error option

      peek fut returns Some r if fut is currently resolved with r, and None if fut is not resolved yet.

      exception Not_ready
      • since 0.2
      val get_or_fail : 'a t -> 'a or_error

      get_or_fail fut obtains the result from fut if it's fulfilled (i.e. if peek fut returns Some res, get_or_fail fut returns res).

      • since 0.2
      val get_or_fail_exn : 'a t -> 'a

      get_or_fail_exn fut obtains the result from fut if it's fulfilled, like get_or_fail. If the result is an Error _, the exception inside is re-raised.

      • since 0.2
      val is_done : _ t -> bool

      Is the future resolved? This is the same as peek fut |> Option.is_some.

      • since 0.2

      Combinators

      val spawn : on:Runner.t -> (unit -> 'a) -> 'a t

      spaw ~on f runs f() on the given runner on, and return a future that will hold its result.

      val spawn_on_current_runner : (unit -> 'a) -> 'a t

      This must be run from inside a runner, and schedules the new task on it as well.

      See Runner.get_current_runner to see how the runner is found.

      • since 0.5
      • raises Failure

        if run from outside a runner.

      val reify_error : 'a t -> 'a or_error t

      reify_error fut turns a failing future into a non-failing one that contain Error (exn, bt). A non-failing future returning x is turned into Ok x

      • since 0.4
      val map : ?on:Runner.t -> f:('a -> 'b) -> 'a t -> 'b t

      map ?on ~f fut returns a new future fut2 that resolves with f x if fut resolved with x; and fails with e if fut fails with e or f x raises e.

      • parameter on

        if provided, f runs on the given runner

      val bind : ?on:Runner.t -> f:('a -> 'b t) -> 'a t -> 'b t

      bind ?on ~f fut returns a new future fut2 that resolves like the future f x if fut resolved with x; and fails with e if fut fails with e or f x raises e.

      • parameter on

        if provided, f runs on the given runner

      val bind_reify_error : ?on:Runner.t -> f:('a or_error -> 'b t) -> 'a t -> 'b t

      bind_reify_error ?on ~f fut returns a new future fut2 that resolves like the future f (Ok x) if fut resolved with x; and resolves like the future f (Error (exn, bt)) if fut fails with exn and backtrace bt.

      • parameter on

        if provided, f runs on the given runner

      • since 0.4
      val join : 'a t t -> 'a t

      join fut is fut >>= Fun.id. It joins the inner layer of the future.

      • since 0.2
      val both : 'a t -> 'b t -> ('a * 'b) t

      both a b succeeds with x, y if a succeeds with x and b succeeds with y, or fails if any of them fails.

      val choose : 'a t -> 'b t -> ('a, 'b) Either.t t

      choose a b succeeds Left x or Right y if a succeeds with x or b succeeds with y, or fails if both of them fails. If they both succeed, it is not specified which result is used.

      val choose_same : 'a t -> 'a t -> 'a t

      choose_same a b succeeds with the value of one of a or b if they succeed, or fails if both fail. If they both succeed, it is not specified which result is used.

      val join_array : 'a t array -> 'a array t

      Wait for all the futures in the array. Fails if any future fails.

      val join_list : 'a t list -> 'a list t

      Wait for all the futures in the list. Fails if any future fails.

      val map_list : f:('a -> 'b t) -> 'a list -> 'b list t

      map_list ~f l is like join_list @@ List.map f l.

      • since NEXT_RELEASE
      val wait_array : _ t array -> unit t

      wait_array arr waits for all futures in arr to resolve. It discards the individual results of futures in arr. It fails if any future fails.

      val wait_list : _ t list -> unit t

      wait_list l waits for all futures in l to resolve. It discards the individual results of futures in l. It fails if any future fails.

      val for_ : on:Runner.t -> int -> (int -> unit) -> unit t

      for_ ~on n f runs f 0, f 1, …, f (n-1) on the runner, and returns a future that resolves when all the tasks have resolved, or fails as soon as one task has failed.

      val for_array : on:Runner.t -> 'a array -> (int -> 'a -> unit) -> unit t

      for_array ~on arr f runs f 0 arr.(0), …, f (n-1) arr.(n-1) in the runner (where n = Array.length arr), and returns a future that resolves when all the tasks are done, or fails if any of them fails.

      • since 0.2
      val for_list : on:Runner.t -> 'a list -> ('a -> unit) -> unit t

      for_list ~on l f is like for_array ~on (Array.of_list l) f.

      • since 0.2

      Await

      NOTE This is only available on OCaml 5.

      val await : 'a t -> 'a

      await fut suspends the current tasks until fut is fulfilled, then resumes the task on this same runner.

      • since 0.3

      This must only be run from inside the runner itself. The runner must support Suspend_. NOTE: only on OCaml 5.x

      Blocking

      val wait_block : 'a t -> 'a or_error

      wait_block fut blocks the current thread until fut is resolved, and returns its value.

      NOTE: A word of warning: this will monopolize the calling thread until the future resolves. This can also easily cause deadlocks, if enough threads in a pool call wait_block on futures running on the same pool or a pool depending on it.

      A good rule to avoid deadlocks is to run this from outside of any pool, or to have an acyclic order between pools where wait_block is only called from a pool on futures evaluated in a pool that comes lower in the hierarchy. If this rule is broken, it is possible for all threads in a pool to wait for futures that can only make progress on these same threads, hence the deadlock.

      val wait_block_exn : 'a t -> 'a

      Same as wait_block but re-raises the exception if the future failed.

      Infix operators

      These combinators run on either the current pool (if present), or on the same thread that just fulfilled the previous future if not.

      They were previously present as module Infix_local and val infix, but are now simplified.

      • since 0.5
      module Infix : sig ... end
      include module type of Infix
      • since 0.5
      val (>|=) : 'a t -> ('a -> 'b) -> 'b t
      val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
      val let+ : 'a t -> ('a -> 'b) -> 'b t
      val and+ : 'a t -> 'b t -> ('a * 'b) t
      val let* : 'a t -> ('a -> 'b t) -> 'b t
      val and* : 'a t -> 'b t -> ('a * 'b) t
      module Infix_local = Infix
      +Fut (moonpool.Moonpool.Fut)

      Module Moonpool.Fut

      Futures.

      A future of type 'a t represents the result of a computation that will yield a value of type 'a.

      Typically, the computation is running on a thread pool Runner.t and will proceed on some worker. Once set, a future cannot change. It either succeeds (storing a Ok x with x: 'a), or fail (storing a Error (exn, bt) with an exception and the corresponding backtrace).

      Combinators such as map and join_array can be used to produce futures from other futures (in a monadic way). Some combinators take a on argument to specify a runner on which the intermediate computation takes place; for example map ~on:pool ~f fut maps the value in fut using function f, applicatively; the call to f happens on the runner pool (once fut resolves successfully with a value).

      type 'a or_error = ('a, exn * Stdlib.Printexc.raw_backtrace) result
      type 'a t

      A future with a result of type 'a.

      type 'a promise

      A promise, which can be fulfilled exactly once to set the corresponding future

      val make : unit -> 'a t * 'a promise

      Make a new future with the associated promise

      val on_result : 'a t -> ('a or_error -> unit) -> unit

      on_result fut f registers f to be called in the future when fut is set ; or calls f immediately if fut is already set.

      exception Already_fulfilled
      val fulfill : 'a promise -> 'a or_error -> unit

      Fullfill the promise, setting the future at the same time.

      val fulfill_idempotent : 'a promise -> 'a or_error -> unit

      Fullfill the promise, setting the future at the same time. Does nothing if the promise is already fulfilled.

      val return : 'a -> 'a t

      Already settled future, with a result

      val fail : exn -> Stdlib.Printexc.raw_backtrace -> _ t

      Already settled future, with a failure

      val of_result : 'a or_error -> 'a t
      val is_resolved : _ t -> bool

      is_resolved fut is true iff fut is resolved.

      val peek : 'a t -> 'a or_error option

      peek fut returns Some r if fut is currently resolved with r, and None if fut is not resolved yet.

      exception Not_ready
      • since 0.2
      val get_or_fail : 'a t -> 'a or_error

      get_or_fail fut obtains the result from fut if it's fulfilled (i.e. if peek fut returns Some res, get_or_fail fut returns res).

      • since 0.2
      val get_or_fail_exn : 'a t -> 'a

      get_or_fail_exn fut obtains the result from fut if it's fulfilled, like get_or_fail. If the result is an Error _, the exception inside is re-raised.

      • since 0.2
      val is_done : _ t -> bool

      Is the future resolved? This is the same as peek fut |> Option.is_some.

      • since 0.2

      Combinators

      val spawn : on:Runner.t -> (unit -> 'a) -> 'a t

      spaw ~on f runs f() on the given runner on, and return a future that will hold its result.

      val spawn_on_current_runner : (unit -> 'a) -> 'a t

      This must be run from inside a runner, and schedules the new task on it as well.

      See Runner.get_current_runner to see how the runner is found.

      • since 0.5
      • raises Failure

        if run from outside a runner.

      val reify_error : 'a t -> 'a or_error t

      reify_error fut turns a failing future into a non-failing one that contain Error (exn, bt). A non-failing future returning x is turned into Ok x

      • since 0.4
      val map : ?on:Runner.t -> f:('a -> 'b) -> 'a t -> 'b t

      map ?on ~f fut returns a new future fut2 that resolves with f x if fut resolved with x; and fails with e if fut fails with e or f x raises e.

      • parameter on

        if provided, f runs on the given runner

      val bind : ?on:Runner.t -> f:('a -> 'b t) -> 'a t -> 'b t

      bind ?on ~f fut returns a new future fut2 that resolves like the future f x if fut resolved with x; and fails with e if fut fails with e or f x raises e.

      • parameter on

        if provided, f runs on the given runner

      val bind_reify_error : ?on:Runner.t -> f:('a or_error -> 'b t) -> 'a t -> 'b t

      bind_reify_error ?on ~f fut returns a new future fut2 that resolves like the future f (Ok x) if fut resolved with x; and resolves like the future f (Error (exn, bt)) if fut fails with exn and backtrace bt.

      • parameter on

        if provided, f runs on the given runner

      • since 0.4
      val join : 'a t t -> 'a t

      join fut is fut >>= Fun.id. It joins the inner layer of the future.

      • since 0.2
      val both : 'a t -> 'b t -> ('a * 'b) t

      both a b succeeds with x, y if a succeeds with x and b succeeds with y, or fails if any of them fails.

      val choose : 'a t -> 'b t -> ('a, 'b) Either.t t

      choose a b succeeds Left x or Right y if a succeeds with x or b succeeds with y, or fails if both of them fails. If they both succeed, it is not specified which result is used.

      val choose_same : 'a t -> 'a t -> 'a t

      choose_same a b succeeds with the value of one of a or b if they succeed, or fails if both fail. If they both succeed, it is not specified which result is used.

      val join_array : 'a t array -> 'a array t

      Wait for all the futures in the array. Fails if any future fails.

      val join_list : 'a t list -> 'a list t

      Wait for all the futures in the list. Fails if any future fails.

      module Advanced : sig ... end
      val map_list : f:('a -> 'b t) -> 'a list -> 'b list t

      map_list ~f l is like join_list @@ List.map f l.

      • since NEXT_RELEASE
      val wait_array : _ t array -> unit t

      wait_array arr waits for all futures in arr to resolve. It discards the individual results of futures in arr. It fails if any future fails.

      val wait_list : _ t list -> unit t

      wait_list l waits for all futures in l to resolve. It discards the individual results of futures in l. It fails if any future fails.

      val for_ : on:Runner.t -> int -> (int -> unit) -> unit t

      for_ ~on n f runs f 0, f 1, …, f (n-1) on the runner, and returns a future that resolves when all the tasks have resolved, or fails as soon as one task has failed.

      val for_array : on:Runner.t -> 'a array -> (int -> 'a -> unit) -> unit t

      for_array ~on arr f runs f 0 arr.(0), …, f (n-1) arr.(n-1) in the runner (where n = Array.length arr), and returns a future that resolves when all the tasks are done, or fails if any of them fails.

      • since 0.2
      val for_list : on:Runner.t -> 'a list -> ('a -> unit) -> unit t

      for_list ~on l f is like for_array ~on (Array.of_list l) f.

      • since 0.2

      Await

      NOTE This is only available on OCaml 5.

      val await : 'a t -> 'a

      await fut suspends the current tasks until fut is fulfilled, then resumes the task on this same runner.

      • since 0.3

      This must only be run from inside the runner itself. The runner must support Suspend_. NOTE: only on OCaml 5.x

      Blocking

      val wait_block : 'a t -> 'a or_error

      wait_block fut blocks the current thread until fut is resolved, and returns its value.

      NOTE: A word of warning: this will monopolize the calling thread until the future resolves. This can also easily cause deadlocks, if enough threads in a pool call wait_block on futures running on the same pool or a pool depending on it.

      A good rule to avoid deadlocks is to run this from outside of any pool, or to have an acyclic order between pools where wait_block is only called from a pool on futures evaluated in a pool that comes lower in the hierarchy. If this rule is broken, it is possible for all threads in a pool to wait for futures that can only make progress on these same threads, hence the deadlock.

      val wait_block_exn : 'a t -> 'a

      Same as wait_block but re-raises the exception if the future failed.

      Infix operators

      These combinators run on either the current pool (if present), or on the same thread that just fulfilled the previous future if not.

      They were previously present as module Infix_local and val infix, but are now simplified.

      • since 0.5
      module Infix : sig ... end
      include module type of Infix
      • since 0.5
      val (>|=) : 'a t -> ('a -> 'b) -> 'b t
      val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
      val let+ : 'a t -> ('a -> 'b) -> 'b t
      val and+ : 'a t -> 'b t -> ('a * 'b) t
      val let* : 'a t -> ('a -> 'b t) -> 'b t
      val and* : 'a t -> 'b t -> ('a * 'b) t
      module Infix_local = Infix
      diff --git a/dev/moonpool/Moonpool/Immediate_runner/For_runner_implementors/index.html b/dev/moonpool/Moonpool/Immediate_runner/For_runner_implementors/index.html index 95cd7082..9749143e 100644 --- a/dev/moonpool/Moonpool/Immediate_runner/For_runner_implementors/index.html +++ b/dev/moonpool/Moonpool/Immediate_runner/For_runner_implementors/index.html @@ -1,5 +1,5 @@ -For_runner_implementors (moonpool.Moonpool.Immediate_runner.For_runner_implementors)

      Module Immediate_runner.For_runner_implementors

      This module is specifically intended for users who implement their own runners. Regular users of Moonpool should not need to look at it.

      val create : +For_runner_implementors (moonpool.Moonpool.Immediate_runner.For_runner_implementors)

      Module Immediate_runner.For_runner_implementors

      This module is specifically intended for users who implement their own runners. Regular users of Moonpool should not need to look at it.

      val create : size:(unit -> int) -> num_tasks:(unit -> int) -> shutdown:(wait:bool -> unit -> unit) -> diff --git a/dev/moonpool/Moonpool/Immediate_runner/index.html b/dev/moonpool/Moonpool/Immediate_runner/index.html index 8834e750..f9e81550 100644 --- a/dev/moonpool/Moonpool/Immediate_runner/index.html +++ b/dev/moonpool/Moonpool/Immediate_runner/index.html @@ -1,2 +1,2 @@ -Immediate_runner (moonpool.Moonpool.Immediate_runner)

      Module Moonpool.Immediate_runner

      Runner that runs tasks immediately in the caller thread.

      Whenever a task is submitted to this runner via Runner.run_async r task, the task is run immediately in the caller thread as task(). There are no background threads, no resource, this is just a trivial implementation of the interface.

      This can be useful when an implementation needs a runner, but there isn't enough work to justify starting an actual full thread pool.

      Another situation is when threads cannot be used at all (e.g. because you plan to call Unix.fork later).

      • since 0.5
      include module type of Runner
      type task = unit -> unit
      type t

      A runner.

      If a runner is no longer needed, shutdown can be used to signal all worker threads in it to stop (after they finish their work), and wait for them to stop.

      The threads are distributed across a fixed domain pool (whose size is determined by Domain.recommended_domain_count on OCaml 5, and simple the single runtime on OCaml 4).

      val size : t -> int

      Number of threads/workers.

      val num_tasks : t -> int

      Current number of tasks. This is at best a snapshot, useful for metrics and debugging.

      val shutdown : t -> unit

      Shutdown the runner and wait for it to terminate. Idempotent.

      val shutdown_without_waiting : t -> unit

      Shutdown the pool, and do not wait for it to terminate. Idempotent.

      exception Shutdown
      val run_async : t -> task -> unit

      run_async pool f schedules f for later execution on the runner in one of the threads. f() will run on one of the runner's worker threads/domains.

      • raises Shutdown

        if the runner was shut down before run_async was called.

      val run_wait_block : t -> (unit -> 'a) -> 'a

      run_wait_block pool f schedules f for later execution on the pool, like run_async. It then blocks the current thread until f() is done executing, and returns its result. If f() raises an exception, then run_wait_block pool f will raise it as well.

      NOTE be careful with deadlocks (see notes in Fut.wait_block about the required discipline to avoid deadlocks).

      module For_runner_implementors : sig ... end

      This module is specifically intended for users who implement their own runners. Regular users of Moonpool should not need to look at it.

      val get_current_runner : unit -> t option

      Access the current runner. This returns Some r if the call happens on a thread that belongs in a runner.

      • since 0.5
      val runner : t

      The trivial runner that actually runs tasks at the calling point.

      +Immediate_runner (moonpool.Moonpool.Immediate_runner)

      Module Moonpool.Immediate_runner

      Runner that runs tasks immediately in the caller thread.

      Whenever a task is submitted to this runner via Runner.run_async r task, the task is run immediately in the caller thread as task(). There are no background threads, no resource, this is just a trivial implementation of the interface.

      This can be useful when an implementation needs a runner, but there isn't enough work to justify starting an actual full thread pool.

      Another situation is when threads cannot be used at all (e.g. because you plan to call Unix.fork later).

      • since 0.5
      include module type of Runner
      type task = unit -> unit
      type t

      A runner.

      If a runner is no longer needed, shutdown can be used to signal all worker threads in it to stop (after they finish their work), and wait for them to stop.

      The threads are distributed across a fixed domain pool (whose size is determined by Domain.recommended_domain_count on OCaml 5, and simple the single runtime on OCaml 4).

      val size : t -> int

      Number of threads/workers.

      val num_tasks : t -> int

      Current number of tasks. This is at best a snapshot, useful for metrics and debugging.

      val shutdown : t -> unit

      Shutdown the runner and wait for it to terminate. Idempotent.

      val shutdown_without_waiting : t -> unit

      Shutdown the pool, and do not wait for it to terminate. Idempotent.

      exception Shutdown
      val run_async : t -> task -> unit

      run_async pool f schedules f for later execution on the runner in one of the threads. f() will run on one of the runner's worker threads/domains.

      • raises Shutdown

        if the runner was shut down before run_async was called.

      val run_wait_block : t -> (unit -> 'a) -> 'a

      run_wait_block pool f schedules f for later execution on the pool, like run_async. It then blocks the current thread until f() is done executing, and returns its result. If f() raises an exception, then run_wait_block pool f will raise it as well.

      NOTE be careful with deadlocks (see notes in Fut.wait_block about the required discipline to avoid deadlocks).

      module For_runner_implementors : sig ... end

      This module is specifically intended for users who implement their own runners. Regular users of Moonpool should not need to look at it.

      val get_current_runner : unit -> t option

      Access the current runner. This returns Some r if the call happens on a thread that belongs in a runner.

      • since 0.5
      val runner : t

      The trivial runner that actually runs tasks at the calling point.

      diff --git a/dev/moonpool/Moonpool/Lock/index.html b/dev/moonpool/Moonpool/Lock/index.html index b6b0724f..d2fb444b 100644 --- a/dev/moonpool/Moonpool/Lock/index.html +++ b/dev/moonpool/Moonpool/Lock/index.html @@ -1,2 +1,2 @@ -Lock (moonpool.Moonpool.Lock)

      Module Moonpool.Lock

      Mutex-protected resource.

      • since 0.3
      type 'a t

      A value protected by a mutex

      val create : 'a -> 'a t

      Create a new protected value.

      val with_ : 'a t -> ('a -> 'b) -> 'b

      with_ l f runs f x where x is the value protected with the lock l, in a critical section. If f x fails, with_lock l f fails too but the lock is released.

      val update : 'a t -> ('a -> 'a) -> unit

      update l f replaces the content x of l with f x, while protected by the mutex.

      val update_map : 'a t -> ('a -> 'a * 'b) -> 'b

      update_map l f computes x', y = f (get l), then puts x' in l and returns y, while protected by the mutex.

      val mutex : _ t -> Stdlib.Mutex.t

      Underlying mutex.

      val get : 'a t -> 'a

      Atomically get the value in the lock. The value that is returned isn't protected!

      val set : 'a t -> 'a -> unit

      Atomically set the value.

      NOTE caution: using get and set as if this were a ref is an anti pattern and will not protect data against some race conditions.

      +Lock (moonpool.Moonpool.Lock)

      Module Moonpool.Lock

      Mutex-protected resource.

      • since 0.3
      type 'a t

      A value protected by a mutex

      val create : 'a -> 'a t

      Create a new protected value.

      val with_ : 'a t -> ('a -> 'b) -> 'b

      with_ l f runs f x where x is the value protected with the lock l, in a critical section. If f x fails, with_lock l f fails too but the lock is released.

      val update : 'a t -> ('a -> 'a) -> unit

      update l f replaces the content x of l with f x, while protected by the mutex.

      val update_map : 'a t -> ('a -> 'a * 'b) -> 'b

      update_map l f computes x', y = f (get l), then puts x' in l and returns y, while protected by the mutex.

      val mutex : _ t -> Stdlib.Mutex.t

      Underlying mutex.

      val get : 'a t -> 'a

      Atomically get the value in the lock. The value that is returned isn't protected!

      val set : 'a t -> 'a -> unit

      Atomically set the value.

      NOTE caution: using get and set as if this were a ref is an anti pattern and will not protect data against some race conditions.

      diff --git a/dev/moonpool/Moonpool/Runner/For_runner_implementors/index.html b/dev/moonpool/Moonpool/Runner/For_runner_implementors/index.html index 425f6a73..f0906f52 100644 --- a/dev/moonpool/Moonpool/Runner/For_runner_implementors/index.html +++ b/dev/moonpool/Moonpool/Runner/For_runner_implementors/index.html @@ -1,5 +1,5 @@ -For_runner_implementors (moonpool.Moonpool.Runner.For_runner_implementors)

      Module Runner.For_runner_implementors

      This module is specifically intended for users who implement their own runners. Regular users of Moonpool should not need to look at it.

      val create : +For_runner_implementors (moonpool.Moonpool.Runner.For_runner_implementors)

      Module Runner.For_runner_implementors

      This module is specifically intended for users who implement their own runners. Regular users of Moonpool should not need to look at it.

      val create : size:(unit -> int) -> num_tasks:(unit -> int) -> shutdown:(wait:bool -> unit -> unit) -> diff --git a/dev/moonpool/Moonpool/Runner/index.html b/dev/moonpool/Moonpool/Runner/index.html index 9d33b91b..ac22116c 100644 --- a/dev/moonpool/Moonpool/Runner/index.html +++ b/dev/moonpool/Moonpool/Runner/index.html @@ -1,2 +1,2 @@ -Runner (moonpool.Moonpool.Runner)

      Module Moonpool.Runner

      Interface for runners.

      This provides an abstraction for running tasks in the background, which is implemented by various thread pools.

      • since 0.3
      type task = unit -> unit
      type t

      A runner.

      If a runner is no longer needed, shutdown can be used to signal all worker threads in it to stop (after they finish their work), and wait for them to stop.

      The threads are distributed across a fixed domain pool (whose size is determined by Domain.recommended_domain_count on OCaml 5, and simple the single runtime on OCaml 4).

      val size : t -> int

      Number of threads/workers.

      val num_tasks : t -> int

      Current number of tasks. This is at best a snapshot, useful for metrics and debugging.

      val shutdown : t -> unit

      Shutdown the runner and wait for it to terminate. Idempotent.

      val shutdown_without_waiting : t -> unit

      Shutdown the pool, and do not wait for it to terminate. Idempotent.

      exception Shutdown
      val run_async : t -> task -> unit

      run_async pool f schedules f for later execution on the runner in one of the threads. f() will run on one of the runner's worker threads/domains.

      • raises Shutdown

        if the runner was shut down before run_async was called.

      val run_wait_block : t -> (unit -> 'a) -> 'a

      run_wait_block pool f schedules f for later execution on the pool, like run_async. It then blocks the current thread until f() is done executing, and returns its result. If f() raises an exception, then run_wait_block pool f will raise it as well.

      NOTE be careful with deadlocks (see notes in Fut.wait_block about the required discipline to avoid deadlocks).

      module For_runner_implementors : sig ... end

      This module is specifically intended for users who implement their own runners. Regular users of Moonpool should not need to look at it.

      val get_current_runner : unit -> t option

      Access the current runner. This returns Some r if the call happens on a thread that belongs in a runner.

      • since 0.5
      +Runner (moonpool.Moonpool.Runner)

      Module Moonpool.Runner

      Interface for runners.

      This provides an abstraction for running tasks in the background, which is implemented by various thread pools.

      • since 0.3
      type task = unit -> unit
      type t

      A runner.

      If a runner is no longer needed, shutdown can be used to signal all worker threads in it to stop (after they finish their work), and wait for them to stop.

      The threads are distributed across a fixed domain pool (whose size is determined by Domain.recommended_domain_count on OCaml 5, and simple the single runtime on OCaml 4).

      val size : t -> int

      Number of threads/workers.

      val num_tasks : t -> int

      Current number of tasks. This is at best a snapshot, useful for metrics and debugging.

      val shutdown : t -> unit

      Shutdown the runner and wait for it to terminate. Idempotent.

      val shutdown_without_waiting : t -> unit

      Shutdown the pool, and do not wait for it to terminate. Idempotent.

      exception Shutdown
      val run_async : t -> task -> unit

      run_async pool f schedules f for later execution on the runner in one of the threads. f() will run on one of the runner's worker threads/domains.

      • raises Shutdown

        if the runner was shut down before run_async was called.

      val run_wait_block : t -> (unit -> 'a) -> 'a

      run_wait_block pool f schedules f for later execution on the pool, like run_async. It then blocks the current thread until f() is done executing, and returns its result. If f() raises an exception, then run_wait_block pool f will raise it as well.

      NOTE be careful with deadlocks (see notes in Fut.wait_block about the required discipline to avoid deadlocks).

      module For_runner_implementors : sig ... end

      This module is specifically intended for users who implement their own runners. Regular users of Moonpool should not need to look at it.

      val get_current_runner : unit -> t option

      Access the current runner. This returns Some r if the call happens on a thread that belongs in a runner.

      • since 0.5
      diff --git a/dev/moonpool/Moonpool/Thread_local_storage/index.html b/dev/moonpool/Moonpool/Thread_local_storage/index.html index ce76ae46..d198a88e 100644 --- a/dev/moonpool/Moonpool/Thread_local_storage/index.html +++ b/dev/moonpool/Moonpool/Thread_local_storage/index.html @@ -1,2 +1,2 @@ -Thread_local_storage (moonpool.Moonpool.Thread_local_storage)

      Module Moonpool.Thread_local_storage

      Thread local storage

      type 'a key

      A TLS key for values of type 'a. This allows the storage of a single value of type 'a per thread.

      val new_key : (unit -> 'a) -> 'a key

      Allocate a new, generative key. When the key is used for the first time on a thread, the function is called to produce it.

      This should only ever be called at toplevel to produce constants, do not use it in a loop.

      val get : 'a key -> 'a

      Get the value for the current thread.

      val set : 'a key -> 'a -> unit

      Set the value for the current thread.

      +Thread_local_storage (moonpool.Moonpool.Thread_local_storage)

      Module Moonpool.Thread_local_storage

      Thread local storage

      type 'a key

      A TLS key for values of type 'a. This allows the storage of a single value of type 'a per thread.

      val new_key : (unit -> 'a) -> 'a key

      Allocate a new, generative key. When the key is used for the first time on a thread, the function is called to produce it.

      This should only ever be called at toplevel to produce constants, do not use it in a loop.

      val get : 'a key -> 'a

      Get the value for the current thread.

      val set : 'a key -> 'a -> unit

      Set the value for the current thread.

      diff --git a/dev/moonpool/Moonpool/Ws_pool/For_runner_implementors/index.html b/dev/moonpool/Moonpool/Ws_pool/For_runner_implementors/index.html index 1cd43c2b..d4cd3e8a 100644 --- a/dev/moonpool/Moonpool/Ws_pool/For_runner_implementors/index.html +++ b/dev/moonpool/Moonpool/Ws_pool/For_runner_implementors/index.html @@ -1,5 +1,5 @@ -For_runner_implementors (moonpool.Moonpool.Ws_pool.For_runner_implementors)

      Module Ws_pool.For_runner_implementors

      This module is specifically intended for users who implement their own runners. Regular users of Moonpool should not need to look at it.

      val create : +For_runner_implementors (moonpool.Moonpool.Ws_pool.For_runner_implementors)

      Module Ws_pool.For_runner_implementors

      This module is specifically intended for users who implement their own runners. Regular users of Moonpool should not need to look at it.

      val create : size:(unit -> int) -> num_tasks:(unit -> int) -> shutdown:(wait:bool -> unit -> unit) -> diff --git a/dev/moonpool/Moonpool/Ws_pool/index.html b/dev/moonpool/Moonpool/Ws_pool/index.html index 5368b4de..84568d93 100644 --- a/dev/moonpool/Moonpool/Ws_pool/index.html +++ b/dev/moonpool/Moonpool/Ws_pool/index.html @@ -1,5 +1,5 @@ -Ws_pool (moonpool.Moonpool.Ws_pool)

      Module Moonpool.Ws_pool

      Work-stealing thread pool.

      A pool of threads with a worker-stealing scheduler. The pool contains a fixed number of threads that wait for work items to come, process these, and loop.

      This is good for CPU-intensive tasks that feature a lot of small tasks. Note that tasks will not always be processed in the order they are scheduled, so this is not great for workloads where the latency of individual tasks matter (for that see Fifo_pool).

      This implements Runner.t since 0.3.

      If a pool is no longer needed, shutdown can be used to signal all threads in it to stop (after they finish their work), and wait for them to stop.

      The threads are distributed across a fixed domain pool (whose size is determined by Domain.recommended_domain_count on OCaml 5, and simply the single runtime on OCaml 4).

      include module type of Runner
      type task = unit -> unit
      type t

      A runner.

      If a runner is no longer needed, shutdown can be used to signal all worker threads in it to stop (after they finish their work), and wait for them to stop.

      The threads are distributed across a fixed domain pool (whose size is determined by Domain.recommended_domain_count on OCaml 5, and simple the single runtime on OCaml 4).

      val size : t -> int

      Number of threads/workers.

      val num_tasks : t -> int

      Current number of tasks. This is at best a snapshot, useful for metrics and debugging.

      val shutdown : t -> unit

      Shutdown the runner and wait for it to terminate. Idempotent.

      val shutdown_without_waiting : t -> unit

      Shutdown the pool, and do not wait for it to terminate. Idempotent.

      exception Shutdown
      val run_async : t -> task -> unit

      run_async pool f schedules f for later execution on the runner in one of the threads. f() will run on one of the runner's worker threads/domains.

      • raises Shutdown

        if the runner was shut down before run_async was called.

      val run_wait_block : t -> (unit -> 'a) -> 'a

      run_wait_block pool f schedules f for later execution on the pool, like run_async. It then blocks the current thread until f() is done executing, and returns its result. If f() raises an exception, then run_wait_block pool f will raise it as well.

      NOTE be careful with deadlocks (see notes in Fut.wait_block about the required discipline to avoid deadlocks).

      module For_runner_implementors : sig ... end

      This module is specifically intended for users who implement their own runners. Regular users of Moonpool should not need to look at it.

      val get_current_runner : unit -> t option

      Access the current runner. This returns Some r if the call happens on a thread that belongs in a runner.

      • since 0.5
      type ('a, 'b) create_args = +Ws_pool (moonpool.Moonpool.Ws_pool)

      Module Moonpool.Ws_pool

      Work-stealing thread pool.

      A pool of threads with a worker-stealing scheduler. The pool contains a fixed number of threads that wait for work items to come, process these, and loop.

      This is good for CPU-intensive tasks that feature a lot of small tasks. Note that tasks will not always be processed in the order they are scheduled, so this is not great for workloads where the latency of individual tasks matter (for that see Fifo_pool).

      This implements Runner.t since 0.3.

      If a pool is no longer needed, shutdown can be used to signal all threads in it to stop (after they finish their work), and wait for them to stop.

      The threads are distributed across a fixed domain pool (whose size is determined by Domain.recommended_domain_count on OCaml 5, and simply the single runtime on OCaml 4).

      include module type of Runner
      type task = unit -> unit
      type t

      A runner.

      If a runner is no longer needed, shutdown can be used to signal all worker threads in it to stop (after they finish their work), and wait for them to stop.

      The threads are distributed across a fixed domain pool (whose size is determined by Domain.recommended_domain_count on OCaml 5, and simple the single runtime on OCaml 4).

      val size : t -> int

      Number of threads/workers.

      val num_tasks : t -> int

      Current number of tasks. This is at best a snapshot, useful for metrics and debugging.

      val shutdown : t -> unit

      Shutdown the runner and wait for it to terminate. Idempotent.

      val shutdown_without_waiting : t -> unit

      Shutdown the pool, and do not wait for it to terminate. Idempotent.

      exception Shutdown
      val run_async : t -> task -> unit

      run_async pool f schedules f for later execution on the runner in one of the threads. f() will run on one of the runner's worker threads/domains.

      • raises Shutdown

        if the runner was shut down before run_async was called.

      val run_wait_block : t -> (unit -> 'a) -> 'a

      run_wait_block pool f schedules f for later execution on the pool, like run_async. It then blocks the current thread until f() is done executing, and returns its result. If f() raises an exception, then run_wait_block pool f will raise it as well.

      NOTE be careful with deadlocks (see notes in Fut.wait_block about the required discipline to avoid deadlocks).

      module For_runner_implementors : sig ... end

      This module is specifically intended for users who implement their own runners. Regular users of Moonpool should not need to look at it.

      val get_current_runner : unit -> t option

      Access the current runner. This returns Some r if the call happens on a thread that belongs in a runner.

      • since 0.5
      type ('a, 'b) create_args = ?on_init_thread:(dom_id:int -> t_id:int -> unit -> unit) -> ?on_exit_thread:(dom_id:int -> t_id:int -> unit -> unit) -> ?on_exn:(exn -> Stdlib.Printexc.raw_backtrace -> unit) -> diff --git a/dev/moonpool/Moonpool/index.html b/dev/moonpool/Moonpool/index.html index c8bbb62c..23272796 100644 --- a/dev/moonpool/Moonpool/index.html +++ b/dev/moonpool/Moonpool/index.html @@ -1,2 +1,2 @@ -Moonpool (moonpool.Moonpool)

      Module Moonpool

      Moonpool

      A pool within a bigger pool (ie the ocean). Here, we're talking about pools of Thread.t that are dispatched over several Domain.t to enable parallelism.

      We provide several implementations of pools with distinct scheduling strategies, alongside some concurrency primitives such as guarding locks (Lock.t) and futures (Fut.t).

      module Ws_pool : sig ... end

      Work-stealing thread pool.

      module Fifo_pool : sig ... end

      A simple thread pool in FIFO order.

      module Runner : sig ... end

      Interface for runners.

      module Immediate_runner : sig ... end

      Runner that runs tasks immediately in the caller thread.

      module Pool = Fifo_pool

      Default pool. Please explicitly pick an implementation instead.

      val start_thread_on_some_domain : ('a -> unit) -> 'a -> Thread.t

      Similar to Thread.create, but it picks a background domain at random to run the thread. This ensures that we don't always pick the same domain to run all the various threads needed in an application (timers, event loops, etc.)

      val run_async : Runner.t -> (unit -> unit) -> unit

      run_async runner task schedules the task to run on the given runner. This means task() will be executed at some point in the future, possibly in another thread.

      • since 0.5

      Number of threads recommended to saturate the CPU. For IO pools this makes little sense (you might want more threads than this because many of them will be blocked most of the time).

      • since 0.5
      val spawn : on:Runner.t -> (unit -> 'a) -> 'a Fut.t

      spawn ~on f runs f() on the runner (a thread pool typically) and returns a future result for it. See Fut.spawn.

      • since 0.5
      val spawn_on_current_runner : (unit -> 'a) -> 'a Fut.t
      val await : 'a Fut.t -> 'a

      Await a future. See await. Only on OCaml >= 5.0.

      • since 0.5
      module Lock : sig ... end

      Mutex-protected resource.

      module Fut : sig ... end

      Futures.

      module Chan : sig ... end

      Channels.

      module Fork_join : sig ... end

      Fork-join primitives.

      module Thread_local_storage : sig ... end

      Thread local storage

      module Blocking_queue : sig ... end

      A simple blocking queue.

      module Bounded_queue : sig ... end

      A blocking queue of finite size.

      module Atomic : sig ... end

      Atomic values.

      +Moonpool (moonpool.Moonpool)

      Module Moonpool

      Moonpool

      A pool within a bigger pool (ie the ocean). Here, we're talking about pools of Thread.t that are dispatched over several Domain.t to enable parallelism.

      We provide several implementations of pools with distinct scheduling strategies, alongside some concurrency primitives such as guarding locks (Lock.t) and futures (Fut.t).

      module Ws_pool : sig ... end

      Work-stealing thread pool.

      module Fifo_pool : sig ... end

      A simple thread pool in FIFO order.

      module Runner : sig ... end

      Interface for runners.

      module Immediate_runner : sig ... end

      Runner that runs tasks immediately in the caller thread.

      module Pool = Fifo_pool

      Default pool. Please explicitly pick an implementation instead.

      val start_thread_on_some_domain : ('a -> unit) -> 'a -> Thread.t

      Similar to Thread.create, but it picks a background domain at random to run the thread. This ensures that we don't always pick the same domain to run all the various threads needed in an application (timers, event loops, etc.)

      val run_async : Runner.t -> (unit -> unit) -> unit

      run_async runner task schedules the task to run on the given runner. This means task() will be executed at some point in the future, possibly in another thread.

      • since 0.5

      Number of threads recommended to saturate the CPU. For IO pools this makes little sense (you might want more threads than this because many of them will be blocked most of the time).

      • since 0.5
      val spawn : on:Runner.t -> (unit -> 'a) -> 'a Fut.t

      spawn ~on f runs f() on the runner (a thread pool typically) and returns a future result for it. See Fut.spawn.

      • since 0.5
      val spawn_on_current_runner : (unit -> 'a) -> 'a Fut.t
      val await : 'a Fut.t -> 'a

      Await a future. See await. Only on OCaml >= 5.0.

      • since 0.5
      module Lock : sig ... end

      Mutex-protected resource.

      module Fut : sig ... end

      Futures.

      module Chan : sig ... end

      Channels.

      module Fork_join : sig ... end

      Fork-join primitives.

      module Thread_local_storage : sig ... end

      Thread local storage

      module Blocking_queue : sig ... end

      A simple blocking queue.

      module Bounded_queue : sig ... end

      A blocking queue of finite size.

      module Atomic : sig ... end

      Atomic values.

      diff --git a/dev/moonpool/index.html b/dev/moonpool/index.html index 2aa1f7dc..84510f49 100644 --- a/dev/moonpool/index.html +++ b/dev/moonpool/index.html @@ -1,2 +1,2 @@ -index (moonpool.index)

      Package moonpool

      Package info

      changes-files
      readme-files
      +index (moonpool.index)

      Package moonpool

      Package info

      changes-files
      readme-files
      diff --git a/dev/ocaml/Afl_instrument/index.html b/dev/ocaml/Afl_instrument/index.html index e40ea7bd..3765179b 100644 --- a/dev/ocaml/Afl_instrument/index.html +++ b/dev/ocaml/Afl_instrument/index.html @@ -1,5 +1,5 @@ -Afl_instrument (ocaml.Afl_instrument)

      Module Afl_instrument

      Instrumentation for afl-fuzz.

      val instrument_function : Cmm.expression -> Debuginfo.t -> Cmm.expression
      val instrument_initialiser : +Afl_instrument (ocaml.Afl_instrument)

      Module Afl_instrument

      Instrumentation for afl-fuzz.

      val instrument_function : Cmm.expression -> Debuginfo.t -> Cmm.expression
      val instrument_initialiser : Cmm.expression -> (unit -> Debuginfo.t) -> Cmm.expression
      diff --git a/dev/ocaml/Alias_analysis/index.html b/dev/ocaml/Alias_analysis/index.html index 329d6dab..2fc87613 100644 --- a/dev/ocaml/Alias_analysis/index.html +++ b/dev/ocaml/Alias_analysis/index.html @@ -1,5 +1,5 @@ -Alias_analysis (ocaml.Alias_analysis)

      Module Alias_analysis

      type allocation_point =
      1. | Symbol of Symbol.t
      2. | Variable of Variable.t
      type allocated_const =
      1. | Normal of Allocated_const.t
      2. | Array of Lambda.array_kind * Asttypes.mutable_flag * Variable.t list
      3. | Duplicate_array of Lambda.array_kind * Asttypes.mutable_flag * Variable.t
      type constant_defining_value =
      1. | Allocated_const of allocated_const
      2. | Block of Tag.t * Variable.t list
      3. | Set_of_closures of Flambda.set_of_closures
      4. | Project_closure of Flambda.project_closure
      5. | Move_within_set_of_closures of Flambda.move_within_set_of_closures
      6. | Project_var of Flambda.project_var
      7. | Field of Variable.t * int
      8. | Symbol_field of Symbol.t * int
      9. | Const of Flambda.const
      10. | Symbol of Symbol.t
      11. | Variable of Variable.t
      type initialize_symbol_field = Variable.t option
      val run : +Alias_analysis (ocaml.Alias_analysis)

      Module Alias_analysis

      type allocation_point =
      1. | Symbol of Symbol.t
      2. | Variable of Variable.t
      type allocated_const =
      1. | Normal of Allocated_const.t
      2. | Array of Lambda.array_kind * Asttypes.mutable_flag * Variable.t list
      3. | Duplicate_array of Lambda.array_kind * Asttypes.mutable_flag * Variable.t
      type constant_defining_value =
      1. | Allocated_const of allocated_const
      2. | Block of Tag.t * Variable.t list
      3. | Set_of_closures of Flambda.set_of_closures
      4. | Project_closure of Flambda.project_closure
      5. | Move_within_set_of_closures of Flambda.move_within_set_of_closures
      6. | Project_var of Flambda.project_var
      7. | Field of Variable.t * int
      8. | Symbol_field of Symbol.t * int
      9. | Const of Flambda.const
      10. | Symbol of Symbol.t
      11. | Variable of Variable.t
      type initialize_symbol_field = Variable.t option
      val run : constant_defining_value Variable.Tbl.t -> initialize_symbol_field list Symbol.Tbl.t -> Flambda.constant_defining_value Symbol.Tbl.t -> diff --git a/dev/ocaml/Allocated_const/index.html b/dev/ocaml/Allocated_const/index.html index 9d798309..d73fdf37 100644 --- a/dev/ocaml/Allocated_const/index.html +++ b/dev/ocaml/Allocated_const/index.html @@ -1,2 +1,2 @@ -Allocated_const (ocaml.Allocated_const)

      Module Allocated_const

      Constants that are always allocated (possibly statically). Blocks are not included here since they are always encoded using Prim (Pmakeblock, ...).

      type t =
      1. | Float of float
      2. | Int32 of int32
      3. | Int64 of int64
      4. | Nativeint of nativeint
      5. | Float_array of float list
      6. | Immutable_float_array of float list
      7. | String of string
      8. | Immutable_string of string
      val compare_floats : float -> float -> int
      val compare : t -> t -> int
      val print : Stdlib.Format.formatter -> t -> unit
      +Allocated_const (ocaml.Allocated_const)

      Module Allocated_const

      Constants that are always allocated (possibly statically). Blocks are not included here since they are always encoded using Prim (Pmakeblock, ...).

      type t =
      1. | Float of float
      2. | Int32 of int32
      3. | Int64 of int64
      4. | Nativeint of nativeint
      5. | Float_array of float list
      6. | Immutable_float_array of float list
      7. | String of string
      8. | Immutable_string of string
      val compare_floats : float -> float -> int
      val compare : t -> t -> int
      val print : Stdlib.Format.formatter -> t -> unit
      diff --git a/dev/ocaml/Annot/index.html b/dev/ocaml/Annot/index.html index 2f2ec51e..628b5db8 100644 --- a/dev/ocaml/Annot/index.html +++ b/dev/ocaml/Annot/index.html @@ -1,2 +1,2 @@ -Annot (ocaml.Annot)

      Module Annot

      type call =
      1. | Tail
      2. | Stack
      3. | Inline
      type ident =
      1. | Iref_internal of Location.t
      2. | Iref_external
      3. | Idef of Location.t
      +Annot (ocaml.Annot)

      Module Annot

      type call =
      1. | Tail
      2. | Stack
      3. | Inline
      type ident =
      1. | Iref_internal of Location.t
      2. | Iref_external
      3. | Idef of Location.t
      diff --git a/dev/ocaml/Arch/index.html b/dev/ocaml/Arch/index.html index e720ff48..624b8f23 100644 --- a/dev/ocaml/Arch/index.html +++ b/dev/ocaml/Arch/index.html @@ -1,5 +1,5 @@ -Arch (ocaml.Arch)

      Module Arch

      val command_line_options : (string * Stdlib.Arg.spec * string) list
      type addressing_mode =
      1. | Ibased of string * int
      2. | Iindexed of int
      3. | Iindexed2 of int
      4. | Iscaled of int * int
      5. | Iindexed2scaled of int * int
      type specific_operation =
      1. | Ilea of addressing_mode
      2. | Istore_int of nativeint * addressing_mode * bool
      3. | Ioffset_loc of int * addressing_mode
      4. | Ifloatarithmem of float_operation * addressing_mode
      5. | Ibswap of int
      6. | Isqrtf
      7. | Ifloatsqrtf of addressing_mode
      8. | Isextend32
      9. | Izextend32
      and float_operation =
      1. | Ifloatadd
      2. | Ifloatsub
      3. | Ifloatmul
      4. | Ifloatdiv
      val big_endian : bool
      val size_addr : int
      val size_int : int
      val size_float : int
      val allow_unaligned_access : bool
      val division_crashes_on_overflow : bool
      val identity_addressing : addressing_mode
      val offset_addressing : addressing_mode -> int -> addressing_mode
      val num_args_addressing : addressing_mode -> int
      val print_addressing : +Arch (ocaml.Arch)

      Module Arch

      val command_line_options : (string * Stdlib.Arg.spec * string) list
      type addressing_mode =
      1. | Ibased of string * int
      2. | Iindexed of int
      3. | Iindexed2 of int
      4. | Iscaled of int * int
      5. | Iindexed2scaled of int * int
      type specific_operation =
      1. | Ilea of addressing_mode
      2. | Istore_int of nativeint * addressing_mode * bool
      3. | Ioffset_loc of int * addressing_mode
      4. | Ifloatarithmem of float_operation * addressing_mode
      5. | Ibswap of int
      6. | Isqrtf
      7. | Ifloatsqrtf of addressing_mode
      8. | Isextend32
      9. | Izextend32
      and float_operation =
      1. | Ifloatadd
      2. | Ifloatsub
      3. | Ifloatmul
      4. | Ifloatdiv
      val big_endian : bool
      val size_addr : int
      val size_int : int
      val size_float : int
      val allow_unaligned_access : bool
      val division_crashes_on_overflow : bool
      val identity_addressing : addressing_mode
      val offset_addressing : addressing_mode -> int -> addressing_mode
      val num_args_addressing : addressing_mode -> int
      val print_addressing : (Stdlib.Format.formatter -> 'a -> unit) -> addressing_mode -> Stdlib.Format.formatter -> diff --git a/dev/ocaml/Arg_helper/Make/argument-1-S/Key/Map/index.html b/dev/ocaml/Arg_helper/Make/argument-1-S/Key/Map/index.html index dccd3729..9ea23b1c 100644 --- a/dev/ocaml/Arg_helper/Make/argument-1-S/Key/Map/index.html +++ b/dev/ocaml/Arg_helper/Make/argument-1-S/Key/Map/index.html @@ -1,5 +1,5 @@ -Map (ocaml.Arg_helper.Make.S.Key.Map)

      Module Key.Map

      type key = t

      The type of the map keys.

      type !+'a t

      The type of maps from type key to type 'a.

      val empty : 'a t

      The empty map.

      val is_empty : 'a t -> bool

      Test whether a map is empty or not.

      val mem : key -> 'a t -> bool

      mem x m returns true if m contains a binding for x, and false otherwise.

      val add : key -> 'a -> 'a t -> 'a t

      add key data m returns a map containing the same bindings as m, plus a binding of key to data. If key was already bound in m to a value that is physically equal to data, m is returned unchanged (the result of the function is then physically equal to m). Otherwise, the previous binding of key in m disappears.

      • before 4.03

        Physical equality was not ensured.

      val update : key -> ('a option -> 'a option) -> 'a t -> 'a t

      update key f m returns a map containing the same bindings as m, except for the binding of key. Depending on the value of y where y is f (find_opt key m), the binding of key is added, removed or updated. If y is None, the binding is removed if it exists; otherwise, if y is Some z then key is associated to z in the resulting map. If key was already bound in m to a value that is physically equal to z, m is returned unchanged (the result of the function is then physically equal to m).

      • since 4.06.0
      val singleton : key -> 'a -> 'a t

      singleton x y returns the one-element map that contains a binding y for x.

      • since 3.12.0
      val remove : key -> 'a t -> 'a t

      remove x m returns a map containing the same bindings as m, except for x which is unbound in the returned map. If x was not in m, m is returned unchanged (the result of the function is then physically equal to m).

      • before 4.03

        Physical equality was not ensured.

      val merge : +Map (ocaml.Arg_helper.Make.S.Key.Map)

      Module Key.Map

      type key = t

      The type of the map keys.

      type !+'a t

      The type of maps from type key to type 'a.

      val empty : 'a t

      The empty map.

      val is_empty : 'a t -> bool

      Test whether a map is empty or not.

      val mem : key -> 'a t -> bool

      mem x m returns true if m contains a binding for x, and false otherwise.

      val add : key -> 'a -> 'a t -> 'a t

      add key data m returns a map containing the same bindings as m, plus a binding of key to data. If key was already bound in m to a value that is physically equal to data, m is returned unchanged (the result of the function is then physically equal to m). Otherwise, the previous binding of key in m disappears.

      • before 4.03

        Physical equality was not ensured.

      val update : key -> ('a option -> 'a option) -> 'a t -> 'a t

      update key f m returns a map containing the same bindings as m, except for the binding of key. Depending on the value of y where y is f (find_opt key m), the binding of key is added, removed or updated. If y is None, the binding is removed if it exists; otherwise, if y is Some z then key is associated to z in the resulting map. If key was already bound in m to a value that is physically equal to z, m is returned unchanged (the result of the function is then physically equal to m).

      • since 4.06.0
      val singleton : key -> 'a -> 'a t

      singleton x y returns the one-element map that contains a binding y for x.

      • since 3.12.0
      val remove : key -> 'a t -> 'a t

      remove x m returns a map containing the same bindings as m, except for x which is unbound in the returned map. If x was not in m, m is returned unchanged (the result of the function is then physically equal to m).

      • before 4.03

        Physical equality was not ensured.

      val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> diff --git a/dev/ocaml/Arg_helper/Make/argument-1-S/Key/index.html b/dev/ocaml/Arg_helper/Make/argument-1-S/Key/index.html index d78d93ca..4594a667 100644 --- a/dev/ocaml/Arg_helper/Make/argument-1-S/Key/index.html +++ b/dev/ocaml/Arg_helper/Make/argument-1-S/Key/index.html @@ -1,2 +1,2 @@ -Key (ocaml.Arg_helper.Make.S.Key)

      Module S.Key

      type t
      val of_string : string -> t

      The textual representation of a key must not contain '=' or ','.

      module Map : Map.S with type key = t
      +Key (ocaml.Arg_helper.Make.S.Key)

      Module S.Key

      type t
      val of_string : string -> t

      The textual representation of a key must not contain '=' or ','.

      module Map : Map.S with type key = t
      diff --git a/dev/ocaml/Arg_helper/Make/argument-1-S/Value/index.html b/dev/ocaml/Arg_helper/Make/argument-1-S/Value/index.html index e94675de..906d874b 100644 --- a/dev/ocaml/Arg_helper/Make/argument-1-S/Value/index.html +++ b/dev/ocaml/Arg_helper/Make/argument-1-S/Value/index.html @@ -1,2 +1,2 @@ -Value (ocaml.Arg_helper.Make.S.Value)

      Module S.Value

      type t
      val of_string : string -> t

      The textual representation of a value must not contain ','.

      +Value (ocaml.Arg_helper.Make.S.Value)

      Module S.Value

      type t
      val of_string : string -> t

      The textual representation of a value must not contain ','.

      diff --git a/dev/ocaml/Arg_helper/Make/argument-1-S/index.html b/dev/ocaml/Arg_helper/Make/argument-1-S/index.html index 98a3a331..e102282e 100644 --- a/dev/ocaml/Arg_helper/Make/argument-1-S/index.html +++ b/dev/ocaml/Arg_helper/Make/argument-1-S/index.html @@ -1,2 +1,2 @@ -S (ocaml.Arg_helper.Make.S)

      Parameter Make.S

      module Key : sig ... end
      module Value : sig ... end
      +S (ocaml.Arg_helper.Make.S)

      Parameter Make.S

      module Key : sig ... end
      module Value : sig ... end
      diff --git a/dev/ocaml/Arg_helper/Make/index.html b/dev/ocaml/Arg_helper/Make/index.html index 245e9a4e..46d422d2 100644 --- a/dev/ocaml/Arg_helper/Make/index.html +++ b/dev/ocaml/Arg_helper/Make/index.html @@ -1,2 +1,2 @@ -Make (ocaml.Arg_helper.Make)

      Module Arg_helper.Make

      Parameters

      module S : sig ... end

      Signature

      type parsed
      val default : S.Value.t -> parsed
      val set_base_default : S.Value.t -> parsed -> parsed
      val add_base_override : S.Key.t -> S.Value.t -> parsed -> parsed
      val reset_base_overrides : parsed -> parsed
      val set_user_default : S.Value.t -> parsed -> parsed
      val add_user_override : S.Key.t -> S.Value.t -> parsed -> parsed
      val parse : string -> string -> parsed ref -> unit
      type parse_result =
      1. | Ok
      2. | Parse_failed of exn
      val parse_no_error : string -> parsed ref -> parse_result
      val get : key:S.Key.t -> parsed -> S.Value.t
      +Make (ocaml.Arg_helper.Make)

      Module Arg_helper.Make

      Parameters

      module S : sig ... end

      Signature

      type parsed
      val default : S.Value.t -> parsed
      val set_base_default : S.Value.t -> parsed -> parsed
      val add_base_override : S.Key.t -> S.Value.t -> parsed -> parsed
      val reset_base_overrides : parsed -> parsed
      val set_user_default : S.Value.t -> parsed -> parsed
      val add_user_override : S.Key.t -> S.Value.t -> parsed -> parsed
      val parse : string -> string -> parsed ref -> unit
      type parse_result =
      1. | Ok
      2. | Parse_failed of exn
      val parse_no_error : string -> parsed ref -> parse_result
      val get : key:S.Key.t -> parsed -> S.Value.t
      diff --git a/dev/ocaml/Arg_helper/index.html b/dev/ocaml/Arg_helper/index.html index a786ad3b..a854d6c3 100644 --- a/dev/ocaml/Arg_helper/index.html +++ b/dev/ocaml/Arg_helper/index.html @@ -1,2 +1,2 @@ -Arg_helper (ocaml.Arg_helper)

      Module Arg_helper

      Decipher command line arguments of the form <value> | <key>=<value>,...

      (as used for example for the specification of inlining parameters varying by simplification round).

      Warning: this module is unstable and part of compiler-libs.

      module Make (S : sig ... end) : sig ... end
      +Arg_helper (ocaml.Arg_helper)

      Module Arg_helper

      Decipher command line arguments of the form <value> | <key>=<value>,...

      (as used for example for the specification of inlining parameters varying by simplification round).

      Warning: this module is unstable and part of compiler-libs.

      module Make (S : sig ... end) : sig ... end
      diff --git a/dev/ocaml/Asmgen/index.html b/dev/ocaml/Asmgen/index.html index 1823d78e..df1be970 100644 --- a/dev/ocaml/Asmgen/index.html +++ b/dev/ocaml/Asmgen/index.html @@ -1,5 +1,5 @@ -Asmgen (ocaml.Asmgen)

      Module Asmgen

      From Lambda to assembly code

      type middle_end = +Asmgen (ocaml.Asmgen)

      Module Asmgen

      From Lambda to assembly code

      type middle_end = backend:(module Backend_intf.S) -> prefixname:string -> ppf_dump:Stdlib.Format.formatter -> diff --git a/dev/ocaml/Asmlibrarian/index.html b/dev/ocaml/Asmlibrarian/index.html index 1e9475f7..ebf30582 100644 --- a/dev/ocaml/Asmlibrarian/index.html +++ b/dev/ocaml/Asmlibrarian/index.html @@ -1,2 +1,2 @@ -Asmlibrarian (ocaml.Asmlibrarian)

      Module Asmlibrarian

      val create_archive : string list -> string -> unit
      type error =
      1. | File_not_found of string
      2. | Archiver_error of string
      exception Error of error
      val report_error : Stdlib.Format.formatter -> error -> unit
      +Asmlibrarian (ocaml.Asmlibrarian)

      Module Asmlibrarian

      val create_archive : string list -> string -> unit
      type error =
      1. | File_not_found of string
      2. | Archiver_error of string
      exception Error of error
      val report_error : Stdlib.Format.formatter -> error -> unit
      diff --git a/dev/ocaml/Asmlink/index.html b/dev/ocaml/Asmlink/index.html index 73b2aee0..61f60613 100644 --- a/dev/ocaml/Asmlink/index.html +++ b/dev/ocaml/Asmlink/index.html @@ -1,5 +1,5 @@ -Asmlink (ocaml.Asmlink)

      Module Asmlink