ITADN
microsoft/LightGBM

版本发布 8

v4.6.0
? · 2025-02-15

## Changes ## 💡 New Features - [CUDA] fix setting of CUDA architectures and enable support for NVIDIA Blackwell @StrikerRUS (#6812) - [python-package] support Python 3.13 @jameslamb (#6668) - [GPU] Add support for linear tree with device=gpu @dragonbra (#6567) - [c++] Add Bagging by Query for Lambdarank @shiyu1994 (#6623) ## 🔨 Breaking - [R-package] require lgb.Dataset, remove support for passing 'colnames' and 'categorical_feature' for lgb.train() and lgb.cv() @jameslamb (#6714) - [python-package] support sub-classing scikit-learn estimators @jameslamb (#6783) - [python-package] do not copy column-major numpy arrays when creating Dataset from list of arrays @jmoralez (#6773) - [python-package] remove support for passing 'feature_name' and 'categorical_feature' through train() and cv() @jameslamb (#6706) - [python-package] require `scikit-learn>=0.24.2`, make scikit-learn estimators compatible with `scikit-learn>=1.6.0dev` @vnherdeiro (#6651) - [ci] Require CMake 3.28 and replace `FetchContent_Populate` with `FetchContent_MakeAvailable` @StrikerRUS (#6550) ## 🚀 Efficiency Improvement - [python-package] do not copy column-major numpy arrays when predicting @jmoralez (#6751) - [python-package] do not copy column-major numpy arrays when creating Dataset @jmoralez (#6721) ## 🐛 Bug Fixes - [python-package] Separately check whether `pyarrow` and `cffi` are installed @mlondschien (#6785) - [c++] Fixed Predictor lifecycle and trees initialization in Contrib mode @AndreyOrb (#6778) - [python-package] Infer feature names from `pyarrow.Table` @mlondschien (#6781) - [python-package] Fix inconsistency in `predict()` output shape for 1-tree models @RektPunk (#6753) - [fix] resolve potential attack in linker connection building @shiyu1994 (#6752) - [R-package] Avoid bashisms (non-POSIX code) in R-package/configure @smoser (#6746) - [c++] fix parallel_tree_learner_split_info @moming39 (#6738) - [c++] Fix `dump_model()` information for root node @neNasko1 (#6569) - [cmake] [R-package] include R-for-macOS vendored libs dir in OpenMP search path (fixes #6628) @jameslamb (#6629) - [R-package] only warn about early stopping and DART boosting being incompatible if early stopping was requested @serkor1 (#6619) - [cmake] fixes static build for macos with OpenMP enabled (fixes #6601) @Mottl (#6600) ## 📖 Documentation - [docs] update installation guide @StrikerRUS (#6696) - [docs] add note about pyodide support @jameslamb (#6715) - [docs] Remove only cpu note due to gpu support for linear trees @JAroyan (#6686) - [docs] fix inaccurate comment for `force_col_wise` param with CUDA version @StrikerRUS (#6695) - [docs] group logically external projects in README and add some new libraries @StrikerRUS (#6691) - [docs] use consistent naming for R-package and Python-package across the repo @StrikerRUS (#6655) - [docs] add supertree in README @pplonski (#6625) - [docs] unify language and make small improvements in some param descriptions @StrikerRUS (#6618) - [doc] Updates Rust bindings library link in README.md @Mottl (#6611) - [R-package] [docs] update cran-comments for v4.5.0 release @jameslamb (#6578) - [docs] add conda version badge @StrikerRUS (#6576) ## 🧰 Maintenance - release v4.6.0 @jameslamb (#6796) - [c++] update to fmt 11.1.2, fast_double_parser 0.8.0 @jameslamb (#6802) - [ci] fix valgrind workflow @jameslamb (#6816) - [ci] validate pyproject file by json schema @StrikerRUS (#6813) - [ci] [python-package] update pre-commit hooks to latest versions @jameslamb (#6817) - [ci]: Bump release-drafter/release-drafter from 6.0.0 to 6.1.0 in the ci-dependencies group @[dependabot[bot]](https://github.com/apps/dependabot) (#6810) - [ci] fix errors about line length in yaml files (Part 4) @StrikerRUS (#6804) - [ci] remove pandas before testing that LightGBM can be imported without extra deps @StrikerRUS (#6801) - [ci] fix errors about comments indentation in yaml files (Part 3) @StrikerRUS (#6794) - [ci] fix errors about indentation in yaml files (Part 2) @StrikerRUS (#6789) - [ci] [python-package] build macOS x86_64 wheels on macOS 13 (Ventura) @jameslamb (#6669) - [ci] add yaml files linter to pre-commit hook but skip some rules for now (Part 1) @StrikerRUS (#6763) - [ci] lock inactive issues and PRs at different time @StrikerRUS (#6764) - [ci][python-package] add testing for the shape of raw score predictions @StrikerRUS (#6765) - [ci] pin more dependencies in Python 3.8 environment @jameslamb (#6771) - [CUDA] remove src/treelearner/kernels @shiyu1994 (#6766) - [python-package] stop relying on string concatenation / splitting for cv() eval results @jameslamb (#6761) - [ci] Add Release Drafter workflow @StrikerRUS (#6754) - [python-package] Rename `cvfolds` variable into `cvbooster` in `engine.cv` function @ClaudioSalvatoreArcidiacono (#6762) - [python-package] simplify eval result printing @jameslamb (#6749) - [ci] fix linkchecker job @jameslamb (#6757) - [ci] remove Docker volumes during Azure cleanup @StrikerRUS (#6760) - [ci] use Ruff linter instead of isort @StrikerRUS (#6755) - [ci] set upper bound on dask @jmoralez (#6742) - [c++] include <cstdint> wherever uint8_t is used @jameslamb (#6736) - [python-package] simplify scikit-learn 1.6+ tags support @jameslamb (#6735) - [ci] Introduce `typos` pre-commit hook @borchero (#6564) - [ci] [python-package] [R-package] adapt to scikit-learn check_sample_weight_equivalence changes, stop testing against R 3.6 on Linux @jameslamb (#6733) - [python-package][R-package] adapt to scikit-learn 1.6 testing changes, pin more packages in R 3.6 CI jobs @jameslamb (#6718) - [ci] [R-package] re-enable 'rchk' checks @jameslamb (#6713) - [ci] check PowerShell scripts with PSScriptAnalyzer (part 3) @StrikerRUS (#6710) - [ci] check JavaScript code with `biome` tool @StrikerRUS (#6711) - [ci] check PowerShell scripts with PSScriptAnalyzer (part 2) @StrikerRUS (#6709) - [ci] check PowerShell scripts with PSScriptAnalyzer (part 1) @StrikerRUS (#6704) - [ci] [R-package] remove code for 'rchk' checks @jameslamb (#6545) - [ci] Fix version matching between RTD pages and R-package pages @StrikerRUS (#6673) - [python-package] remove MSVS solution files from sdist @jameslamb (#6698) - [ci] set `MinimumVisualStudioVersion` to MSVS 2015 @StrikerRUS (#6689) - [ci] fix build of LightGBM with MSVS GUI @StrikerRUS (#6690) - [cmake] group sanitizer options together @StrikerRUS (#6688) - [ci] add shellcheck, use latest pre-commit hook versions @jameslamb (#6685) - [ci] fix some shellcheck warnings in package-building scripts @vnherdeiro (#6641) - [python-package] deprecate support for H2O 'datatable' @jameslamb (#6670) - [ci] enable OpenMP support in cpp tests @StrikerRUS (#6676) - [python-package] ignore scikit-learn 'check_sample_weight_equivalence' estimator check (fixes #6678) @jameslamb (#6679) - [ci] fix shellcheck warnings in CI scripts @vnherdeiro (#6646) - [ci] Restore MPI jobs on macOS @StrikerRUS (#6664) - [ci] Update CUDA versions for CI @StrikerRUS (#6539) - [ci] replace uses of 'mamba' with 'conda', use Python 12 for test-python-latest-job @jameslamb (#6663) - [cmake] simplify SWIG config @StrikerRUS (#6648) - [ci] [R-package] re-enable R-devel clang16 job (fixes #6607) @jameslamb (#6642) - [cmake] remove unused variable @StrikerRUS (#6647) - [ci] [python-package] temporarily stop testing against scikit-learn nightlies, load lib_lightgbm earlier @jameslamb (#6654) - [ci] prevent C API tests from leaving files behind (fixes #6361) @jameslamb (#6637) - [python-package] limit when num_boost_round warnings are emitted (fixes #6324) @jameslamb (#6579) - [ci] prevent Python tests from leaving behind files @vnherdeiro (#6626) - fix some shellcheck warnings @vnherdeiro (#6621) - [ci] fix linux runners running out of disk space (fixed #6635) @jameslamb (#6636) - [python-package] remove setup.cfg @jameslamb (#6624) - [cmake] consolidate set_target_properties() calls @jameslamb (#6594) - [ci] prevent `train.binary.bin` and `lgb_train_data.bin` files being left behind after testing @bili2002 (#6606) - [ci] update some linting versions @jameslamb (#6598) - [ci] skip R-devel clang16 job and use gcc-12 for macOS Python jobs @jameslamb (#6608) - [python-package] update to scikit-build-core 0.10 @jameslamb (#6597) - [ci] restore nuget artifact creation @StrikerRUS (#6593) - [R-package] [cmake] simplify CMake-based R builds @jameslamb (#6591) - [cmake] stop using file(GLOB) @jameslamb (#6588) - [ci] prevent `categorical.model` and `model.txt` files being left behind after testing @neNasko1 (#6590) - [ci] Always use latest SWIG version in Windows CI job @StrikerRUS (#6541) - [ci] place all CI helpers under the .ci folder and use - instead of _ in their names @StrikerRUS (#6581) - [ci] fix MSVC warning about builds in temp directory @StrikerRUS (#6573) - bump development version to 4.5.0.99 @jameslamb (#6575) - [ci] ask pip to always install local artifact but not download package from PyPI @StrikerRUS (#6574)

v4.5.0
? · 2024-07-25

