Changelog
All notable changes to Hayashi, following Keep a Changelog.
Full source changelog available on GitHub.
Unreleased dev
In development
Added
- Safe modes for
hay dist-update:--helpand--checksubcommands, argument validation with unit tests. - English-only user-facing output: all error messages and printed strings translated to English. Mathematical notation preserved.
- Interpreter decomposition:
interpreter.rssplit into focused submodules (execution, eval_expr, dispatch, helpers, value, models). Reduced from ~4,800 to ~680 lines. forloop index/value binding:for i, v in listandfor k, v in dict.try/catch/finally:finallyblock runs regardless of try outcome.hay installwith version: install specific release tags.hay listshows versions from plugin metadata.matchas contextual keyword: works as identifier and match expression.list_files()builtin:list_files(dir)andlist_files(dir, pattern).++and--operators: increment and decrement with desugaring tox = x + 1.
Changed
quietly(expr)deprecated: usequietly on/quietly offinstead.- Validation runner exit semantics: non-zero exit on blocked cases unless
--allow-blocked. data_sourcefield added to validation cases.
Fixed
- CSV export column order:
to_csvno longer sorts columns alphabetically. Insertion order preserved viaIndexMap. append()losing string columns:get_string()now handlesCategoricalcolumns. Previously,append()produced empty strings for columns with repeated values (dates, tickers, sectors).- Plugin resolution on Windows:
HOMEfalls back toUSERPROFILE. Searches executable directory.HAYASHI_PATHuses;separator on Windows. - Validation workflow: repaired
validation.yml, added Greeners checkout. - Clippy warnings: fixed
empty_line_after_doc_comments,too_many_arguments,needless_range_loop.
Pre-release builds — beta versions are for testing only.
- Not published to
crates.io— binary-only GitHub releases - May contain known or unknown bugs — do not use in production
- API may change before the stable release
- Report issues on GitHub Issues
0.2.9-beta.1 beta
2026-07-07
Fixed
- CSV export column order:
to_csvno longer sorts columns alphabetically. Insertion order preserved viaIndexMap(replacingHashMapin Greeners). append()losing string columns:get_string()now handlesCategoricalcolumns. Previously,append()produced empty strings for any column with repeated values (dates, tickers, sectors).- Plugin resolution on Windows:
HOMEfalls back toUSERPROFILE. Searches executable directory (exe_dir/,exe_dir/plugins/).HAYASHI_PATHuses;as separator on Windows.
Added
++and--operators: increment and decrement.for i, v in listandfor k, v in dict: index/value and key/value bindings.try/catch/finally:finallyblock runs regardless of try outcome.hay installwith version: install specific release tags.hay listshows versions from plugin metadata.matchas contextual keyword: works as identifier and match expression.list_files()builtin:list_files(dir)andlist_files(dir, pattern).- Interpreter decomposition:
interpreter.rsreduced from ~4,800 to ~680 lines. - English-only user-facing output: all error messages and printed strings in English.
Changed
quietly(expr)deprecated: usequietly on/quietly offinstead.- Greeners 1.5.3:
IndexMapfor column order preservation,get_stringhandlesCategorical.
Downloads
2026-09-17
Added
++and--operators: increment/decrement with desugaring tox = x + 1.- Greeners 1.5.1 dependency (crates.io, no path dependency).
Fixed
- Greeners dependency: uses
greeners = "1.5.1"from crates.io in release builds. - crossbeam-epoch advisory: updated to fix RUSTSEC advisory.
2026-08-25
Added
- Hybrid plugin system: Native Rust (
.so/.dll), WebAssembly (.wasm), and Script (.hay) tiers via unifiedHayashiPlugintrait. - Pipe placeholder
_:df |> ols(lw ~ yos, _)passes piped value to any argument position. ttestoptionunequal=false: pooled (equal-variance) t-test.- Validation programme expanded to 40 cases: ridge, elasticnet, nbreg, oprobit, mlogit, SUR.
- Parametric-bootstrap SE for VECM with inference enabled.
Fixed
- Non-numeric columns in
generateand estimators:to_float()instead of hard-failing on Boolean/Categorical columns. - Hardened URL downloads (security, contributed by Charles Shaw): SSRF prevention, DNS rebinding protection, timeout and size limits.
- Clippy warnings fixed in Hayashi and Greeners.
argminupdated to resolve RUSTSEC-2024-0384.
Changed
ttestdelegated to Greeners: interpreter is now a thin dispatcher.
Removed
- Unused
anyhowdependency (contributed by Charles Shaw).
2026-06-25
Added
codebook(df): detailed variable description.- Normality tests:
swilk,sfrancia,sktest. mutate,group_by,pivot_longer,pivot_wider,select: pipe-friendly data manipulation.print()multi-arg:print(a, b, sep=", ").- Improved error messages: source line preview, Levenshtein suggestions, stack traces.
Fixed
- Keywords followed by
(now parse as function calls. - Parser line numbers correctly tracked after newlines.
MomentHelpersexported from Greeners.
2026-06-24
Added
- Operators:
%(modulo),**(power alias), compound assignment (+=,-=,*=,/=,%=). gmm(): two-step efficient GMM with Hansen J-test.cmnlogit(): conditional multinomial logit.help(about)andhelp(license).
Fixed
- Formula parsing unified: all 53 estimators accept bare and string formulas.
2026-06-24
Fixed
- Scalar math functions:
sqrt(),abs(),ln(),exp(),pow(),sin(),cos(),tan(),ceil(),floor(),round(),sign(),factorial(),normalden(),invnormal(),max(),min()now work as standalone expressions.
2026-06-24
Breaking Changes
- Extension:
.hy→.hay - Binary:
hayashi→hay - Namespaced imports:
import("mod")→mod::func()
Added
- CI/CD: GitHub Actions with fmt, clippy, test on Linux/macOS/Windows; release workflow for 4 targets.
- Namespaces:
import("mod", as=alias),import("mod", only=["f"]). - REPL: tab completion, syntax highlighting, colored prompt, fish-style history hints.
- Date/time:
date(),datetime(),year(),month(),day(),hour(),dow(). - Collinearity detection: QR-based across 9 estimators with Stata-style
(omitted)display. - VS Code extension 0.2.0.
Fixed
- Stack overflow on Windows/macOS: 32 MB stack for main thread.
- Cross-platform tests:
std::env::temp_dir()replaces hardcoded paths. - Package manager: correct
user/repo/directory structure.
2026-06-15
Initial Release
- 46 estimators: OLS, IV, Logit, Probit, Poisson, NegBin, Tobit, Heckman, FE, RE, Arellano-Bond, System GMM, ARIMA, GARCH, VAR, VECM, Lasso, Ridge, DID, RD, Cox, Fama-MacBeth, and more.
- Stata-like syntax with closures, pipe, match, f-strings, try/catch.
- 8 I/O formats: CSV, TSV, JSON, DTA, Excel, Parquet, SQLite, ODBC.
- Plugin system with package manager (
hay install). - Post-estimation: test, nlcom, margins, bootstrap, esttab, vif, hausman, predict.
- 387 tests, 59 examples, ~110 help topics.
- 100% Rust — no C, no Fortran, no system BLAS/LAPACK.