Changes in version 5.0.0 Added - Added prebuilt GPU library release jobs and installer selection for Linux ARM64, musl/Alpine x86_64 and ARM64, and Windows ARM64. - Enabled the optional wgpu DirectX 12 backend for GPU-enabled Windows builds. DXC is loaded dynamically with an FXC fallback, avoiding eager imports of dxcompiler.dll and dxil.dll. - Added GLES for Android GPU builds with a target-scoped wgpu feature; Windows continues to omit the GLES-only loader imports. - Added cv_opts() to configure grouped cross-validation options for Lowess(cv = ...). - Added intervals_opts() and an intervals argument to Lowess(), StreamingLowess(), OnlineLowess(), and predict(), including bootstrap intervals via bootstrap. - Added a seed argument to Lowess(), StreamingLowess(), OnlineLowess(), and predict() for reproducible cross-validation and bootstrap resampling. - Added an "Alternative Software" vignette comparing rfastlowess with stats::lowess(). Changed - Clarified that Batch residual_sd is 1.4826 * MAD, while Streaming reports the cumulative sample standard deviation of emitted residuals. - Breaking change: replaced individual return_* arguments with grouped outputs, and replaced Lowess()'s four cv_* arguments with cv = cv_opts(...). - Breaking change: replaced confidence_intervals/prediction_intervals (and predict()'s confidence_level/prediction_level) with intervals = intervals_opts(confidence, prediction, bootstrap), and moved the cross-validation seed from cv_opts(seed = ...) to a shared seed argument. - Represent unavailable diagnostic metrics as R NA rather than generic NaN values. Fixed - Fixed CPU Gaussian standard errors for fitted and queried values to use the full unbounded kernel support. - Made even-sample medians and mean-absolute residual scaling overflow-resistant for large finite values, and centered Batch/Streaming R-squared accumulation to preserve one-ULP response variation at large offsets. - Made Batch RMSE, MAE, and R-squared reductions scale-safe for large finite values, preserved bisquare downweighting when tuned scales exceed the numeric range, and normalized custom weights before summation in local and all-tied fits. - Kept AIC finite when raw residual-square sums overflow, and made local/all-tied WLS invariant to common scaling of large finite case weights. - Reject unused constructor options, factors/multidimensional inputs, and malformed grouped options. Keep GPU sidecars mapped for live model finalizers, try older valid sidecars, verify native ABI/version and argument counts, bound candidate probes, and check download SHA-256 digests before execution. - Validate Streaming/Online iterations and plain-list CV fold counts before coercion, and accept integer custom weights. - Detect R's linked libc, confirm local GPU installs before probing candidates, use canonical library filenames, and activate versioned Windows GPU sidecars on restart without replacing loaded DLLs. - Fixed global OLS fits treating predictor values with a large offset as degenerate; translated inputs now retain their fitted slope. - Fixed fraction-1 global fits ignoring custom weights, including when Batch sorts observations by x. - Fixed Batch missing = "drop" accepting custom weights with a length different from the original input; weights are validated before rows are dropped. - Fixed standard errors for global weighted fits to account for observation weights and weighted prediction leverage. - Fixed local Batch and retained-model prediction standard errors ignoring custom_weights; local SE moments now include the per-observation case weights. - Fixed global fits with all-zero custom weights to honor the configured zero-weight fallback policy. - Fixed fraction-1 global fits ignoring configured robustness iterations; they now reweight observations and report iterations used. - Fixed Batch cross-validation candidate fits ignoring custom_weights; K-fold CV now rejects more folds than observations instead of returning zero scores. - Fixed Streaming and Online accepting invalid auto_converge tolerances; Online also rejects invalid explicit delta values while retaining NaN as its default sentinel. - Fixed GPU Batch fits misaligning fitted values with unsorted inputs; results now preserve input and requested sorted order. - Fixed GPU Batch silently ignoring custom_weights; GPU fit and CV candidate kernels now apply them directly. - Reduced GPU adapter buffer requirements from 30 storage/32 total buffer bindings to 7 storage/8 total per shader stage by using per-compute-pipeline resource layouts. - Fixed Online incremental mode accepting positive delta and auto_converge settings it cannot use; unsupported combinations now error. - Fixed grouped intervals discarding distinct confidence and prediction levels; each requested coverage is now applied independently. - Fixed the default boundary_policy ("extend") letting synthetic boundary points bias the shared robustness scale estimate used to reweight every point, compounding across robustness iterations. - Improved agreement with R/Cleveland on sparse, asymmetric, and high-iteration fits by aligning robustness stopping, local-linear degeneracy handling, neighborhood traversal, delta interpolation, and weighted accumulation. - Fixed zero-radius neighborhoods dropping tied observations or accumulating normalized weights in a different order under robust fits. - Fixed Gaussian fits clipping the unbounded kernel to the neighbor window and flooring far-tail weights; all observations now contribute under the standard Gaussian formula. - Reject fractional integer/count options and validate GPU candidate libraries and supported prebuilt targets; refuse in-place overwrite when atomic replacement fails. Changes in version 4.1.0 Added - Added retain_model and predict.Lowess() for out-of-sample prediction. - Added return_derivative to Lowess(), StreamingLowess(), and OnlineLowess(). - Added standard errors and confidence/prediction intervals to StreamingLowess() and OnlineLowess(); online intervals require update_mode = "full". Fixed - Changed the OnlineLowess() default iterations from 3 to 0, matching non-robust incremental updates; robustness iterations require update_mode = "full". Changes in version 4.0.0 Added - Added return_sorted to Lowess(). - Added a missing option to Lowess(), StreamingLowess(), and OnlineLowess() for non-finite inputs. - Added support for installing a locally built GPU artifact with install_gpu(). Changed - Breaking change: removed return_diagnostics, return_residuals, and parallel from the OnlineLowess() constructor; these options had no effect in online mode. - Breaking change: removed confidence_intervals and prediction_intervals from OnlineLowess() and StreamingLowess() constructors because those options were not computed. - Breaking change: the streaming overlap default now resolves dynamically to chunk_size / 10, clamped to [1, chunk_size - 10], instead of a fixed 500. - Improved the R API documentation, including the overlap default. Fixed - Fixed the real-time vignette example failing with two data points by aligning its minimum point count with the library's minimum of two. - Fixed install_gpu() replacing a loaded shared library in place; it now installs through a temporary file and atomic rename. Changes in version 3.2.1 Changed - Clarified that results are returned in input order, even though the algorithm sorts internally. Changes in version 3.2.0 Changed - Expanded and reorganized the R documentation with parameter guidance, examples, and clearer adapter-selection advice. Fixed - Corrected the OnlineLowess() defaults to min_points = 2L and update_mode = "incremental". - Corrected the Handling Outliers example to use a fraction that downweights the injected outlier. - Improved the Online, streaming, merge, robustness, and use-case examples so they show representative output and run successfully. Changes in version 3.1.0 Changed - Moved R documentation to GitHub Pages using pkgdown and updated the README with package-specific guidance. - Lowered the minimum supported R version to 4.4.0. Fixed - Fixed extra positional arguments being accepted outside the initial positional argument; constructors now reject unnamed arguments in later positions. Changes in version 3.0.0 Added - Added an opt-in GPU backend through the gpu Cargo feature and install_gpu() to download a prebuilt GPU library; using it requires restarting R. - Added S3 generics fit(), process_chunk(), finalize(), and add_point(), replacing the previous list-closure API. - Added cross-reference links in the API documentation to the corresponding user guides. Changed - Breaking change: renamed the smoothed and std_error fields returned by OnlineLowess()$add_point() to y and standard_error. - Breaking change: added ... to Lowess(), StreamingLowess(), and OnlineLowess() so optional arguments must be named. - Set the minimum supported R version to 4.6. - Organized Streaming and Online API documentation and tutorials into dedicated user-guide pages. Changes in version 2.0.0 Added - Added custom_weights to batch fitting for non-negative per-observation weights. Changed - Breaking change: replaced vector-based OnlineLowess()$add_points(x, y) with scalar add_point(x, y), which processes one point at a time and returns NULL until enough points are available. Changes in version 1.3.0 Fixed - Registered the extendr panic hook so Rust panics are reported as R errors instead of crashing the R session. Changes in version 1.2.0 Added - Added print() and plot() examples for LowessResult objects. Changes in version 1.1.2 - Under-the-hood maintenance; no changes to the public API or runtime behavior. Changes in version 1.1.1 Fixed - Fixed GPU configuration and initialization problems, and improved recovery after missing hardware/drivers or earlier GPU execution errors. Changes in version 1.1.0 Added - Expanded GPU fitting support to selectable kernels, robustness and scaling methods, boundary policies, automatic convergence, prediction, and cross-validation. Fixed - Fixed the Extend boundary policy not being applied and improved numerical precision through coordinate centering. - Fixed GPU integer overflow, initialization failures, and resource exhaustion. Changes in version 1.0.0 Added - Added the mean scaling method (Mean Absolute Deviation). - Added print() and plot() methods for LowessResult objects. Changed - Breaking change: returned LowessResult S3 objects instead of raw vectors. Changes in version 0.99.9 Added - Made the package available on conda-forge as r-rfastlowess. Changed - Introduced class-based builders for streaming and online processing. Changes in version 0.99.8 - Under-the-hood maintenance; no changes to the public API or runtime behavior. Changes in version 0.99.7 Fixed - Fixed links in the shared project README. Changes in version 0.99.6 Fixed - Fixed formatting and links in the shared project README. Changes in version 0.99.5 Changed - Reduced the published package size by excluding development-only files. Changes in version 0.99.2 Added - Added a pkgdown documentation site and examples for exported functions. - Added input validation for exported functions. Changed - Breaking change: renamed exported functions to avoid conflicts with base R. Fixed - Fixed package startup messages. Changes in version 0.99.1 Changed - Prepared the R package for Bioconductor submission. Changes in version 0.99.0 Added - Added NoBoundary boundary handling and MAD/MAR scaling methods from fastLowess v0.4.0. Changed - Changed the license from AGPL-3.0-or-later to dual MIT OR Apache-2.0. Changes in version 0.7.0 Added - Added NoBoundary handling and MAD/MAR scaling methods to the underlying LOWESS core. Changed - Improved fitting and cross-validation performance through SIMD accumulation, reusable buffers, and optimized window and scale calculations. Changes in version 0.6.0 Added - Added a seed option for reproducible k-fold cross-validation. Fixed - Fixed Batch and Streaming adapter conversion behavior in the LOWESS core. Changes in version 0.5.3 Changed - Improved fitting and cross-validation performance by optimizing sorting, window operations, robust scale estimation, regression, and delta interpolation. Changes in version 0.4.0 Added - Added support for fastLowess v0.4.0 fitting and cross-validation improvements. Changed - Changed the license from AGPL-3.0-or-later to dual MIT OR Apache-2.0. Changes in version 0.3.0 Added - Added installation from R-universe without requiring Rust. Changed - Updated the cross-validation API for fastLowess v0.3.0. Changes in version 0.2.0 Added - Added support for fastLowess v0.2.0 fitting improvements. Changes in version 0.1.0 Added - Initial R binding for fastLowess.