## Changes ## 💡 New Features - [python-package] Add `feature_names_in_` attribute for scikit-learn estimators (fixes #6279) @nicklamiller (#6310) - [R-package]: add num_trees_per_iter, num_trees, and num_iter methods @mayer79 (#6500) ## 🔨 Breaking - [c++] remove HDFS support (fixes #6436) @jameslamb (#6534) - [ci] [python-package] run macOS x86_64 tests on macOS 12 (Monterey), stop manually setting macOS wheel tags @jameslamb (#6487) ## 🚀 Efficiency Improvement - Avoid copy on Refit @cbourjau (#6478) ## 🐛 Bug Fixes - [python-package] Correctly recognize LGBMClassifier(num_class=2, objective="multiclass") as multiclass classification @RektPunk (#6524) - [cmake] Some improvements to handling of OpenMP on macOS @barracuda156 (#6489) - [python-package] respect 'verbose' setting when using custom objective function (fixes #6014) @jameslamb (#6428) - cmake: add missing lib_lightgbm_swig.so to lightgbmlib.jar on linux @shuttie (#6515) ## 📖 Documentation - [docs] update GitHub Actions badges in README @StrikerRUS (#6570) - [docs] Update badge for Link checks workflow @StrikerRUS (#6568) - [python-package] [docs] Expand class docs for Dataset @Plenitude-ai (#6558) - [docs] fix link to multiple OpenMP issue description @StrikerRUS (#6562) - [docs] Add NuGet version badge @StrikerRUS (#6549) - [docs] remove link to Roadmap (fixes #6556) @jameslamb (#6557) - [docs] remove outdated docs from the repo @StrikerRUS (#6552) - [docs] Add conda downloads badge @StrikerRUS (#6546) - [docs] update and simplify installation docs @jameslamb (#6536) - [doc] fix documentation for quantized training @shiyu1994 (#6528) - [docs] fix FAQ markdown @StrikerRUS (#6521) - [docs] [R-package] update cran-comments.md @jameslamb (#6499) - [docs] remove pmml redirect, simplify some other docs @jameslamb (#6490) ## 🧰 Maintenance - release v4.5.0 @jameslamb (#6538) - [ci] modify CodeQL settings @jameslamb (#6563) - [ci] revert clang-18 LD_LIBRARY_PATH workaround @jameslamb (#6559) - [ci] [R-package] help linker find libstdc++.so.1 in clang18 job (fixes #6553) @jameslamb (#6554) - [ci] update codeowners @jameslamb (#6542) - [ci] [R-package] use --no-xattrs when re-tarring CRAN-style package @jameslamb (#6540) - [ci] [R-package] add CI jobs covering more CRAN "additional checks", fix R_NO_REMAP warnings (fixes #6369) @jameslamb (#6523) - [ci] [R-package] add arm64 macOS R-package CI job (fixes #6481) @jameslamb (#6494) - [ci] restore aarch64 linux builds (fixes #6509) @jameslamb (#6527) - [test][python] fix pandas DeprecationWarning about `is_sparse` function @StrikerRUS (#6532) - fix cpp casting errors "Comparison of narrow type with wide type in loop condition" @StrikerRUS (#6533) - [python-package] avoid overwriting dependencies via 'build-python.sh install' @jameslamb (#6526) - [tests][python] fix nan in pandas bool column @StrikerRUS (#6530) - Remove template parameters from copy constructor @hgminh95 (#6514) - [ci] prevent `lgb.model` and `lgb.pkl` files being left behind after testing @nicklamiller (#6518) - [ci] [R-package] run 'R CMD check' as a foreground task @jameslamb (#6508) - [CMake] Use CMAKE_MSVC_RUNTIME_LIBRARY to apply /MT @hcho3 (#6484) - [ci] resolve shellcheck errors in .ci/check_python_dists.sh @Kunal-Singh-Dadhwal (#6503) - [ci] skip aarch64 linux job @jameslamb (#6517) - [R-package] Use `Rf_`-prefixed versions of protect/unprotect @david-cortes (#6502) - [ci] reduce repetition of BUILD_DIRECTORY in CI scripts @jameslamb (#6497) - [ci] remove OpenMP / MKL workaround in CI jobs @jameslamb (#6496) - [ci] [docs] fix link-checks job @jameslamb (#6495) - [python-package] Change build settings to set strict-config to false @Jorricks (#6493) - [ci] remove unnecessary package installations in CI @jameslamb (#6488) - chore: update dataset_loader.cpp @eltociear (#6483) - bump development version to 4.4.0.99 @jameslamb (#6485)

v4.4.0
? · 2024-06-15

## Changes ## 💡 New Features - [ci] [python-package] add arm64 macOS wheels @jameslamb (#6391) - [python-package] Add support for NumPy 2.0, test against nightly versions of dependencies (fixes #6454) @jameslamb (#6467) - [R-package] expose start_iteration to dump/save/lgb.model.dt.tree @mayer79 (#6398) - [python-package] Allow to pass early stopping min delta in params @borchero (#6274) - [python-package] Allow to pass Arrow table with boolean columns to dataset @borchero (#6353) - [c++][fix] Support Quantized Training with Categorical Features on CPU @shiyu1994 (#6301) ## 🔨 Breaking - [python-package] remove uses of deprecated NumPy random number generation APIs, require 'numpy>=1.17.0' @jameslamb (#6468) - [python-package] drop Python 3.6 support, add Python 3.12 @jameslamb (#6459) - [cmake] [c++] use .dylib extension unconditionally on macOS @jameslamb (#6418) - ENH more stable gradient of CrossEntropy @lorentzenchr (#6327) - [R-package] Rename `slice()` to `lgb.slice.Dataset()` @david-cortes (#6293) ## 🚀 Efficiency Improvement - [R-package] Use ALTREP system to return C++-allocated arrays @david-cortes (#6213) - [R-package] Speed-up lgb.importance() @mayer79 (#6364) - Fix single row prediction performance in a multi-threaded environment @Ten0 (#6024) ## 🐛 Bug Fixes - [R-package] ensure use of interaction_constraints does not lead to features being ignored @mayer79 (#6377) - [R-package] skip integer categorical feature check when building dataset subset (fixes #6412) @jmoralez (#6442) - [cmake] always target Windows SDK v10.x when using Visual Studio generators (fixes #6448) @jameslamb (#6451) - upgrade CMake in dockerfile-cli (fixes #6420) @narumiruna (#6426) - remove unnecessary omp single that cause deadlock (fixes #6273) @morokosi (#6394) - [python-package] allow use of early_stopping_round<=0 to turn off early stopping (fixes #6401) @ddelzell (#6406) - [c++] Fix memory leak in Arrow table implementation @borchero (#6314) - Fix calculation of number of bins in FindGroup @CVPaul (#6019) ## 📖 Documentation - [docs] ensure pkgdown site index accurately reflects R-package public API (fixes #6444) @jameslamb (#6445) - [docs] document how to use a custom objective function via the C API @parsiad (#6396) - [docs] [ci] encourage use of `cmake --build` @jameslamb (#6368) - [docs] remove language about CUDA version being experimental (fixes #6340) @jameslamb (#6371) ## 🧰 Maintenance - release v4.4.0 @jameslamb (#6439) - [python-package] add a few type hints in LGBMModel.fit() @jameslamb (#6470) - [python-package] clarify max_depth warning and limit when it is emitted @jameslamb (#6402) - [ci] upgrade linters to latest version @jameslamb (#6472) - [ci] [R-package] add new linters from {lintr} 3.1.1 @jameslamb (#6471) - [python-package] make LGBMDeprecationWarning inherit from FutureWarning @jameslamb (#6447) - [ci] further simplify CI configurations @jameslamb (#6463) - [ci] fix CUDA 11.8 builds (fixes #6466) @jameslamb (#6465) - [ci] simplify CI configurations, parallelize compilation, test CUDA on Ubuntu 22.04 @jameslamb (#6458) - [ci]: Bump actions/checkout from 1 to 4 in the ci-dependencies group @dependabot (#6453) - [cmake] switch to FindCUDAToolkit @characat0 (#6457) - [R-package] [python-package] deprecate Dataset arguments to cv() and train() @jameslamb (#6446) - [ci] Add dependabot configuration @borchero (#6449) - [python-package] upgrade to scikit-build-core 0.9.3 @jameslamb (#6263) - deprecate HDFS support @jameslamb (#6443) - [c++] remove uses of '..' in headers @jameslamb (#6409) - [R-package] always name the shared library 'lightgbm', not 'lib_lightgbm' @jameslamb (#6432) - [R-package] [ci] Manually install 'Matrix' (fixes #6433) @jameslamb (#6434) - [ci] Skip Arrow tests on AppVeyor, use Intel macOS runners, upgrade to XCode 14.3 on macOS jobs, disable MacOS MPI jobs @borchero (#6425) - [ci] raise floors on CI dependencies @jameslamb (#6375) - [ci] make shell scripts stricter @jameslamb (#6266) - [python-package] prevent build-python.sh from modifying already-installed dependencies @jameslamb (#6403) - [ci] reduce hard-coding of host architecture @jameslamb (#6395) - [c++] remove unused variable 'need_connect_cnt' @jameslamb (#6410) - [ci] clean source directory at the beginning of every Azure DevOps build @jameslamb (#6416) - [ci] Fix Azure Pipeline Agents @shiyu1994 (#6407) - [ci] [R-package] re-enable r-sanitizers jobs (fixes #6367) @jameslamb (#6374) - [ci] prevent trailing whitespace, ensure files end with newline @jameslamb (#6373) - [ci] [docs] update some docs and CI dependencies @jameslamb (#6346) - [ci] [python-package] remove unused flake8 configuration @jameslamb (#6372) - [ci] put ceiling on graphviz in Python 3.7 jobs @jameslamb (#6370) - [ci] Fix R 3.6 tests, dask tests, compatibility with dask>=2024.3.1 @borchero (#6357) - [ci] [python-package] check for untyped definitions with mypy @jameslamb (#6339) - [ci] ignore ruff-format changes in git blame (fixes #6304) @jameslamb (#6345) - [c++] remove unnecessary include in CLI @jameslamb (#6342) - [ci] [python-package] enable ruff-format on all Python code @jameslamb (#6336) - [python-package] remove unused type alias @jameslamb (#6341) - [ci] [python-package] enforce 'pylint' checks (fixes #4308) @jameslamb (#6334) - [ci] [python-package] enable ruff-format on tests and examples @jameslamb (#6317) - [python-package] fix mypy error about pyarrow data @jameslamb (#6333) - [ci] remove unnecessary workarounds in R-package macOS jobs @jameslamb (#6331) - [ci] remove workflow_dispatch from no-response configuration @jameslamb (#6330) - [ci] fix no-response permissions @jameslamb (#6323) - [ci] enable ruff-format on some files, add pre-commit config @jameslamb (#6308) - [ci] ensure shell script exit codes are in range 0-255 @jameslamb (#6305) - [ci] fix installation of clang-18 (fixes #6306) @jameslamb (#6307) - [ci] [R-package] pin to older setup-pandoc for R 3.6 jobs (fixes #6298) @jameslamb (#6299) - bump development version to 4.3.0.99 @jameslamb (#6287)

