Core is an extension of Core_kernel with Unix APIs. The unmodified
libraries can be found there.
In particular, Core has comprehensive implementation of times (see Time,
Time_ns, Timing_wheel_float, and Schedule_v5), where some details are
platform-specific (like timing wheels based on floats).
Some modules are mere extensions of those existing in Core_kernel, like Bigbuffer,
Bigstring, Caml, Time, and Md5, where what's added is handlers for reading
from or writing to Unix sockets and file descriptors, or support for floating-point
numbers. Other modules are entirely new, like:
Command, a richly featured tool for creating command-line programs.Daemon, for daemonizing processes.Iobuf, which lets you use contiguous ranges of bytes for I/O purposes.Lock_file, for managing OS-level locks.Crc, for cyclic redundancy checks.Linux_ext, providing a wrapper around Linux-specific system calls.Mac_address, for managing MAC addresses.Signal, for handling Unix signals like SIGHUP and SIGKILL.A few modules in Core don't have any platform-specific functionality but haven't yet
been ported to Core_kernel for technical reasons (like a dependency on Time, which
until recently was only in Core):
IntervalSqueueUuidmodule Bigstring : sig ... endString type based on Bigarray, for use in I/O and C-bindings, extending
Core_kernel.Bigstring.
module Bigstring_marshal : sig ... endUtility functions for marshalling to and from bigstring, extending
Core_kernel.Bigstring_marshal.
module Condition = Core__.Core_conditionmodule Core_stable = Core__.Stablemodule Daemon : sig ... endThis module provides support for daemonizing a process. It provides flexibility as to where the standard file descriptors (stdin, stdout and stderr) are connected after daemonization has occurred.
module Date = Core__.Core_datemodule Filename = Core__.Core_filenamemodule Interval : sig ... endModule for simple closed intervals over arbitrary types. Used by calling the
Make functor with a type that satisfies
Comparable (for correctly ordering elements).
module Interval_intf : sig ... endmodule Iobuf : sig ... endA non-moving (in the GC sense) contiguous range of bytes, useful for I/O operations.
module Lock_file : sig ... endMutual exclusion between processes using flock and lockf. A file is considered locked only if both of these mechanisms work.
module Digest = Md5module Mutex = Core__.Core_mutexmodule Nano_mutex : sig ... endA nano-mutex is a lightweight mutex that can be used only within a single OCaml runtime.
module Schedule_v4_deprecated : sig ... endDeprecated version of Schedule, which defines a type for schedules like "every 5 min
after the hour" or "every weekday at 3pm."
module Schedule_v5 : sig ... endLatest version of Schedule, which defines a type for schedules like "every
5 min after the hour" or "every weekday at 3pm." More expressive than V4, for example
by adding the Zoned_between variant, which behaves like Between but allows
expressing the start and end times in different zones.
module Sys = Core__.Core_sysmodule Thread = Core__.Core_threadmodule Time = Core__.Core_time_floatmodule Time_common : sig ... endThis module type is basically the intersection of the module types of Core.Time
and Core.Time_ns. We verify that that relation holds in check_std.ml.
module Time_ns = Core__.Core_time_nsmodule Timing_wheel_float : sig ... endA timing wheel in which time is represented by Time.t, i.e., by a floating-point
number of seconds since the epoch. This is a wrapper around Timing_wheel_ns, which
is preferable both because it has better performance and because it avoids issues
having to do with floating point (im)precision.
module Unix = Core__.Core_unixmodule Uuid : sig ... endImplements universally unique identifiers based on version 3 of the UUID specification. Identifier generation is thread safe, and fast.
module Version_util : sig ... endmodule Weak_hashtbl : sig ... endA hashtable that keeps a weak pointer to each key's data and uses a finalizer to detect when the data is no longer referenced (by any non-weak pointers).
val sec : Core_kernel__.Import.float ‑> Time.Span.t