1 If you are reading this in the git repository, the contents
2 refer to *unreleased* changes since the last SCons release.
3 Past official release announcements appear at:
5 https://scons.org/tag/releases.html
7 ==================================================================
9 A new SCons release, 4.4.1, is now available on the SCons download page:
11 https://scons.org/pages/download.html
14 Here is a summary of the changes since 4.4.0:
16 NOTE: If you build with Python 3.10.0 and then rebuild with 3.10.1 (or higher), you may
17 see unexpected rebuilds. This is due to Python internals changing which changed
18 the signature of a Python Action Function.
24 - Added ValidateOptions() which will check that all command line options are in either
25 those specified by SCons itself, or by AddOption() in SConstruct/SConscript. It should
26 not be called until all AddOption() calls are completed. Resolves Issue #4187
27 - Added --experimental=tm_v2, which enables Andrew Morrow's NewParallel Job implementation.
28 This should scale much better for highly parallel builds. You can also enable this via SetOption().
31 DEPRECATED FUNCTIONALITY
32 ------------------------
34 - List anything that's been deprecated since the last release
36 CHANGED/ENHANCED EXISTING FUNCTIONALITY
37 ---------------------------------------
39 - Added -fsanitize support to ParseFlags(). This will propagate to CCFLAGS and LINKFLAGS.
40 - Calling EnsureSConsVersion() and EnsurePythonVersion() won't initialize
41 DefaultEnvironment anymore.
42 - The console message from the Chmod() action function now displays
43 octal modes using the modern Python syntax (0o755 rather than 0755).
44 - Migrated logging logic for --taskmastertrace to use Python's logging module. Added logging
45 to NewParallel Job class (Andrew Morrow's new parallel job implementation)
51 - Added missing newline to generated compilation database (compile_commands.json)
52 - A list argument as the source to the Copy() action function is now handled.
53 Both the implementation and the strfunction which prints the progress
54 message were adjusted.
55 - The Java Scanner processing of JAVACLASSPATH for dependencies (behavior
56 that was introduced in SCons 4.4.0) is adjusted to split on the system's
57 search path separator instead of on a space. The previous behavior meant
58 that a path containing spaces (e.g. r"C:\somepath\My Classes") would
59 lead to unexpected errors. If the split-on-space behavior is desired,
60 pre-split the value: instead of: env["JAVACLASSPATH"] = "foo bar baz"
61 use: env["JAVACLASSPATH"] = env.Split("foo bar baz")
62 There is no change in how JAVACLASSPATH gets turned into the -classpath
63 argument passed to the JDK tools.
64 - Ninja: Fix execution environment sanitation for launching ninja. Previously if you set an
65 execution environment variable set to a python list it would crash. Now it
66 will create a string joining the list with os.pathsep
67 - Fixed command line argument --diskcheck: previously a value of 'none' was ignored.
68 SetOption('diskcheck','none') is unaffected, as it did not have the problem.
73 - Changed the Taskmaster trace logic to use python's logging module.
74 - Add cache-debug messages for push failures.
75 - Added error message to handle the case when SCons attempts to retrieve all the targets
76 for a specified builder from the CacheDir, fails to do so, and then runs into an error
77 when deleting the files which were retrieved. Previously if this happened there were no
83 - SCons now has three requirements files: requirements.txt describes
84 requirements to run scons; requirements-dev.txt requirements to
85 develop it - mainly things needed to run the testsuite;
86 requirements_pkg.txt are the requirements to do a full build
87 (including docs build) with an intent to create the packages.
88 - Moved rpm and debian directories under packaging
89 - Added logic to help packagers enable reproducible builds into packaging/etc/. Please
90 read packaging/etc/README.txt if you are interested.
96 - Updated the --hash-format manpage entry.
97 - EnsureSConsVersion, EnsurePythonVersion, Exit, GetLaunchDir and
98 SConscriptChdir are now listed as Global functions only.
99 - Updated the docs for Glob.
100 - Updated SHELL_ENV_GENERATORS description and added versionadded indicator.
101 - JAVABOOTCLASSPATH, JAVACLASSPATH and JAVASOURCEPATH better document the
102 acceptable syntax for values, and how they will be interpreted,
103 including that JAVACLASSPATH will be scanned for dependencies.
104 Added note on the possibly surprising feature that SCons always passes
105 -sourcepath when calling javac, which affects how the class path is
106 used when finding sources.
107 - Updated the User Guide chapter on installation: modernized the notes
108 on Python installs, SCons installs, and having multiple SCons versions
109 present on a single system.
110 - Updated the User Guide chapter on variant directories with more
111 explanation, and the introduction of terms like "out of tree" that
112 may help in forming a mental model.
117 - Refactored SCons/Taskmaster into a package. Moved SCons/Jobs.py into that package.
118 NOTE: If you hook into SCons.Jobs, you'll have to change that to use SCons.Taskmaster.Jobs
119 - Refactored SCons.Util, which had grown quite large, to be a package,
120 not a single-file module. Change should be transparent: the same import
121 of SCons.Util and public symbols from it will continue to work, however
122 code which reaches directly in to grab private symbols (starting with
123 underscore) which moved to a submodule, that code will have to be adjusted,
124 as those are not imported to the package level (new SCons.Util.hashes has
125 some of these, which are used by existing unit tests).
127 Thanks to the following contributors listed below for their contributions to this release.
128 ==========================================================================================
131 git shortlog --no-merges -ns 4.4.0..HEAD