v4.3.0
? · 2024-01-26

## Changes ## 💡 New Features - [CUDA] Add arch=8.9 to CUDA_ARCHS for RTX 40XX @DmitryUlyanov (#6272) ## 🔨 Breaking - [cmake] [c++] require CMake 3.18+ @jameslamb (#6260) - [R-package] remove readRDS.lgb.Booster() and saveRDS.lgb.Booster() @jameslamb (#6246) ## 🚀 Efficiency Improvement - [R-package] Remove non-beneficial parallelization @david-cortes (#6209) ## 🐛 Bug Fixes - [R-package] [ci] remove unnecessary include in linear_tree_learner (fixes #6264) @jameslamb (#6265) - [cmake] [CUDA] ignore CUDA-specific source files in non-CUDA builds (fixes #6267) @sabjohnso (#6268) - [c++] include OpenMP-control files in MSBuild solution file (fixes #6238) @jameslamb (#6251) - [cmake] [swig] use CMake's built-in file-copying mechanisms instead of 'cp' @jameslamb (#6259) ## 📖 Documentation - [docs] Add LightGBMLSS to README @StatMixedML (#6254) - [ci] [docs] add Oliver to CODEOWNERS @jameslamb (#6247) - Fix small typo and grammar in docs @arunstar (#6245) ## 🧰 Maintenance - [ci] fix conda env creation in 'regular' CI job (fixes #6282) @jameslamb (#6283) - [R-package] [ci] switch vignettes from 'rmarkdown' to 'markdown' @jameslamb (#6258) - [python-package] fix mypy error about pandas categorical features @jameslamb (#6253) - [ci] update issue-locking workflow @jameslamb (#6256) - [ci] upgrade to GoogleTest v1.14.0 (fixes #5976) @jameslamb (#5981) - [ci] [R-package] speed up valgrind job @jameslamb (#6237) - bump development version to 4.2.0.99 @jameslamb (#6241)

v4.2.0
? · 2023-12-21

