Changelog
All notable changes to Hayashi, following Keep a Changelog.
Full source changelog available on GitHub.
Unreleased dev
In development
No unreleased changes at this time.
2026-08-20
Changed
- Greeners 2.0.0: the numerical facade now ships as the published
greeners = "2.0.0"crate on crates.io. The localcrates/greenerscheckout and associated CI steps were removed. - Greeners 2.0.0 fixes carried into Hayashi: MLP (Adam optimizer), NARDL lag handling, PSTR grid search, SAR/SEM log-likelihood, spatial Durbin overflow, NLS CES normalisation, panel Tobit variable names, and GEE sandwich standard errors.
Validation
- 234 cases across 115 implemented estimators: 219 pass, 15 not-supported, 0 fail / 0 blocked.
- New validated cases include
decompose,ucm,cancorr,bplm,chamberlain,nls_*,copula,spatial_sar,spatial_sem,xtlogit,xtprobit,xtpoisson,modwt,did,qreg,synthdid, and more.
Added
- VS Code debugger: structured model expansion — model results expand in the Variables panel with
coefficients(DataFrame),fit(Dict), and per-parameter Series for OLS, IV/2SLS, panel, binary, count,tobit,ordered,mnlogit,zip/zinb,glm,rlm,qreg,gmm,ab,sysgmm,glsar,mixed,sur, and3sls. - New estimators:
xtlogit,xtprobit,xtpoisson(panel GEE),spatial_sar,spatial_sem,spatial_panel_sar,spatial_panel_sem,spatial_durbin,spatial_durbin_error,nls_exp,nls_power,nls_logistic,nls_cobb_douglas,nls_ces,sfa_production,sfa_cost,panel_tobit,panel_heckman,panel_qreg,eventstudy,double_ml,copula,nardl,pvar,qvar,setar,tvp_var,modwt,did,synthdid,midas,tvp,favar,msvar,bvar,mfvar,tvcopula,sv,fapanel,hawkes,qrf,gbm,mlp,rf,synth_smoking, and more. - New diagnostics and post-estimation:
acf()/pacf()(autocorrelation values),cusumtest(model),akaike_weights(m1, m2, ...),lrtest(m_restricted, m_unrestricted),estat_overid,estat_endog,estat_classification,lroc(model)(with ASCII ROC plot),estat_gof,linktest,marginsplot, andestat_rocaliases. - Language and runtime:
for i, v in listandfor k, v in dict,try/catch/finallywithfinallyalways running,matchas contextual keyword,list_files()builtin,++/--operators,quietly on/quietly off, andhay install user/repo@version/hay listwith plugin versions.
Fixed
- CSV export column order:
to_csvpreserves insertion order viaIndexMap. append()string columns:get_string()handlesCategoricalcolumns, fixing empty strings for repeated values.- Plugin resolution on Windows:
HOMEfalls back toUSERPROFILE, searches executable directory, and uses;separator forHAYASHI_PATH.
Downloads
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.