Clarified Batch residual_sd as 1.4826 * MAD; Streaming reports the cumulative sample standard deviation of emitted residuals.
Breaking change: replaced individual return_* output arguments with outputs = c(...) for Batch, Streaming, Online, and prediction.
Breaking change: replaced flat interval arguments and prediction levels with intervals = intervals_opts(confidence = ..., prediction = ...); CV uses only cv = cv_opts(...) with an outer seed, replacing flat CV arguments and cv_opts(seed = ...). Removed named constructor arguments now error instead of being silently ignored.
Unavailable diagnostics are now represented as R NA rather than generic NaN values.
Fixed
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.
Reject fractional/overflowing integer and count options before FFI coercion; validate grouped CV/interval lists and numeric vector/matrix shapes; accept integer custom weights.
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 cv_seed silently accepting negative values and reinterpreting them as a huge unsigned seed instead of raising an error. Now validated before the cast.
Fixed multivariate Batch/Streaming matrix inputs being flattened in R’s column-major order; preserve row-wise coordinates. CV seeds now honor the documented full exact-integer range through 2^53, matrix predict_window() queries are rejected instead of being misinterpreted, and plotting multivariate results now returns a clear unsupported-mode error.
rfastloess 2.0.0
Added
Changed
Updated the R README to be binding-specific instead of using a generic README shared across bindings.
Moved R documentation from ReadTheDocs to GitHub Pages, served by pkgdown at https://thisisamirv.github.io/loess-project/r/. The ReadTheDocs site no longer includes R-specific content.
Changed R version dependency to 4.4.0 due to issues with installing Bioconducter packages on R < 4.4.0.
Fixed
Fixed .cargo/config.toml hardcoding absolute c:/rtools45/... paths for the x86_64-pc-windows-gnu linker and ar tool; it now uses bare tool names resolved via PATH.
Fixed Windows ARM64 and CRAN source builds that failed while linking the native R library.
Fixed Loess(fraction = 0.3, 4) incorrectly succeeding: reject_extra_positional_args() counted unnamed arguments but did not check their position, so a single unnamed arg in any non-first slot passed validation. The check now rejects any unnamed argument that is not in position 1.
Fixed fit() and process_chunk() silently flattening a matrix x and producing a confusing Rust-level length-mismatch error when dimensions was not set to match ncol(x). Both methods now raise an informative error at the R level, naming the dimensions parameter to fix.