✨ v4.2.0 of the R package is now available on CRAN ([link](https://cran.r-project.org/web/packages/lightgbm/index.html)), the first major release of the R package in 2+ years. ✨ The Python package now accepts Apache Arrow Tables and Arrays (thanks @borchero!) 🔧 A critical bug in quantized training support is fixed ## Changes ## 💡 New Features - [python-package] Allow to pass Arrow table for prediction @borchero (#6168) - [python-package] Allow to pass Arrow table and array as init scores @borchero (#6167) - [python-package] Allow to pass Arrow array as groups @borchero (#6166) - [python-package] Allow to pass Arrow array as weights @borchero (#6164) - [python-package] Accept numpy generators as `random_state` @david-cortes (#6174) - [python-package] Allow to pass Arrow array as labels @borchero (#6163) - [python-package] Allow to pass Arrow table as training data @borchero (#6034) ## 🔨 Breaking - [python-package] fix access to Dataset metadata in scikit-learn custom metrics and objectives @jameslamb (#6108) - [CUDA] drop CUDA 10 support, start supporting CUDA 12 (fixes #5789) @jameslamb (#6099) ## 🚀 Efficiency Improvement - [R-package] Fix inefficiency in retrieving pointers @david-cortes (#6208) - [CUDA] CUDA Quantized Training (fixes #5606) @shiyu1994 (#5933) ## 🐛 Bug Fixes - fix errors from MSVC '/permissive-' mode (fixes #6230) @Zhaojun-Liu (#6232) - [R-package] [c++] add tighter multithreading control, avoid global OpenMP side effects (fixes #4705, fixes #5102) @jameslamb (#6226) - [python-package] take shallow copy of dataframe in predict (fixes #6195) @jmoralez (#6218) - Fix null handling for Arrow data @borchero (#6227) - [R-package] use safer pattern for error formatting (fixes #6212) @jameslamb (#6216) - [python-package] fix libpath.py @shiyu1994 (#6192) - set explicit number of threads in every OpenMP `parallel` region @jameslamb (#6135) - ignore unknown parameters when loading from model file @jmoralez (#6126) - [python-package] [R-package] include more params in model text representation (fixes #6010) @jameslamb (#6077) - [fix] fix quantized training (fixes #5982) (fixes #5994) @shiyu1994 (#6092) - [python-package] Fix misdetected objective after multiple calls to `LGBMClassifier.fit` @david-cortes (#6002) ## 📖 Documentation - [docs] remove links to Laurae++ site @jameslamb (#6193) - [docs] reduce redirects in docs links @jameslamb (#6181) - [docs] fix broken links @jameslamb (#6161) ## 🧰 Maintenance - release v4.2.0 @jameslamb (#6191) - [ci] [R-package] allow more possibly-lost warnings from valgrind @jameslamb (#6233) - [ci] Upgrade Azure VMSS to use Mariner Linux @shiyu1994 (#6222) - Add msvc conformance check @Zhaojun-Liu (#6234) - [python-package] Add tests for passing Arrow arrays with empty chunks @borchero (#6210) - [R-package] change CRAN maintainer @jameslamb (#6224) - [CUDA] fix typo in error message @jameslamb (#6207) - [python-package] ignore mypy errors related to ctypes string buffers @jameslamb (#6198) - [python-package] consolidate pandas-to-numpy conversion code @jameslamb (#6156) - [R-package] standardize naming of internal functions @jameslamb (#6179) - [R-package] remove unreachable code @jameslamb (#6180) - allow new files in include/LightGBM @jameslamb (#6177) - [R-package] Use `cat()` instead of `print()` for metrics and callbacks @david-cortes (#6171) - [ci] resolve warning in tests @jameslamb (#6154) - [ci] use `mamba` instead of `conda` in macOS and Linux CI jobs @borchero (#6140) - factor out uses of omp_get_num_threads() and omp_get_max_threads() outside of OpenMP wrapper @jameslamb (#6133) - remove unnecessary allocations in HistogramSumReducer @jameslamb (#6132) - [ci] [R-package] enforce more {lintr} checks @jameslamb (#6130) - fix compiler warnings for CPP tests @jameslamb (#6124) - [ci] [R-package] test against R 4.3 on Windows @jameslamb (#6061) - [python-package] reorganize early stopping callback @jameslamb (#6114) - [python-package] simplify Dataset._compare_params_for_warning() @jameslamb (#6120) - [ci] fix sh-compatibility issue in build-cran-package.sh @jameslamb (#6118) - [python-package] remove unnecessary allocations in ctypes code @jameslamb (#6111) - [python-package] fix mypy errors in Dataset construction @jameslamb (#6106) - [ci] ensure correct R version is used on GitHub Actions (fixes #5640) @jameslamb (#6107) - [python-package] fix mypy error about eval result tuples @jameslamb (#6105) - [python-package] fix mypy error from Dataset.pandas_categorical @jameslamb (#6098) - [ci] Fix typo in dependencies @borchero (#6100) - [python-package] fix mypy errors related to eval result parsing in callbacks @jameslamb (#6096) - [python-package] mark EarlyStopException as part of public API @jameslamb (#6095) - [python-package] fix mypy errors related to eval result tuples @jameslamb (#6097) - update to fmt 10.1.1, fast_double_parser 0.7.0 @jameslamb (#6074)

v4.1.0
? · 2023-09-12

## Changes ## 💡 New Features - Treat position bias via GAM in LambdaMART @metpavel (#5929) ## 🐛 Bug Fixes - Fix updates in random forest model using GOSS data sample strategy @mjmckp (#6017) - [R-package] Fix misdetected objective when passing `lgb.Dataset` instance to `lightgbm()` @david-cortes (#6005) - [python-package] make it possible to build wheels without internet connection (fixes #5979) @jameslamb (#6042) - fix percentile computation for regression objectives @zachary62 (#5848) - [CUDA] Set GPU device ID in threads @shiyu1994 (#6028) - [R-package] Fix error when passing categorical features to lightgbm() (fixes #6000) @david-cortes (#6003) - [R-package] limit number of threads used in tests and examples (fixes #5987) @jameslamb (#5988) ## 📖 Documentation - [python-package] [docs] Update key format of eval_hist in docstring example @Alnusjaponica (#5980) - [docs] add vaex-ml to list of external repositories @jameslamb (#6085) - [ci] [docs] fix broken ACM links @jameslamb (#6083) - [docs] Fix typo in README @kyleengel (#6071) - [docs] fix broken links @jameslamb (#6059) - Fix Python Dockerfile @GyuminJack (#5984) ## 🧰 Maintenance - Release v4.1.0 @jameslamb (#6076) - Remove superfluous todo from gitignore @borchero (#6081) - [python-package] simplify processing of pandas data @jameslamb (#6066) - [ci] [R-package] test against R 4.3 on Linux and macOS @jameslamb (#6075) - reduce verbosity of some log messages @jameslamb (#6073) - [python-package] remove CVBooster._append() @jameslamb (#6057) - [python-package] use dataclass for CallbackEnv @jameslamb (#6048) - [ci] [python-package] add more linting checks @jameslamb (#6049) - [ci] prevent lock-threads from locking issues with label 'feature request' @jameslamb (#6047) - [ci] add bot to lock inactive issues and PRs @jameslamb (#6037) - [ci] fix GPG key download for R Linux jobs (fixes #6038) @jameslamb (#6039) - [ci] enforce dask version to be >=2023.5.0 in some builds (fixes #6030) @shiyu1994 (#6032) - [ci] [R-package] use {lintr} 3.1 @jameslamb (#5997) - [python-package] replace np.find_common_type with np.result_type @jmoralez (#5999) - [ci] simplify CODEOWNERS @jameslamb (#5998) - [R-package] consolidate testing constants in helpers file @jameslamb (#5992) - [R-package] remove unused internal variables @jameslamb (#5991) - [ci] use newer h5py in AppVeyor jobs (fixes #5995) @jameslamb (#5996) - [python-package] make _InnerPredictor construction stricter @jameslamb (#5961)

v4.0.0
? · 2023-07-13

## Changes This release contains all previously-unreleased changes since `v3.3.1` over 1.5 years ago ([link](https://github.com/microsoft/LightGBM/releases/tag/v3.3.1)). Summary of improvements: * totally-rewritten CUDA implementation, and more operations in the CUDA implementation performed on the GPU * quantized training can be used for greatly improved training speeds on CPU ([paper link](https://arxiv.org/abs/2207.09682)) * support for C++17 * Python package: - now uses `scikit-build-core` ([link](https://github.com/scikit-build/scikit-build-core)) as its build backend - `manylinux_2_28` Linux wheels now support GPU (OpenCL-based, not CUDA) build automatically... just `pip install lightgbm` then pass `{"device": "gpu"}` in params (thanks @jgiannuzzi!) - much more use of inline type hints, exported with `py.typed` so any code using LightGBM can benefit - support for Python 3.10, 3.11 - support for `pandas` nullable types - configurable threshold (`lgb.early_stopping(..., min_delta=n)`) for how much eval metrics must improve to be considered "improved" for early stopping - custom objective functions in Dask - `scikit-learn` is no longer a required dependency - all callbacks are now pickleable (for better interoperability with e.g. `ray`, Dask) (thanks @Yard1!) * R package: - efficient support for more data types in prediction, like `dgCMatrix` and `dsparseMatrix` (thanks @david-cortes!) - much more idomatic interface... e.g. support for `saveRDS()` and `readRDS()` for `Booster`, `print()` and `summary()` methods for `Dataset` (thanks @david-cortes!) - various bug fixes related to multiple competing ways to provide parameters - support for R 4.2, 4.3 Summary of breaking changes: * Python package: - dropped most testing, promise of support for Python 3.6 (although it should still technically be installable) - dropped support for macOS Mojave (10.14) - made many functions and class attributes private, including significantly reducing what is pulled in by `from lightgbm import *` - removed `setup.py`, `pip install --install-optiion` supporrt - remove support for `pip install --install-option` (to work with newer `pip`, see https://github.com/pypa/pip/issues/11358) - see https://github.com/microsoft/LightGBM/blob/master/python-package/README.rst for new patterns - see https://github.com/pypa/pip/issues/11358 and #5061 for background - dropped support for installation with `MSBUild.exe` ... that now requires compiling `lib_lightgbm.dll` separately and then building a wheel that bundles it * R package: - dropped support for Solaris - removed most support for passing parameters through `...` - removed `lgb.unloader()` - switched to `predict(newdata, type = ...)` in `predict()`, for consistency with base R and most other machine learning projects ## 💡 New Features - [python-package] add 'pandas' extra @jameslamb (#5937) - [CUDA] Add more CUDA Regression Metrics @Xuweijia-buaa (#5924) - [python-package] adding max_category_values parameter to create_tree_digraph method (fixes #5687) @moziada (#5818) - [c++] support building with Ninja on Linux @jameslamb (#5910) - add CMakeLists options to disable building CLI, installing headers @jameslamb (#5880) - Add quantized training (CPU part) @shiyu1994 (#5800) - [CUDA] Add quantile regression objective for new CUDA version @shiyu1994 (#5605) - [CUDA] Add quantile metric for new CUDA version (contribute to #5163) @shiyu1994 (#5665) - [python-package] add Booster.set_leaf_output method @jmoralez (#5712) - feature: Add serialization of reference dataset @svotaw (#5427) - [R-package] Accept factor labels and use their levels @david-cortes (#5341) - [CUDA] Add binary logloss metric for new CUDA version @shiyu1994 (#5635) - [CUDA] Add binary logloss metric for new CUDA version @shiyu1994 (#5635) - Decouple Boosting Types (fixes #3128) @lyf-00 (#4827) - [CUDA] Add L2 metric for new CUDA version @shiyu1994 (#5633) - [CUDA] Add rmse metric for new CUDA version @shiyu1994 (#5611) - Build integrated OpenCL Linux wheels @jgiannuzzi (#5252) - [CUDA] Add Poisson regression objective for cuda_exp and refactor objective functions for cuda_exp @shiyu1994 (#5486) - [CUDA] Add multiclass_ova objective for cuda_exp @shiyu1994 (#5491) - [python-package] add install option to enable printing of time costs @Remy-Luciani (#5497) - [python-package][R-package] load parameters from model file (fixes #2613) @jmoralez (#5424) - [CUDA] Add multiclass objective for cuda_exp @shiyu1994 (#5473) - [CUDA] Add feature interaction constraint for cuda_exp (fix #4785) @shiyu1994 (#5474) - [CUDA] Add rank_xendcg objective for cuda_exp @shiyu1994 (#5472) - [CUDA] Add fair regression objective for cuda_exp @shiyu1994 (#5469) - [CUDA] Add lambdarank objective for cuda_exp @shiyu1994 (#5453) - [CUDA] Add Huber regression objective for cuda_exp @shiyu1994 (#5462) - [CUDA] Add L1 regression objective for cuda_exp @shiyu1994 (#5457) - [CUDA] L2 regression objective for cuda_exp @shiyu1994 (#5452) - [CUDA] Add binary objective for cuda_exp @shiyu1994 (#5425) - [R-package] Add remainder of prediction funtions @david-cortes (#5312) - [python-package] support saving and loading CVBooster (fixes #3556) @nyanp (#5160) - feature: Add true streaming APIs to reduce client-side memory usage @svotaw (#5299) - [python-package] highlight the path a sample takes through a tree in `plot_tree` and `create_tree_digraph` (fixes #4784) @jmoralez (#5119) - reproducible parameter alias resolution for wrappers (fixes #5304) @jmoralez (#5338) - [CUDA] Initial work for boosting and evaluation with CUDA @shiyu1994 (#5279) - [python-package] add validate_features argument to refit @jmoralez (#5331) - [python-package] check feature names in predict with dataframe (fixes #812) @jmoralez (#4909) - [R-package] Add sparse feature contribution predictions @david-cortes (#5108) - [python-package][R-package] allow using feature names when retrieving number of bins @jmoralez (#5116) - [R-package] Keep row names in output from `predict` @david-cortes (#4977) - [python] make `reset_parameter` callback pickleable @StrikerRUS (#5109) - [python] make `record_evaluation` callback pickleable @StrikerRUS (#5107) - [python] make `log_evaluation` callback pickleable @StrikerRUS (#5101) - [python] allow to register any custom logger (fixes #4783) @RustingSword (#4880) - Load initial scores with binary data files in CLI version @shiyu1994 (#4807) - [R-package] Rename `weight` -> `weights` @david-cortes (#4975) - [CUDA] New CUDA version Part 1 @shiyu1994 (#4630) - [python] make `early_stopping` callback pickleable @Yard1 (#5012) - [c-api][python-package][R-package] expose feature num bin @jmoralez (#5048) - [python-package] [R-package] propagate the best iteration of cvbooster into the individual boosters @jmoralez (#5066) - [python-package] add support for pandas nullable types @jmoralez (#4927) - [R-package] Promote objective and init_score to top-level arguments in `lightgbm()` @david-cortes (#4976) - [python] Start supporting Python 3.10 @StrikerRUS (#4893) - [python-package] support customizing Dataset creation in Booster.refit() (fixes #3038) @TremaMiguel (#4894) - [dask] add support for custom objective functions (fixes #3934) @jameslamb (#4920) - [R-package] added argument eval_train_metric to lgb.cv() (fixes #4911) @mayer79 (#4918) - Add support for Visual Studio 2022 @StrikerRUS (#4889) - Add C API function that returns all parameter names with their aliases @StrikerRUS (#4829) - [python][sklearn] respect parameters for predictions in `init()` and `set_params()` methods @StrikerRUS (#4822) - Add customized parser support @chjinche (#4782) - [R-package] Add `print()` and `summary()` methods for Booster @david-cortes (#4686) - Add 'nrounds' as an alias for 'num_iterations' (fixes #4743) @mikemahoney218 (#4746) - [python-package] early stopping min_delta (fixes #2526) @jmoralez (#4580) - [python][sklearn] respect objective aliases @StrikerRUS (#4758) - [python][sklearn] add `n_estimators_` and `n_iter_` post-fit attributes @StrikerRUS (#4753) ## 🔨 Breaking - [python-package] make Booster and Dataset 'handle' attributes private (fixes #5313) @jameslamb (#5947) - [python-package] remove hard dependency on 'scikit-learn', fix minimal runtime dependencies @jameslamb (#5942) - [python-package] [ci] switch to PEP 517 / 518 builds (remove `setup.py`) (fixes #5061) @jameslamb (#5759) - [ci] [python-package] replace 'python setup.py' with a shell script @jameslamb (#5837) - [R-package] use C++17 in the CRAN package @jameslamb (#5690) - [python-package] make some Booster and Dataset attributes private @jameslamb (#5723) - [CUDA] consolidate CUDA versions @jameslamb (#5677) - [python-package] make public API members explicit with module-level __all__ variables @jameslamb (#5655) - [ci] migrate CI from macOS 10.15 to 11 (fixes #5391) @StrikerRUS (#5396) - [ci] switch to manylinux_2_28 for Linux artifacts (fixes #5514, fixes #5589) @jameslamb (#5580) - fix: Adjust LGBM_DatasetCreateFromSampledColumn to handle distributed data @svotaw (#5344) - [python-package] allow custom weighing in fobj for scikit-learn API (closes #5027) @jmoralez (#5211) - [R-package] Use `type` argument to control prediction types @david-cortes (#5133) - [python-package] Use scikit-learn interpretation of negative `n_jobs` and change default to number of cores @david-cortes (#5105) - [python-package] remove Booster.set_attr() and Booster.attr() @jameslamb (#5272) - remove support for Solaris (fixes #5216) @jameslamb (#5226) - [R-package] stop automatically calculating eval metrics on training data in lightgbm() @jameslamb (#5209) - [R-package] remove lgb.unloader() @jameslamb (#5204) - [python-package] remove 'fobj' in favor of passing custom objective function in params @TremaMiguel (#5052) - [python-package] remove is_reshape argument in Booster.predict (fixes #5115) @jmoralez (#5117) - [R-package] Remove `reshape` argument in `predict` @david-cortes (#4971) - [R-package] Promote number of threads to top-level argument in `lightgbm()` and change default to number of cores @david-cortes (#4972) - [R-package] Rename `data` -> `newdata` in `predict` @david-cortes (#4973) - Build Windows artifacts in `windows-2019` image instead of `vs2017-win2016` @StrikerRUS (#5059) - [python-package] use 2d collections for predictions, grads and hess in multiclass custom objective @jmoralez (#4925) - [R-package] prefer params to keyword argument in lgb.train() @jameslamb (#5007) - [R-package] remove behavior where lightgbm() saves model to disk @david-cortes (#4974) - [python-package] make record_evaluation compatible with cv (fixes #4943) @jmoralez (#4947) - [python] remove `early_stopping_rounds` argument of `train()` and `cv()` functions @StrikerRUS (#4908) - [python] remove `evals_result` argument of `train()` function @StrikerRUS (#4882) - [python][sklearn] do not replace empty dict with `None` for `evals_result_` @StrikerRUS (#4884) - [python] Drop Python 3.6 support @StrikerRUS (#4891) - [python] remove `verbose_eval` argument of `train()` and `cv()` functions @StrikerRUS (#4878) - [python] remove `verbose` argument of `model_from_string()` method of Booster class @StrikerRUS (#4877) - [python][sklearn] Remove `early_stopping_rounds` argument of `fit()` method @StrikerRUS (#4846) - [R-package] remove support for '...' in `slice()` @jameslamb (#4872) - [R-package] remove support for '...' in `lgb.Dataset()` @jameslamb (#4874) - [R-package] remove support for '...' in `dim.lgb.Dataset()` @jameslamb (#4873) - [R-package] remove support for '...' in lgb.train() @jameslamb (#4863) - [R-package] remove support for '...' in `create_valid()` @jameslamb (#4865) - [R-package] remove support for 'info' in Dataset @jameslamb (#4866) - [R-package] remove Dataset getinfo() @jameslamb (#4864) - [R-package] remove support for '...' in lgb.cv() @jameslamb (#4860) - [R-package] remove Dataset setinfo() @jameslamb (#4854) - [R-package] remove support for '...' in predict() @jameslamb (#4857) - [R-package] remove support for '...' in Booster reset_parameter() @jameslamb (#4856) - [python][sklearn] unify values of `best_iteration` for sklearn and standard APIs @StrikerRUS (#4845) - [ci] migrate CI from macOS 10.14 to 10.15 and drop support of Mojave @StrikerRUS (#4849) - [R-package] enable saving Booster with saveRDS() and loading it with readRDS() (fixes #4296) @david-cortes (#4685) - [python][sklearn] remove `verbose` argument from `fit()` method @StrikerRUS (#4832) - [python] remove `learning_rates` argument of `train()` function @StrikerRUS (#4831) - [python] remove "auto" value of `ylabel` argument of `plot_metric()` function @StrikerRUS (#4818) - [python] Remove `print_evaluation()` function @StrikerRUS (#4819) - [python] Remove `silent` argument @StrikerRUS (#4800) ## 🚀 Efficiency Improvement - Add quantized training (CPU part) @shiyu1994 (#5800) - [python-package] replace .values usage with .to_numpy() @superlaut (#5612) - clear memory allocated for sampled data when constructing Dataset from text file @xuchuanyin (#4890) - [python] Faster categorical column names selection @Neronuser (#4787) - [R-package] parallelize compilation in CMake-based builds @jameslamb (#4525) - [python-package] simplify Dataset processing of label @jameslamb (#5456) - [python-package] make a shallow copy on dataframe rename (fixes #4596) @jmoralez (#5254) - [python-package] make a shallow copy when replacing categorical features with codes (fixes #4596) @jmoralez (#5225) - [R-package] reduce cost of repeated parameter alias checks @jameslamb (#5141) - reduce duplicate computation in poisson, gamma, and tweedie objectives @lorentzenchr (#4950) ## 🐛 Bug Fixes - move LightGBM-vendored json11 into a LightGBM-specific namespace (fixes #5944) @maskedcoder1337 (#5946) - [dask] hold ports until training @jmoralez (#5890) - update MSBuild solution to Windows SDK v10.0, add inet_pton define (fixes #5856) @jameslamb (#5884) - Fix DEBUG-mode GPU builds @GinkoBalboa (#5778) - cast data_index as size_t in cuda_row_data to avoid integer overflow @SiNZeRo (#5706) - [ci] [R-package] fix clang 15 warning about unqualified calls (fixes #5661) @jameslamb (#5662) - Check feature indexes in forced split file (fixes #5517) @btrotta (#5653) - fix feature index in Dataset::AddFeaturesFrom (fixes #5410) @jameslamb (#5650) - Check feature indexes in forced split file (fixes #5517) @btrotta (#5653) - fix feature index in Dataset::AddFeaturesFrom (fixes #5410) @jameslamb (#5650) - [ci] [python-package] fix missing import, test that lightgbm can be imported with only required dependencies (fixes #5631) @jameslamb (#5632) - Fix OpenMP thread allocation in Linux @svotaw (#5551) - [R-package] correctly quote paths on Windows for CMake-based builds @jameslamb (#5607) - [ci] [python-package] correct tag on x86_64 wheels @jameslamb (#5598) - [tests][dask] fix workers without data test (fixes #5537) @jmoralez (#5544) - prefer 'vsnprintf' to 'vsprintf' @jameslamb (#5561) - [ci] fix R-package CI jobs and compatibility with OpenMP 15+ (fixes #5549, #5562) @jameslamb (#5563) - include parameters from reference dataset on subset (fixes #5402) @jmoralez (#5416) - [python-package] ignore training set on early stopping callback (fixes #5354) @jmoralez (#5412) - [fix] change the destructor of ScoreUpdater to virtual (fixes #5400) @shiyu1994 (#5403) - Add default definition for GetColWiseData and GetColWiseData @shiyu1994 (#5413) - Fix potential overflow in linear trees @StrikerRUS (#5395) - Use double precision in threaded calculation of linear tree coefficients (fixes #5226) @btrotta (#5368) - [R-package] raise an informative error when custom objective produces incorrect output (fixes #5323) @jmoralez (#5329) - Clear split info buffer in cost efficient gradient boosting before every iteration (fix partially #3679) @shiyu1994 (#5164) - [c++][fix] check nullable of bin mappers in dataset_loader.cpp (fix #5221) @shiyu1994 (#5258) - [python] Fix training on subset constructed without params @StrikerRUS (#5213) - Check existence of inet_pton for win32 in CMakeLists.txt (fixes #5019) @shiyu1994 (#5159) - Fix potential overflow "Multiplication result converted to larger type" @StrikerRUS (#5189) - [R-package] ensure that callbacks respect verbosity from params @jameslamb (#5199) - fix precision lost in tree's ToIfElse @Grass-CLP (#5187) - fix some wrong format specifiers @StrikerRUS (#5190) - [R-package] allow use of categorical_features in Dataset when raw data does not have column names (fixes #4374) @jmoralez (#5184) - [c-api] check number of features when retrieving number of bins @jmoralez (#5183) - [CUDA] Fix integer overflow in cuda row-wise data @shiyu1994 (#5167) - [R-package] ensure values in params override keyword arguments to predict() (fixes #4670) @jameslamb (#5122) - check nullable of bin_mappers in DatasetLoader::CheckCategoricalFeatureNumBin (fix #5145) @shiyu1994 (#5146) - [CUDA] Fix row-wise histogram construction with dense data matrix @shiyu1994 (#5103) - [fix] fix duplicate added initial scores for single-leaf trees @shiyu1994 (#5050) - [python] fixes for supporting 2d numpy arrays for predictions, grads and hess in multiclass custom objective and eval @StrikerRUS (#5030) - CUDATreeLearner: free GPU memory in destructor if any allocated @denmoroz (#4963) - Use `delete[]` where appropriate instead of `delete` @david-cortes (#4984) - Pass train dataset parser config to valid dataset loading parser @chjinche (#4985) - [R-package] Fix custom objective detection in `print.lgb.Booster()` @StrikerRUS (#4941) - gpu allocate memory overflow (fixes #4926) @jiapengwen (#4928) - [R-package] respect 'verbose' argument in lgb.cv() (fixes #4667) @jameslamb (#4903) - [R-package] Apply patch for R4.2 on Windows @shiyu1994 (#4923) - [R-package] respect aliases for objective and metric and lgb.train() and lgb.cv() @jameslamb (#4913) - [python] raise an informative error instead of segfaulting when custom objective produces incorrect output @yaxxie (#4815) - [R-package] fix handling of duplicate parameters (fixes #4521) @jameslamb (#4914) - [R-package] update parameter 'verbosity' based on keyword arg 'verbose' @jameslamb (#4899) - [R-package] fix CVBooster reset_parameter() method (fixes #4900) @jameslamb (#4901) - [python] reset storage in record evaluation callback each time before starting training @StrikerRUS (#4885) - [python] reset storages in early stopping callback after finishing training @StrikerRUS (#4868) - [R-package] fix `--no-build-vignettes` option for `build-cran-package.sh` @jameslamb (#4848) - [python][docs] fix type hints for custom functions and remove vague `array-like` wording @StrikerRUS (#4816) - Always respect forced splits, even when feature_fraction < 1.0 (fixes #4601) @tongwu-msft (#4725) - Reset OpenMP thread number if num_threads <= 0 @hzy46 (#4704) ## 📖 Documentation - [docs] fix broken link to contributor GitHub account @jameslamb (#5959) - [docs] add versionadded notes for v4.0.0 features @jameslamb (#5948) - [docs] Add scikit-learn for intersphinx (fixes #5954) @thomasjpfan (#5956) - [docs] more fixes for broken links @jameslamb (#5941) - [docs] remove outdated information in Python install docs @jameslamb (#5938) - [docs] fix broken links in docs @jameslamb (#5939) - [docs] add quantized training paper to docs @jameslamb (#5923) - [docs] Update Quick Start @jaceklaskowski (#5900) - [docs] recommend a more efficient source installation of the python package @jameslamb (#5881) - adjusted bagging_freq parameter description @moziada (#5698) - [docs] remove unnecessary interactivity in 'docker run' instructions @jameslamb (#5692) - [docs] [R-package] mention {bonsai} in the docs @jameslamb (#5652) - [docs] encourage use of releases for GUI-only installations @jameslamb (#5649) - [docs] update CPU dockerfiles (fixes #5550) @jameslamb (#5601) - [docs] update cran-comments.md for v3.3.4 release @jameslamb (#5646) - [docs] add postgresml to list of external repos @jameslamb (#5565) - [docs] Improve docs: fix consistency of dots in C API and add notes about new ``time-costs`` Python-package build option @StrikerRUS (#5554) - [R-package] [docs] use CRAN canonical form for package links @jameslamb (#5504) - [docs] Fix link to Optuna's LightGBMTuner example @knshnb (#5519) - [docs]fix a typo in docs/Features.rst @JiantingFeng (#5463) - Use ROC-AUC metric for classification model in examples @Green-16 (#5440) - [docs] Fix links @StrikerRUS (#5451) - [R-package] Fix docstrings for predict functions @StrikerRUS (#5444) - [R-package] [docs] clarify shape of predictions @jameslamb (#5384) - [python-package] Improve readme on experimental cuda usage @thomasaarholt (#5386) - [docs] [R-package] document how to regenerate roxygen docs @jameslamb (#5382) - [R-package] [docs] fix typo in documentation on init_model @sebffischer (#5379) - [docs] [R-package] upgrade to roxygen2 7.2.1 @jameslamb (#5381) - [ci] make check-docs job compatible with rstcheck 6.x @jameslamb (#5388) - [docs][python] Fix return types in docstrings @StrikerRUS (#5326) - [docs] set language = 'en' in Sphinx config @jameslamb (#5322) - [R-package] [docs] document difference between lightgbm() and lgb.train() (fixes #5203) @jameslamb (#5273) - [docs] Use https links in docs @StrikerRUS (#5284) - [R-package] [docs] upgrade docs to roxygen2==7.2.0 @jameslamb (#5251) - [docs] Update broken links in docs @StrikerRUS (#5265) - [docs] add Microsoft security policy (fixes #5235) @jameslamb (#5264) - [R-package] update roles in DESCRIPTION @StrikerRUS (#5192) - [docs] Fix formula in path smoothing docs (fixes #5139) @samFarrellDay (#5154) - [docs] Document behaviour of the first linear estimator @Pablo-Davila (#5132) - [docs] use 'docker run --rm' in valgrind instructions @jameslamb (#5127) - [docs] use 'docker run --rm' in autoconf instructions @jameslamb (#5125) - [docs] Improve rendering of class properties in docs @StrikerRUS (#5078) - [python-package][docs] Booster eval methods accept list of callables @TremaMiguel (#5054) - [docs] update categorical feature description in Advanced Topics @StrikerRUS (#5044) - Correct documentation for sparse predictions @david-cortes (#4979) - [docs][R-package] Use direct link for the list of supported objectives @StrikerRUS (#5029) - [Docs] Weights non-negative for train data @TremaMiguel (#5013) - [docs] improve docs for sklearn wrapper @StrikerRUS (#5026) - [docs] clarify that categorical features will be converted to integers internally @jmoralez (#4959) - [docs] clarify that custom eval functions are not only used on training data @jameslamb (#5011) - [docs] document rounding behavior of floating point numbers in categorical features @StrikerRUS (#5009) - Change docs for feval @akshitadixit (#5002) - [docs] document `conda-forge` channel preference over `default` one and describe possible workaround for OpenMP conflicts in FAQ @StrikerRUS (#4994) - Add Nyoka to README @StrikerRUS (#4992) - [docs] minor docs improvements @StrikerRUS (#4938) - [R-package] [docs] fix calculation of R test coverage (fixes #4919) @jameslamb (#4922) - [docs] Update link to FLAML code example @qingyun-wu (#4892) - [R-package] [docs] add Michael Mayer to DESCRIPTION @jameslamb (#4867) - [docs] document that `pred_early_stop` can be used only in normal and raw scores prediction @StrikerRUS (#4823) - [R-package] [docs] add intro vignette (#3946) @jameslamb (#4775) - [docs] fix broken SynapseML link @StrikerRUS (#4795) - [docs] [dask] Add return information to Dask fit() docs (fixes #4402) @jameslamb (#4716) - [docs] add specific estimator names to sklearn fit() docs @jameslamb (#4774) - [docs] [R-package] update cran-comments for v3.3.1 release @jameslamb (#4738) - [ci] only use conda-forge when installing R packages in docs builds @jameslamb (#4767) - [docs] improve docs about `nthreads` parameter @StrikerRUS (#4756) - [docs] update link to LightGBM Ruby @StrikerRUS (#4740) - [docs] fix broken SynapseML link @jameslamb (#4712) ## 🧰 Maintenance - [c++] virtual destructor for gradient discretizer @shiyu1994 (#5965) - [python-package] avoid data_has_header check in predict() @jameslamb (#5970) - [ci] [python-package] Add CI job testing compatibility with oldest possible versions @jameslamb (#5936) - [ci] add Python 3.11 test coverage @jameslamb (#5922) - [ci] increase valgrind timeout to 6 hours @jameslamb (#5953) - [python-package] ignore pip cache dir in build-python.sh @jameslamb (#5945) - [ci] remove brew update-reset again (fixes #5670) @jameslamb (#5925) - [python-package] ensure 'build-python.sh' always reinstalls (fixes #5906) @jameslamb (#5907) - [python-package] remove unnecessary Boost files from sdists @jameslamb (#5912) - [ci] stop relying on cran.microsoft.com in CI jobs @jameslamb (#5909) - [ci] use an MRAN snapshot for R 3.6 Linux jobs (fixes #5898) @jameslamb (#5903) - [ci] [python-package] use ruff, enforce flake8-bugbear and flake8-comprehensions checks @jameslamb (#5871) - [ci] [python-package] fix mypy errors in sklearn.py @jameslamb (#5886) - Add SWIG byte pointers @svotaw (#5832) - [ci] [python-package] fix mypy error in Dataset.set_categorical_feature() @jameslamb (#5883) - [ci] fix wheel renaming in test.sh @jameslamb (#5877) - [ci] [python-package] tell mypy 'auto' has a special meaning for feature_name and categorical_feature @jameslamb (#5874) - [ci] [python-package] move tool configuration to pyproject.toml @jameslamb (#5872) - [ci] use Python 3.11 in linting CI job @jameslamb (#5873) - [ci] use lowercase library names in linker flags @characat0 (#5870) - [ci] minor fixes to build-python.sh @jameslamb (#5869) - [ci] [python-package] resolve remaining mypy errors in dask.py @jameslamb (#5858) - [ci] [python-package] check distributions with pydistcheck @jameslamb (#5838) - [ci] remove R 3.6 macOS CI jobs @jameslamb (#5859) - [ci] [python-package] fix mypy errors about Dataset._set_init_score_by_predictor() @jameslamb (#5850) - [python-package] [ci] fix mypy errors in Booster.__inner_predict() @jameslamb (#5852) - [ci] [python-package] fix mypy errors in Booster.refit() @jameslamb (#5853) - [ci] add tests on cv() with an init_model @jameslamb (#5851) - [ci] [python-package] fix mypy error about dask._predict_part() @jameslamb (#5849) - [ci] [python-package] fix mypy error about return_cvbooster in cv() @jameslamb (#5845) - [python-package] move validation up earlier in cv() and train() @jameslamb (#5836) - [python-package] remove default arguments in internal functions @jameslamb (#5834) - [python-package] fix mypy error about used_indices in Dataset.subset() @jameslamb (#5833) - [ci] put a temporary ceiling on pip @jameslamb (#5835) - [ci] [dask] fix mypy errors about predict() signature @jameslamb (#5827) - [python-package] fix mypy error in Dataset.__init_from_list_np2d() @jameslamb (#5826) - [ci] [python-package] fix mypy errors in cv() @jameslamb (#5828) - [python-package] [docs] complete type annotations for scikit-learn fit() methods @jameslamb (#5816) - [ci] remove pin on tinytex in R CI jobs @jameslamb (#5821) - [ci] moving linting into small scripts (fixes #5142) @jameslamb (#5809) - [python-package] add more type annotations in basic.py @jameslamb (#5812) - [python-package] add type annotations on some array methods in basic.py @jameslamb (#5813) - [python-package] add type annotations on Booster.trees_to_dataframe() inner functions @jameslamb (#5811) - [python-package] fix type annotations for eval result tracking @jameslamb (#5793) - [python-package] fix mypy error in Booster.get_split_value_histogram() @jameslamb (#5794) - [python-package] fix mypy errors about early stopping rounds @jameslamb (#5795) - [python-package] fix mypy errors about custom eval and metric functions @jameslamb (#5790) - [python-packages] [docs] add type hints and define 'array-like' for X, y, group in scikit-learn interface @jameslamb (#5757) - remove unused variables from bin.cpp @jmoralez (#5801) - [ci] fix LaTeX tools installation in R jobs (fixes #5802) @jameslamb (#5807) - [python-package] fix mypy errors about scikit-learn properties @jameslamb (#5788) - [python-package] add hint on dtypes in Dataset.set_field() @jameslamb (#5787) - [python-package] replace uses of scipy.sparse.issparse() with isinstance() @jameslamb (#5784) - [python-package] fix mypy error about cpu_count() methods @jameslamb (#5786) - [python-package] fix mypy errors about Dataset.params @jameslamb (#5780) - [python-package] ignore some mypy errors in _DaskLGBMModel @jameslamb (#5774) - [python-package] fix mypy errors about ctypes pointers @jameslamb (#5779) - [python-package] fix mypy error about dask._HostWorkers.__eq__() @jameslamb (#5782) - [python-package] fix mypy errors about validation sets in sklearn.py @jameslamb (#5724) - [python-package] fix mypy errors about missing annotations and incompatible types @IdoKendo (#5672) - [python-package] add type hints on sklearn properties @jameslamb (#5771) - [python-package] add type hints for functions accepting dtypes @jameslamb (#5773) - [ci] isolate c_api_test library-loading from Python source tree @jameslamb (#5761) - [python-package] [dask] add type annotations on dask._HostWorkers @jameslamb (#5766) - [python-package] [dask] fix mypy errors about Dask fit() return types @jameslamb (#5756) - [python-package] use keyword arguments in predict() calls @jameslamb (#5755) - [python-package] add type hints on label @jameslamb (#5754) - [python-package] add type hints on group, init_score, and weight @jameslamb (#5753) - [python-package] add type hints on raw data passed to Dataset and Booster @jameslamb (#5752) - [python-package] add type hints on feature_name and categorical_feature in sklearn interface @jameslamb (#5747) - [python-package] add type hints on fit() return and callbacks in sklearn.py @jameslamb (#5748) - [python-package] add type hints on Booster predict() methods @jameslamb (#5749) - [python-package] add more type hints in basic.py @jameslamb (#5729) - [python-package] fix mypy error about ctypes array creation @jameslamb (#5726) - [python-package] add type hints on Dataset feature processing @jameslamb (#5745) - [ci] speed up conda setup for macOS and Linux jobs @jameslamb (#5743) - [python-package] remove default values in internal functions @jameslamb (#5730) - [python-package] use _DatasetHandle type hint @jameslamb (#5740) - [ci] skip Dask tests on GPU builds @jameslamb (#5741) - [python-package] fix _LGBM_CustomMetricFunction typing @Deimos357 (#5736) - [python-package] fix mypy errors about Dataset handle @jameslamb (#5722) - [python-package] fix mypy errors about cv() internals @jameslamb (#5725) - [python-package] change types in sklearn.py initializations @jameslamb (#5718) - [python-package] [dask] fix mypy errors regarding predict_proba @IdoKendo (#5728) - [python-package] fix mypy errors about custom eval functions in sklearn.py @jameslamb (#5721) - [python-package] fix mypy error about log callback @jameslamb (#5720) - [python-package] fix mypy errors around eval metrics in sklearn.py @jameslamb (#5719) - [python-package] fix mypy errors about _InnerPredictor @jameslamb (#5714) - [dask] fix mypy errors about padded eval_results @jameslamb (#5716) - [python-package] fix mypy errors in compat.py and libpath.py @jameslamb (#5711) - [python-package] add more type hints in sklearn.py @jameslamb (#5710) - [python-package] add type hints on plotting code @jameslamb (#5708) - [ci] [python-package] enforce 'twine check' and 'check-wheel-contents' on Python distributions @jameslamb (#5707) - [python-package] declare the use of inline type hints @jameslamb (#5709) - [python-package] remove some inner function definitions @jameslamb (#5704) - [python-package] add more type hints @jameslamb (#5694) - [ci] restore flake8 checks @jameslamb (#5703) - [python-package] Fix mypy errors for fit() incompatible signature @IdoKendo (#5679) - [R-package] discourage use of regex for fixed string comparisons @jameslamb (#5685) - [ci] get clang-15 from bookworm repository (fixes #5688) @jameslamb (#5689) - [ci] speed up conda setup for some jobs @jameslamb (#5668) - bump development version to v3.3.5.99 @jameslamb (#5681) - [python-package] Fix mypy errors for predict() method @IdoKendo (#5678) - [python-package] fix mypy errors for eval_at and basic @IdoKendo (#5674) - [ci] [python-package] enforce flake8 checks (fixes #5566) @jameslamb (#5659) - [python-package] remove `Dataset.feature_penalty` @jameslamb (#5656) - [ci] fix brew errors in R macOS jobs (fixes #5670) @jameslamb (#5671) - [ci] run r-package Linux jobs in containers @jameslamb (#5638) - [ci][dask][gpu] Run Dask tests with LightGBM GPU version @jgiannuzzi (#5292) - [python-package] prefix internal objects with '_' @jameslamb (#5654) - [ci] speed up Windows jobs (fixes #5647) @jameslamb (#5648) - [ci] automatically cancel GitHub Actions runs for outdated commits @jameslamb (#5651) - [ci][dask][gpu] Run Dask tests with LightGBM GPU version @jgiannuzzi (#5292) - [python-package] prefix internal objects with '_' @jameslamb (#5654) - [ci] speed up Windows jobs (fixes #5647) @jameslamb (#5648) - [ci] automatically cancel GitHub Actions runs for outdated commits @jameslamb (#5651) - [ci] use LightGBM CI image for building aarch64 wheels (fixes #5595) @jameslamb (#5622) - [ci] allow ubuntu-latest to float for some GitHub Actions jobs @jameslamb (#5644) - [ci] fix locale-setting in jobs running in ubuntu container @jameslamb (#5643) - [ci] make GitHub Actions branch protection stricter (fixes #5501) @jameslamb (#5645) - [ci] Use Ubuntu 22.04 as `ubuntu-latest` at CI (fixes #5186) @StrikerRUS (#5288) - [tests][python-package] remove remaining tests using load_boston (fixes #4793) @jmoralez (#5581) - [python-package] prefix c_int_array and c_float_array with _ @OmarManzoor (#5614) - [ci] test against R 4.2.2 @jameslamb (#5621) - [python-package] prefix basic.convert_from_sliced_object with _ @OmarManzoor (#5613) - [ci] detect non-default dynamic symbols in check_dynamic_dependencies.py @jameslamb (#5610) - [ci] add docs and specific error messages in check_dynamic_dependencies.py @jameslamb (#5582) - [ci] update versions of GitHub Actions @jameslamb (#5590) - [swig] switch to SWIG_ADD_LIBRARY() in CMakeLists.txt (fixes #5586) @shogohida (#5603) - [ci] switch from MiKTeX to tinytex on Windows R jobs (fixes #5600) @jameslamb (#5602) - [python-package] prefix several internal functions with _ @Madnex (#5545) - [python-package] remove unused imports @jameslamb (#5559) - [ci] prefer CPython in Linux and macOS test environment @StrikerRUS (#5555) - [docs] bump development version to 3.3.3.99 @jameslamb (#5533) - [ci] upgrade macOS_regular job to Python 3.9 (fixes #5569) @jameslamb (#5570) - [tests] Fix cpp streaming data tests @StrikerRUS (#5481) - [python-package] prefix is_numpy_column_array with _ @Madnex (#5531) - renamed cur_cat => cur_cat_idx and added some comments @zyxue (#5522) - [python-package] prefix cast_numpy_array_to_dtype with _ @Madnex (#5532) - suppress alias warnings with verbosity<0 (fixes #4518) @jmoralez (#5253) - renamed tmp_num_sample_values to non_na_cnt @zyxue (#5521) - [ci] run Appveyor checks on PRs targeting release/ branches @jameslamb (#5528) - [ci] run CI on pull requests targeting release/ branches @jameslamb (#5527) - [python-package] prefix is_numpy_1d_array with _ @Madnex (#5520) - replace `pandas.Series.iteritems` with `pandas.Series.items` @jmoralez (#5506) - [ci] prefer CPython in Windows test environment and use safer approach for cleaning up network (fixes #5509) @jameslamb (#5510) - [ci] test against R 4.2 for macOS and Linux CI jobs @jameslamb (#5484) - [R-package] improve safety of index selection in plotting @jameslamb (#5485) - [ci] [R-package] ensure that MSVC jobs fail when tests fail (fixes #5439) @jameslamb (#5448) - [python-package] add more hints in sklearn.py @jameslamb (#5460) - [R-package] [ci] restore R 3.6 Windows cran CI job (fixes #5036) @jameslamb (#5479) - Remove redundant whitespaces @ch3rn0v (#5480) - fix references to 'object function' @jameslamb (#5468) - [python] Fix typehints in Sequence API @StrikerRUS (#5465) - fix: Revert leftover debugging in streaming test @svotaw (#5467) - Fix CUDA `#ifndef` guards @StrikerRUS (#5466) - [python-package] add type hints on Dataset constructors @jameslamb (#5458) - Add streaming concurrency tests @svotaw (#5437) - Rename Metadata num_classes to be more clear @svotaw (#5461) - [R-package] fix function references in error messages @jameslamb (#5455) - [python-package] fix type hints on ctypes array converters @jameslamb (#5446) - [python-package] fix mypy errors about callbacks @jameslamb (#5450) - [python-package] add type hints on empty initializations @jameslamb (#5445) - [python-package] fix mypy error about type change in Dataset.feature_num_bin() @jameslamb (#5447) - [ci][fix] Fix cuda_exp ci @shiyu1994 (#5438) - [python] remove unused import @StrikerRUS (#5443) - [ci] bump CUDA version from `11.7.0` to `11.7.1` at CI @StrikerRUS (#5442) - [python-package] add type hints on Booster eval methods @jameslamb (#5433) - update tree to if-else @jmoralez (#5422) - [ci] bump CUDA version from `11.6.2` to `11.7.0` at CI @StrikerRUS (#5287) - [python-package] add more type hints on Dataset @jameslamb (#5431) - [python-package] add more type hints on Booster @jameslamb (#5432) - [ci] increase valgrind bytes lost limit to 352 @jameslamb (#5429) - [python] Prefix `basic.is_numeric()` with _ @ak04p (#5421) - [ci] increase valgrind timeout to 5 hours @jameslamb (#5414) - [python-package] add more type hints in basic.py @jameslamb (#5407) - [python-package] prefix NUMERIC_TYPES with _ to make it a internal object @thomasjpfan (#5409) - [python-package] add type hints on Booster.save_model() @jameslamb (#5406) - Minor CUDA cleanup @StrikerRUS (#5394) - [ci] temporarily pin scipy version and fix Python linting error @StrikerRUS (#5398) - [python-package] add type hints on some functions in basic.py @makquel (#5362) - [python-package] add more type hints on Booster @jameslamb (#5360) - [python-package] make library-loading stricter @jameslamb (#5357) - [python-package] add type hints on Booster.update() @jameslamb (#5359) - [python-package] add more type hints on basic.py @jameslamb (#5356) - [python-package] add type hints on Dataset @jameslamb (#5353) - [python-package] remove inner function _construct_dataset() in LGBMModel.fiit() @jameslamb (#5333) - [python-package] add type hints on predict() methods @jameslamb (#5334) - [python-package] add more type hints in basic.py @jameslamb (#5330) - [ci][R-package] Minor refactoring for `lintr` code @StrikerRUS (#5327) - [python-package] add more type hints in engine.py @jameslamb (#5301) - [ci] [R-package] Add string_boundary_linter @CuriousCorrelation (#5324) - [python-package] add more type hints on Booster @jameslamb (#5309) - [ci] [R-package] Add paste_linter @CuriousCorrelation (#5320) - [ci] [R-package] Add duplicate_argument_linter @SaumyaBhushan (#5310) - [ci] [R-package] Add a few more linters @CuriousCorrelation (#5311) - [ci] [R-package] Add class_equals linter @CuriousCorrelation (#5307) - [python][sklearn] Simplify params handling in `predict()` with `_choose_param_value()` @StrikerRUS (#5308) - [ci] [R-package] Add any_is_na_linter @CuriousCorrelation (#5306) - [python-package] add some type hints on Booster @jameslamb (#5302) - [python] preserve None in _choose_param_value() @jameslamb (#5289) - [ci] Install PoCL in Docker for old Ubuntu 14.04 @StrikerRUS (#5286) - [R-package] Specify concrete linting rule that is being ignored via `nolint` mark @StrikerRUS (#5300) - [python-package] add type hints on cv() @jameslamb (#5271) - [ci] [R-package] upgrade to lintr v3.0 (fixes #5228) @jameslamb (#5294) - [ci] Pin lintr to <3.0 @jgiannuzzi (#5290) - [ci] Run Linux OpenCL tests against POCL instead of the AMD App SDK @jgiannuzzi (#5282) - [tests][python] Make test that checks original pandas data isn't modified more strict @StrikerRUS (#5267) - [python] add more type hints in basic.py @jameslamb (#5255) - [python] add more type hints on LGBMModel methods @jameslamb (#5239) - [R-package] address linter warnings about portable paths @jameslamb (#5249) - [R-package] [ci] silence more logs in tests (fixes #4862) @jameslamb (#5250) - Remove leftovers after the drop of Solaris support @StrikerRUS (#5248) - [python] add type hints on sklearn metric and eval wrappers @jameslamb (#5238) - [R-package] silence logs in print(), show(), summary() tests @jameslamb (#5237) - [R-package] standardize style for placement of braces @jameslamb (#5240) - [R-package] remove semicolon in R code @jameslamb (#5232) - [R-package] remove Solaris reference in test message @jameslamb (#5231) - [R-package] silence more logs in unit tests @jameslamb (#5227) - [ci] switch CRAN mirror to RStudio @jameslamb (#5230) - Cleanup codeowners @StrikerRUS (#5215) - [R-package] minor improvements on weight demo @jmoralez (#5212) - [ci] fix R Hub token @jameslamb (#5210) - [R-package] silence more logs in tests @jameslamb (#5208) - [ci] Prevent Python downgrading to pypy on Windows (2) @StrikerRUS (#5198) - [ci] Prevent Python downgrading to pypy on Windows @StrikerRUS (#5197) - [ci] fix git checkout for comment-triggered CI jobs @jameslamb (#5169) - [python] remove unused import from `basic.py` @StrikerRUS (#5188) - [tests] replace `fobj` with `custom objective` in test comments and make tests stricter @StrikerRUS (#5173) - [ci] Update version of Azure REST API @StrikerRUS (#5172) - [ci] skip auto-injected tasks at Azure Pipelines @StrikerRUS (#5175) - fix typo in CEGB method name @jameslamb (#5168) - [ci] temporarily pin Azure Devops jobs to ubuntu 20.04 @jameslamb (#5174) - [ci] fix git checkout for CI jobs (fixes #5151) @jameslamb (#5152) - [ci] bump CUDA version from `11.5.1` to `11.6.2` at CI @StrikerRUS (#5149) - [python] Use predefined constant in feature importance type comparison instead of raw int literal @StrikerRUS (#5148) - [ci] update to R 4.1.3 and use macOS-latest for R jobs (fixes #4990) @jameslamb (#5137) - [ci] have no-response bot post as github-actions user @jameslamb (#5136) - [ci] fail R macOS CI jobs earlier when installations fail @jameslamb (#5129) - [ci] use lee-dohm/no-response to close stale issues (fixes #5060) @jameslamb (#5120) - [ci] Remove temp workaround for graphviz installation @StrikerRUS (#5126) - [R-package] rename internal callback functions @mayer79 (#5123) - [R-package] ensure boosting happens in tests on small datasets @jameslamb (#5121) - [R-package] Add missed packages into dependencies list @StrikerRUS (#5118) - [R-package] add assertions to test on lightgbm() weights @jameslamb (#5110) - Log warnings for number of bins of categorical features @shiyu1994 (#4448) - clarify no-meaningful-features warning in Dataset construction (fixes #5081) @jameslamb (#5083) - [ci] Add text file with GitHub commit hash to nightly builds @StrikerRUS (#5082) - [ci] remove Visual Studio 2017 CI job for R-package @StrikerRUS (#5079) - [python-package] Better column dtype logging when column has "bad dtype" @hsorsky (#5065) - [ci] update CODEOWNERS @jameslamb (#5063) - [ci] fix current `master` fails with graphviz-related error @StrikerRUS (#5068) - [ci] temporarily remove R3.6 CRAN CI build @jameslamb (#5049) - [tests][python] move tests that use `train()` function defined in `engine.py` from `test_basic.py` to `test_engine.py` @StrikerRUS (#5034) - [R-package] remove internal function lgb.check.obj() @jameslamb (#5021) - [ci] use Python 3.8 for `bdist` CI job in old Ubuntu container @StrikerRUS (#5022) - [R-package] raise informative errors directly when Booster creation fails @jameslamb (#5014) - [ci] [docs] use miniforge for readthedocs builds (fixes #4954) @jameslamb (#4957) - [ci] Enclose Python versions in quotes in config yml files @StrikerRUS (#5015) - [python] enforce a floor of Python 3.6 (fixes #5004) @PyVCEchecker (#5006) - Update versions of LightGBM dependencies @StrikerRUS (#4935) - [tests][python] remove compatibility code for old versions in tests @StrikerRUS (#4978) - [ci] use conda-forge in Windows CI jobs and Docker images @StrikerRUS (#4993) - [ci] use `latest` tag again for Ubuntu 14 CI Docker @StrikerRUS (#5001) - [ci] use conda-forge in Linux and macOS CI jobs @jameslamb (#4953) - [ci] upgrade to R 4.1.2 in CI, change approach to macOS-latest R CI builds (fixes #4988) @jameslamb (#4989) - [ci] bump CUDA version from `11.5.0` to `11.5.1` at CI @StrikerRUS (#4967) - [ci] use `-1` for exit code in case of failure @StrikerRUS (#4939) - [tests][R-package] use one `#` symbol for comments @StrikerRUS (#4940) - [ci] bump CUDA version from 11.4.2 to 11.5.0 at CI @StrikerRUS (#4937) - [ci] Bump version for development @StrikerRUS (#4933) - [R-package] [tests] remove uses of testthat::context() @jameslamb (#4915) - [R-package][tests] remove uses of `testthat::expect_is()` @jameslamb (#4916) - [R-package] remove unnecessary comments and fix typos in comments @jameslamb (#4902) - [R-package] reduce verbosity in tests using lgb.train() @jameslamb (#4896) - [tests][python-package] change boston dataset to synthetic dataset in tests that don't check score @jmoralez (#4895) - [R-package] reduce verbosity in some unit tests @jameslamb (#4879) - [R-package] remove unused callback cb.reset.parameter @jameslamb (#4871) - [python-package][dask] handle failures parsing worker host names @jameslamb (#4852) - [python-package] [dask] fix mypy error about worker_addresses @jameslamb (#4851) - [python] remove workaround for `UnboundLocalError` in early stopping callback for Python 2 @StrikerRUS (#4855) - [python-package] remove unused imports @jameslamb (#4850) - [python-package] fix mypy errors in engine.py @jameslamb (#4839) - [python-package] [dask] fix mypy errors from dask.py docstrings @jameslamb (#4844) - [python-package] fix mypy errors in sklearn.py @jameslamb (#4837) - [tests][dask] fix argument names in custom eval function in Dask test @StrikerRUS (#4833) - [python-package] fix mypy errors in plotting.py @jameslamb (#4838) - [python-package] fix mypy error about missing type hint in dask.py @jameslamb (#4840) - [python-package] fix mypy errors in compat.py and setup.py @jameslamb (#4836) - [docs][python] simplify mocking in docs @StrikerRUS (#4830) - [python] add type hints to `_compare_params_for_warning()` and make it reusable @StrikerRUS (#4824) - [R-package] Move R6 to Imports @david-cortes (#4812) - [ci] Fix CI job for R artifact @StrikerRUS (#4811) - [ci] fix getting status of optional workflows in PRs with a lot of comments @StrikerRUS (#4806) - [python] add type hints for custom objective and metric functions in scikit-learn interface @jameslamb (#4547) - [c_api] Improve ANSI compatibility by avoiding <stdbool.h> @drewmiller (#4697) - [ci] ignore CMakeLint errors related to package names @StrikerRUS (#4801) - [ci] fix CMakeLint errors related to function naming case @StrikerRUS (#4794) - [ci] simplify processing of `CMAKE_CUDA_FLAGS` variable in `CMakeLists.txt` @StrikerRUS (#4799) - [ci] fix CMakeLint `linelength` errors @StrikerRUS (#4796) - [ci] use pure `endif()` and `endfunction()` without expression inside in `CMakeLists.txt` @StrikerRUS (#4798) - cmake: use object library to avoid duplicate compilation. @cyfdecyf (#4489) - Suppress categorical warning (fixes #3379) @hzy46 (#4768) - [ci][tests][python] remove assertion for `filename` that is no longer true with new version of graphviz @StrikerRUS (#4778) - [ci] Revert temp workaround for `freetype` version @StrikerRUS (#4776) - [ci] increase timeout for valgrind job to 240 minutes @jameslamb (#4773) - [python] improve warning message about aliases in `cv()` function @StrikerRUS (#4766) - [ci] Temporary pin dask version at CI @StrikerRUS (#4770) - [ci] use wch1/r-debug image in Solaris tests @jameslamb (#4765) - [ci] upgrade actions/checkout to v2.4.0 @jameslamb (#4763) - [docs][python] add `datatable` to the mocked modules during docs building process and sort them alphabetically @StrikerRUS (#4750) - [R-package] allow use of custom R executable when building CRAN package @jameslamb (#4754) - [R-package] remove temporary files created in configure.win @jameslamb (#4752) - [ci] indicate support of Monterey @StrikerRUS (#4732) - [python] Make dummy classes constructible with any arguments @StrikerRUS (#4749) - [ci] Temporary pin freetype version at Windows CI @StrikerRUS (#4747) - Remove checks for label when loading dataset from binary file because label is ignored in that case @StrikerRUS (#4737) - [tests][python] add test for non-serializable callback @StrikerRUS (#4741) - Improve warning wordings @StrikerRUS (#4731) - [ci] Bump version for development @StrikerRUS (#4730) - Add some warnings when loading dataset from binary file @StrikerRUS (#4724)

v3.3.5
? · 2023-01-24

## Changes This is a special release, put up to prevent the R package from being archived on CRAN. See #5661 and #5662 for context. This release only contains the changes, relative to `v3.3.4`, necessary to prevent removal of the R package from CRAN. ## 💡 New Features None ## 🔨 Breaking None ## 🚀 Efficiency Improvement None ## 🐛 Bug Fixes - [ci] [R-package] fix clang 15 warning about unqualified calls (fixes #5661) @jameslamb (#662) ## 📖 Documentation None ## 🧰 Maintenance None