A standard library, with batteries included
Core_kernel, the system-independent part of Core, is a souped-up and filled-out version of Base, Jane Street’s minimal standard library replacement. Some Core_kernel modules are mere extensions of their counterparts in Base, usually adding generic functionality by including functors that make them binable, comparable, sexpable, blitable, etc.
The bulk of Core_kernel, though, is modules providing entirely new functionality. Some highlights:
Blang, for defining DSLs for boolean expressions
Bus, a pubsub system within the memory space of the program
Memo, for non-re-entrant memoization
Pool, a manual memory manager for a set of mutable types
Quickcheck, a library that uses predicate-based tests and pseudo-random inputs to automate testing
Full Unix support
A set of modules for dealing with times of various precisions, and time zones, on various architectures and environments
Command, a library for purely functional command line processing
Daemon, for daemonizing processes
Signal, for working with Unix signals
Process_env, utility functions for dealing with the environment
Schedule, which defines a type for schedules like “every 5 min after the hour” or “every weekday at 3pm”
Squeue, a thread-safe queue module with locks
$ opam install core
Where Core fits in
Jane Street has three standard library packages that offer varying levels of completeness and stability. Here’s how they fit together:
Minimal stdlib replacement. Portable and lightweight and intended to be highly stable. See the page for Base.
Core_kernel extended with UNIX APIs.