Skip to content

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 version export at fastloess/version so consumers can query the Node.js package version without loading the native addon.
  • Added cv to Batch options for grouped cross-validation configuration alongside legacy CV fields.
  • Added outputs arrays to Batch, Streaming, Online, and prediction options for grouped optional result selection.
  • Added retain_model and LoessResult.predict(newX, options) for out-of-sample prediction.
  • Added return_gradient to SmoothOptions, StreamingOptions, and OnlineOptions.
  • Added confidence_intervals/prediction_intervals/return_se to StreamingSmoothOptions and OnlineSmoothOptions. Online requires update_mode: "full" or throws. New OnlineOutput bound fields.
  • Clarified Batch residual_sd as 1.4826 * MAD; Streaming reports the cumulative sample standard deviation of emitted residuals.
  • Breaking change: replaced individual return_* output booleans with outputs: [...] for Batch, Streaming, Online, and prediction options.
  • Breaking change: replaced flat interval options and prediction levels with intervals: { confidence, prediction }; CV uses only cv: { fractions, method, k } with an outer seed, replacing flat CV options and cv.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 the fastloess/version subpath.
  • Reject unknown output names across Batch, Streaming, Online, and prediction options. Preserve the fit_async() TypeScript return type as Promise<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 OnlineLoess defaults across the Rust core and bindings: iterations is now 0 with the default update_mode = "incremental"; positive robustness iterations require update_mode = "full".
  • Fixed inconsistent naming of the Node.js binding as “JavaScript” across READMEs, doc-site home pages, and CITATION.cff.
  • Fixed cv_seed silently accepting negative values by validating the signed input before converting it to u64.
  • Added aarch64-unknown-linux-musl and armv7-unknown-linux-gnueabihf prebuilt targets with matching optional npm subpackages.
  • Added return_sorted and missing options to Loess’s SmoothOptions/StreamingSmoothOptions/OnlineSmoothOptions.
  • 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 overlap default.
  • Breaking: StreamingLoess/OnlineLoess now use dedicated StreamingSmoothOptions/OnlineSmoothOptions types instead of Batch’s SmoothOptions, dropping Batch-only fields (confidence_intervals, prediction_intervals, return_se, cv_*) from both and return_diagnostics/return_residuals/parallel from OnlineSmoothOptions. This affects TypeScript consumers; Loess’s SmoothOptions is unchanged.
  • Fixed OnlineLoess/StreamingLoess defaults to match docs: min_points changed from 3 to 2, and update_mode from "full" to "incremental".
  • Corrected docs to state that result x values 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 to 0.7 so 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.md via pandoc and deployed by docs.yml.
  • Moved the tutorials/ pages into a new user-guide/use-cases/ section.
  • Split StreamingLoess/OnlineLoess content into dedicated API reference pages and standardized API examples with expected output comments.
  • Breaking: Renamed OnlineOutput’s smoothed and std_error fields to y and standard_error.
  • Added the Node.js binding.

  • Added weighted Streaming/Online updates, Online window diagnostics, and prediction from the current window.