fix typo
[scons.git] / RELEASE.txt
blob32094bf0680b6966284b06061bf691847a32214d
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.
21 NEW FUNCTIONALITY
22 -----------------
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)
48 FIXES
49 -----
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.
70 IMPROVEMENTS
71 ------------
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
78   errors or warnings.
80 PACKAGING
81 ---------
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.
93 DOCUMENTATION
94 -------------
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.
114 DEVELOPMENT
115 -----------
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 ==========================================================================================
129 .. code-block:: text
131     git shortlog --no-merges -ns 4.4.0..HEAD