A new SCons release, 4.11.0, is now available on the SCons download page: https://scons.org/pages/download.html Here is a summary of the changes since 4.10.1: DEPRECATED FUNCTIONALITY ------------------------ - Deprecated Python 3.7 & 3.8 support. - Deprecated using signature-file-per-directory (aka old-style SConsign) via the SConsignFile(name=None) call. - The legacy job scheduler, which was superseded by a new scheduler in SCons 4.7 but remained available as a fallback, is deprecated and will be removed in the next release. The --experimental feature flag to select the legacy scheduler is renamed to "legacy_sched_deprecated" to give a clear indication of the status change; the flag will also be removed in the next release. REMOVED FUNCTIONALITY --------------------- - The qt3 tool module, deprecated since version 4.3, is removed due to the general unavailability of the obsolete build-time Qt3 package. CHANGED/ENHANCED EXISTING FUNCTIONALITY --------------------------------------- - The tool search order now prefers clang over gcc on FreeBSD and OpenBSD. FIXES ----- - Fix --debug=includes for case of multiple source files. - Adjust race protection for CacheDir - now uses a unique temporary directory for each writer before doing the move, instead of depending on a one-time uuid to make a path to the file. - Fix handling of AddOption for option-arguments with spaces (when omitting the = sign or when an option takes multiple option-arguments). Arguments unknown at the time the first pass splits the command line into arguments and targets would put such arguments into targets, and they remained there even after the AddOption calls were seen. - Fix CPPDEFINES test using pkg-config, which was failing on GH Actions. - Fix -n / --no-exec support when using ninja tool IMPROVEMENTS ------------ - Reduce unneeded computation of overrides. The Mkdir builder used an unknown argument ('explain') on creation, causing it to be considered an override. Also, if override dict is empty, don't even call the Override factory function. - Subst: Multiple substitution optimizations providing up to 8-12% performance improvement on typical builds, with larger gains (up to 20-30%) on builds with many callable construction variables: * Consolidate dictionary merging operations to reduce unnecessary copies * Use functools.lru_cache for callable signature inspection with bounded memory (256 entries max, ~1MB) * Make Action classes (CommandAction, FunctionAction, ListAction) hashable to enable cache optimization * Fix for_signature logic bug in ListSubber.expand() for correct signature generation * Modernize string formatting to f-strings Also, separately, some code-style cleanups and docstring work in Subst.py. - Test runner reworked to use Python logging; the portion of the test suite which tests the runner was adjusted to match. - Used Gemini to refactor runtest.py to better organize the code and add docstrings. - Simplified and sped up compilation database generation. No longer requires each entry to have a dedicated node that's always built; instead, the database *itself* is set to always build. - Switch remaining "original style" docstring parameter listings to Google style. - Additional small tweaks to Environment.py type hints, fold some overly long function signature lines, and some linting-inspired cleanups. - Test framework: tweak module docstrings - Test suite: end to end tests don't use assert in result checks - Don't duplicate the creation of Tool objects if "default" is part of the tool list. - Test suite: add support for Python 3.15 in the Action unit tests. - zip tool now uses zipfile module's "from_file" method to populate ZipInfo records, rather than doing manually. - Add RequiredPackage to the LaTeX scanner for recursive scanning of custom LaTeX packages. - Java tool recognizes all released versions, and no longer needs manual updating as new releases are made. Default is now latest LTS - v25. - Clarify internal usage of zipimporter (not user-visible code) - Handle missing/malformed manifest in mslink more gracefully (issue 4866). - Change the way ldc D compiler specifies including libdruntime when making a shared object. ldc version 1.3 (2017) introduced shared druntime on some platforms, with an odd library naming scheme. SCons specification was "too precise" to work cross-platform with the new scheme, now let the linker pass pick. Adjust $SHDLINKFLAGS to change this, or choose other schemes, such as LTO libs. PACKAGING --------- - Added script for release process to find all contributors in a release and highlight new contributors. (Using Gemini AI) DOCUMENTATION ------------- - Fix SCons Docbook schema to work with lxml > 5 - More clarifications in manpage Builder Methods section. - Handle the default (unset) ProgressObject differently for the sole purpose of avoiding Sphinx 9.0+ blowing up on it (it's been giving a warning for years, but now it's a fatal error). Affects only the API doc build. - Improve coverage of "API doc" build by ignoring any setting of __all__ in a package and not showing inherited members from optparse. Add a trick to make sure build sees PathListCache while generating docs (in normal operation, it's removed so was not visible). - All functions/classes/non-dunder methods in Environment now have docstrings. - Add possible build failure when targeting 32-bit arm using Visual Studio 2022 with Windows SDK version 10.0.26100.0 or later installed to the known issues in SCons/Tool/MSCommon/README.rst. - Clarify VariantDir behavior when switching to not duplicate sources and tweak wording a bit. - Update documentation of the three file-finding functions in the API (FindFile, FindInstalledFiles, FindSourceFiles) as well as FindPathDirs. - Update documentation for linking-related construction variables. Add a few more live links. - Update documentation for CacheDir and related option flags - Drop old example section from manpage. This has been commented out since release 4.0, when the content was used to populate the new SCons Cookbook. - Update documentation for IMPLICIT_COMMAND_DEPENDENCIES construction variable. - Fix typo in preface - Remove word "below" when content is not actually located below - Fix typos in preface, Chapter 6, Chapter 9 and Chapter 10 of User Guide - Fix broken links in Chapter 1 of User Guide - Add info on the type of an option variable to GetOption and SetOption. - Tighten up the doc for Variables-Add() and add a note on file contents not being preserved to Variables-Save() - Tweak the wording for $PRINT_CMD_LINE_FUNC. - Fixed an old problem in PDF doc generation where the path to an image file ended up with a "not found" error. - Fixed PDF doc build problems relating to illegal margin widths ("") and table column alignment. DEVELOPMENT ----------- - Introduce some unit tests for the file locking utility routines - Purge vim/emac local variable bloat. - Implement type hints for Node subclasses. - Ruff: Handle F401 exclusions more granularly, remove per-file exclusions. - Update pyproject.toml to support Python 3.14 and remove restrictions on lxml version install - Unify internal "_null" sentinel usage. - Docbook tests: improve skip message, more clearly indicate which test needs actual installed system programs (add -live suffix). - Implement type hints for Environment and environment utilities. - MSVC: Added a host/target batch file configuration table for Visual Studio 2026. Visual Studio 2026 removed support for 32-bit arm targets. - Modernized GitHub Actions test runner. This consolidates the logic of existing test environments into a single package. Adjusted AppVeyor to only run for targets unsupported by GitHub runners. - Fix Appveyor scripting to install unavailable python versions when needed and use them for testing. - Split `SCons.Util.UtilTests.py` to individual packages where appropriate. - Add 'bsd' platform definition. Thanks to the following contributors listed below for their contributions to this release. ========================================================================================== .. code-block:: text git shortlog --no-merges -ns 4.10.1..HEAD 87 William Deegan 74 Mats Wichmann 14 Thaddeus Crews 10 Prabhu Singh Khalsa 5 Joseph Brill 4 Keith F. Prussing 4 Prabhu S. Khalsa 1 Cornelii Sandberg 1 Paul Movall 1 Vassili Tchersky
participants (1)
-
Bill Deegan