Back to Xgboost

3.3.0 (2026 Jun 17)

doc/changes/v3.3.0.rst

3.3.06.5 KB
Original Source

################### 3.3.0 (2026 Jun 17) ###################

XGBoost 3.3 adds expectile regression, enables categorical feature support by default, expands SHAP support for vector-leaf models, and includes optimizations for histogram building, quantile sketching, and distributed GPU training.


SHAP Support


  • Change the TreeSHAP implementation for improved numerical stability and faster execution with QuadratureTreeSHAP (:pr:12179, :pr:12192, :pr:12207)
  • Add exact SHAP contribution and interaction prediction for vector-leaf multi-output trees on both CPU and GPU. (:pr:12209, :pr:12210, :pr:12247, :pr:11985, :pr:12208)

Quantile Sketching and Distributed Training


The quantile sketching went through some major refactoring and optimizations. XGBoost 3.3.0 simplifies quantile sketch internals and improves the weighted quantile sketch implementation (:pr:12033, :pr:12046, :pr:12048, :pr:12049, :pr:12054, :pr:12067, :pr:12074, :pr:12146, :pr:12148, :pr:12150, :pr:12151, :pr:12155, :pr:12167), with significantly reduced memory use in the GPU quantile sketch (:pr:12047, :pr:12079, :pr:12090, :pr:12099, :pr:12104, :pr:12105, :pr:12118, :pr:12147, :pr:12159, :pr:12160). Also, we have a more efficient distributed quantile construction using tree reductions. (:pr:12061, :pr:12128, :pr:12171)


Features


  • Add expectile regression with the reg:expectileerror objective, the expectile metric, and the expectile_alpha parameter. Multiple expectiles are supported. (:pr:11988, :pr:12228, :pr:12243)
  • Enable categorical feature support by default while keeping enable_categorical available for users who need to disable it. CPU hist also gained one-hot categorical split support for the working-in-progress vector leaf. (:pr:12015, :pr:12072, :pr:12244)
  • Deprecate the gblinear booster. Support will be removed in a future release. (:pr:12030)
  • Use a local RNG and serialize RNG state. Training multiple models with sampling within the same session is now reproducible. (:pr:12043, :pr:12083)

Optimizations


  • Optimize CPU histogram building for wide datasets with column block tiling and detect CPU cache sizes via Linux sysfs on aarch64. (:pr:12158, :pr:12233)
  • Use Philox for faster GPU sampling. (:pr:12223)
  • Support customizing worker port for distributed training. In addition, XGBoost now doesn't need all-to-all collective connections for improved scalability. (:pr:12010, :pr:12075, :pr:12171, :pr:12082)

Python Package


  • Bump the minimum supported Python version to 3.12. (:pr:12195)

  • Add PySpark support for Spark Connect ML. (:pr:11970)

  • Require Enum support from Polars and validate unique pandas column names. (:pr:12240, :pr:12199)

  • Fix the default verbose behavior mismatch between XGBClassifier.fit and XGBRegressor.fit. (:pr:12184)

  • Fix python -OO crashes caused by assigning to missing docstrings (:pr:12094)

  • Handle boolean indicator features in trees_to_dataframe. (:pr:12089)

  • Improve validation and error messages for feature information and deprecated functions. (:pr:12142, :pr:12200)

  • Clean up imports, type checking comments, and legacy compatibility guards. (:pr:12027, :pr:12110, :pr:12163)


JVM Packages


  • Document Spark 4.0 compatibility for JVM packages. (:pr:12136)
  • Support regressor and ranker pipelines with columnar input. (:pr:12058)
  • Add automatic module names for Java packages and support xgboost4j on FreeBSD. (:pr:12114, :pr:12222)

Build and Platform


  • Support Visual Studio 2026. (:pr:12245)
  • Update CUDA Toolkit support, including CUDA Toolkit 13.3 type updates and default architecture alignment for recent CUDA versions. (:pr:12230, :pr:12204)
  • Support latest RAPIDS. (:pr:12140, :pr:12013, :pr:12212, :pr:12144)
  • Fix CMake export targets and builds with system-installed dmlc-core. (:pr:12238, :pr:12123)
  • Fix macOS build and packaging issues. (:pr:12187, :pr:12108)
  • Improve Linux packaging with versioned shared object. (:pr:12055)

Fixes


  • Fix out-of-vocabulary categorical encoding and categorical splits with vector-leaf models. (:pr:12193, :pr:12244)
  • Fix SYCL multiclass objective calculation. (:pr:12041)
  • Fix in-place prune aliasing and assorted prediction/documentation typos. (:pr:12202, :pr:12076, :pr:12070, :pr:12003)

Documents


  • Add TreeSHAP references, distributed XGBoost on Kubernetes documentation, and updates to competition-winning solution examples. (:pr:12207, :pr:12080, :pr:12087, :pr:12109)
  • Add notes for pickling, expectile margin output, Spark 4.0 compatibility. (:pr:12042, :pr:12243, :pr:12136, :pr:12247)
  • Update LightGBM links, the security disclosure, the xgboost-cpu package note, and the Read the Docs canonical URL. (:pr:12084, :pr:12113, :pr:12169, :pr:12246)

CI and Maintenance


  • Unify CI configure workflows, document the clang-tidy flow, and keep CI images and dependency pins up to date. (:pr:12170, :pr:12175, :pr:12165)
  • Keep GitHub Actions dependency groups and release bookkeeping up to date. (:pr:12005, :pr:12029, :pr:12034, :pr:12038, :pr:12057, :pr:12095, :pr:12124, :pr:12134, :pr:12145, :pr:12161, :pr:12178, :pr:12188, :pr:12206, :pr:12231, :pr:12249)
  • Update CI jobs for cibuildwheel, CRAN, R CI, and documentation tests. (:pr:12066, :pr:12125, :pr:12173, :pr:12216)
  • Continue test cleanup and refactoring across quantile sketching, PySpark, global configuration. (:pr:12002, :pr:12007, :pr:12009, :pr:12019, :pr:12141, :pr:12164, :pr:12180, :pr:12190)
  • Continue cleanup of prediction and DART internals, including moving DART state into GBTree and unifying DART SHAP forwarding. (:pr:12068, :pr:12071, :pr:12073, :pr:12078, :pr:12081, :pr:12022)
  • Always save DART configuration. (:pr:12098)
  • Improved support for using clang-tidy with CUDA code. (:pr:12165, :pr:12174)
  • Various small cleanups. (:pr:12053, :pr:12092)
  • Improve CUDA resource handling and diagnostics, small cleanups for external memory. (:pr:12092, :pr:12127, :pr:12185, :pr:12191, :pr:12137, :pr:12069)