Changelog
Changelog
Section titled “Changelog”This changelog includes end-user changes only. For internal development notes, see the repository changelog.
- Added
OnlineLoess.add_point_vector()for multivariate Online point updates. - Added a
versionexport atfastloess/versionso consumers can query the Node.js package version without loading the native addon. - Added
cvto Batch options for grouped cross-validation configuration alongside legacy CV fields. - Added
outputsarrays to Batch, Streaming, Online, and prediction options for grouped optional result selection. - Added
retain_modelandLoessResult.predict(newX, options)for out-of-sample prediction. - Added
return_gradienttoSmoothOptions,StreamingOptions, andOnlineOptions. - Added
confidence_intervals/prediction_intervals/return_setoStreamingSmoothOptionsandOnlineSmoothOptions. Online requiresupdate_mode: "full"or throws. NewOnlineOutputbound fields.
Changed
Section titled “Changed”- Clarified Batch
residual_sdas1.4826 * MAD; Streaming reports the cumulative sample standard deviation of emitted residuals. - Breaking change: replaced individual
return_*output booleans withoutputs: [...]for Batch, Streaming, Online, and prediction options. - Breaking change: replaced flat interval options and prediction levels with
intervals: { confidence, prediction }; CV uses onlycv: { fractions, method, k }with an outerseed, replacing flat CV options andcv.seed.
- Use the fitted model’s kernel for unweighted, unpadded one-dimensional linear prediction standard errors without robustness downweighting, with smoothing influence rows and global residual degrees of freedom, including interpolation; align prediction-interval residual scales.
- Correct tied-coordinate interpolation splits and normalized cell geometry, add two-dimensional neighboring-edge blending, and match R’s neighborhood rounding near integer span boundaries.
- Preserve zero interpolation subdivision thresholds to match R’s small-span cell trees, retaining terminal observation vertices and correcting interpolated fits on small datasets.
- Normalize local case weights by their neighborhood maximum so common scaling cannot turn valid positive weights into an epsilon-triggered unweighted fallback.
- Prevented overflow in even medians, mean/bisquare scales, Batch/Streaming diagnostics and AIC, and local/all-tied weight sums for large finite inputs.
- Keep generated native version checks tied to
package.json, and provide TypeScript declarations for thefastloess/versionsubpath. - Reject unknown output names across Batch, Streaming, Online, and prediction options. Preserve the
fit_async()TypeScript return type asPromise<LoessResult>after N-API builds. - Validate case-weight lengths and values before dropping missing observations, so invalid weights on dropped rows are not silently ignored.
- Preserve case weights through sorted CV training subsets and multidimensional predictions. Serial and parallel CV now agree on seeded folds and held-out LOOCV predictions; K-fold counts above the retained observation count are rejected.
- Reject non-positive or non-finite Streaming/Online auto-convergence tolerances. Online auto-convergence requires full updates with robustness iterations.
- Include all observations for Gaussian smoothing and prediction while preserving the k-th-neighbor bandwidth; use the true exponential without an artificial tail floor.
- Correct case-weighted standard errors for direct, unpadded one-dimensional linear fits and retained prediction, with matching serial/parallel local moments. Span-one fits no longer substitute a kernel-free global OLS formula.
- Honor configured zero-weight fallback policies in constant-degree, zero-bandwidth, insufficient-neighbor, and coefficient-fit paths.
- Match R LOESS’s even-sample bisquare MAR scale arithmetic, including extremely small residuals, while preserving the centered-MAD fallback.
- Aligned
OnlineLoessdefaults across the Rust core and bindings:iterationsis now0with the defaultupdate_mode = "incremental"; positive robustness iterations requireupdate_mode = "full". - Fixed inconsistent naming of the Node.js binding as “JavaScript” across READMEs, doc-site home pages, and
CITATION.cff. - Fixed
cv_seedsilently accepting negative values by validating the signed input before converting it tou64.
- Added
aarch64-unknown-linux-muslandarmv7-unknown-linux-gnueabihfprebuilt targets with matching optional npm subpackages. - Added
return_sortedandmissingoptions toLoess’sSmoothOptions/StreamingSmoothOptions/OnlineSmoothOptions.
Changed
Section titled “Changed”- Consolidated the Node.js README (merging Installation/Documentation, dropping GitHub-only alert syntax, and removing sections covered by docs pages), renamed “When to Use” to “When to Use Batch Adapter”, and moved parameter docs into API option tables, removing
parameters.md. - Reorganized API documentation with field tables, per-field Options sections, and a Result Structure section at the end; documented the dynamic
overlapdefault. - Breaking:
StreamingLoess/OnlineLoessnow use dedicatedStreamingSmoothOptions/OnlineSmoothOptionstypes instead of Batch’sSmoothOptions, dropping Batch-only fields (confidence_intervals,prediction_intervals,return_se,cv_*) from both andreturn_diagnostics/return_residuals/parallelfromOnlineSmoothOptions. This affects TypeScript consumers;Loess’sSmoothOptionsis unchanged.
- Fixed
OnlineLoess/StreamingLoessdefaults to match docs:min_pointschanged from3to2, andupdate_modefrom"full"to"incremental". - Corrected docs to state that result
xvalues follow input order after internal sorting and mapping back. - Fixed the “Handling Outliers” quickstart example printing nothing with only 6 points at
fraction = 0.5; bumped to0.7so the outlier is actually downweighted. - Fixed the docs homepage never showing README content.
- Fixed TypeDoc/Starlight API-reference links that returned 404s.
- Added a GitHub Pages landing page at the repository root, built from
README.mdvia pandoc and deployed bydocs.yml.
Changed
Section titled “Changed”- Updated the Node.js README to be binding-specific instead of using a generic README shared across bindings.
- Moved Node.js documentation to GitHub Pages, served by Starlight at https://thisisamirv.github.io/loess-project/nodejs/.
Changed
Section titled “Changed”- Moved the
tutorials/pages into a newuser-guide/use-cases/section. - Split
StreamingLoess/OnlineLoesscontent into dedicated API reference pages and standardized API examples with expected output comments. - Breaking: Renamed
OnlineOutput’ssmoothedandstd_errorfields toyandstandard_error.
-
Added the Node.js binding.
-
Added weighted Streaming/Online updates, Online window diagnostics, and prediction from the current window.