Add immutable dense dataset admission with explicit finiteness policies, aligned zero-copy row views, stable schema fingerprints, and observable copy/view reporting.
Add immutable mean, median, and constant imputation, population standardization, and variance-based feature filtering while preserving feature identities.
Add leakage-safe sequential pipelines that fit preprocessing only on training input, propagate schemas, derive stage-local random streams, and dispatch prediction, decision, and probability operations.
Add portable weighted ordinary least squares, ridge regression, and binary logistic regression with stable numerical methods, fitted coefficients, and solver diagnostics.
Add deterministic K-fold, stratified K-fold, group K-fold, and expanding-window time-series splitters with validated row views and explicit aligned dataset materialization.
Add weighted regression and binary classification metrics, plotting-neutral residual, ROC, and precision-recall data, higher-is-better scorers, stable score aggregation, and explicit undefined-result policies.
Add deterministic cross-validation with ordered train and test scores, CPU timings, optional fitted models and row indices, structured failures, and independent split and fit seeds.
Add the separately installable modelkit-parallel package for bounded Domainslib fold execution with sequential fallback, stable logical results, and oversubscription diagnostics.
Add typed finite grid search over immutable configurations with shared splits, failure-aware candidate reports, named-scorer ranking, deterministic tie handling, and best-model refitting on all training data.
Add versioned data-only artifacts for fitted built-in regression and binary classification pipelines with feature-schema identity, bounded readers, accidental-corruption detection, file conveniences, and golden compatibility coverage.
Add committed scikit-learn parity fixtures and deterministic comparative benchmark reports for preprocessing, linear models, splitters, metrics, cross-validation, parallel execution, and grid search without adding a Python runtime dependency or making performance claims.
Expand executable documentation and the end-to-end evaluation example to cover the complete supervised workflow.
Decompose the portable implementation into private cohesive source units while retaining the existing flat Modelkit.* public API and optional-package dependency boundaries.
0.2.1 (2026-08-11)
Restore package builds on OCaml 5.5 by making typed target accessor specializations explicit.
Test OCaml 5.5 on Linux, macOS, and Windows in addition to the existing OCaml 5.2 and 5.3 matrix.
0.2.0 (2026-08-10)
Add immutable float64 vectors and matrices, row views, typed targets, feature schemas, sample weights, groups, and validation errors over portable Bigarray storage.
Define common contracts for immutable specifications, fitted estimators, classifiers, regressors, transformers, scorers, splitters, execution, random-number generation, and numerical backends.
Add deterministic seeds and random streams, stable sequential execution, and a portable reference backend with cancellation-safe reductions and matrix-vector kernels.
Establish unit, property, metamorphic, mdx, public API compatibility, sklearn fixture, and reusable numerical-backend conformance tests.
Add pinned development-only Python tooling and committed metadata for reproducible sklearn reference fixtures and comparative benchmark collection without introducing a runtime Python dependency.
Verify build, tests, package installation targets, and odoc generation on Linux x86-64, macOS arm64, and Windows x86-64 with OCaml 5.2 and 5.3 in GitHub Actions.
0.1.0 (2026-08-04)
Establish the initial ModelKit package with an OCaml 5.2 compiler floor and Apache-2.0 licensing.
Add the portable library skeleton and reserved package boundaries for optional adapters and accelerated backends.
Add the Dune workspace, generated odoc documentation, formatting checks, and platform-specific opam lock workflow.
Document project governance, support, and maintenance policies.