Merge pull request #4665 from mwichmann/doc/source-subst-special
[scons.git] / RELEASE.txt
blob19927a3c2b78c7d2bf37dda2d76086d3e72de1df
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 NEW FUNCTIONALITY
17 -----------------
19 - List new features (presumably why a checkpoint is being released)
21 DEPRECATED FUNCTIONALITY
22 ------------------------
24 - List anything that's been deprecated since the last release
26 CHANGED/ENHANCED EXISTING FUNCTIONALITY
27 ---------------------------------------
29 - List modifications to existing features, where the previous behavior
30   wouldn't actually be considered a bug
32 - Removed Python 3.6 support.
34 - Override environments, created when giving construction environment
35   keyword arguments to Builder calls (or manually, through the
36   undocumented Override method), were modified not to "leak" on item deletion.
37   The item will now not be deleted from the base environment.
39 - Added support for tracking beamer themes in the LaTeX scanner.
41 - MSVS: msvs project files are always generated before the corresponding
42   msvs solution files. This changes the behavior of clean for a project
43   generated with auto_build_solution disabled and explicit solution
44   generation: when the solution files are cleaned, the project files are
45   also cleaned.  The tests for vs 6.0-7.1 were updated accordingly.
47 - MSVS: Add an optional keyword argument, auto_filter_projects, to
48   MSVSSolution. Accepted values for auto_filter_projects are:
49   - None [default]: raise an exception when solution file names or nodes
50     are detected in the projects argument list.
51   - True or evaluates True: automatically remove solution file names and
52     nodes from the project argument list.
53   - False or evaluates False: leave solution file names and nodes in the
54     project argument list.  An exception is not raised.
55   Solution file names and/or nodes in the project argument list cause
56   erroneous Project records to be produced in the generated solution file.
57   As a convenience, a user may elect to ignore solution file names and nodes
58   in the projects argument list rather than manually removing solution file
59   names and nodes from the MSVSProject return values.
61 - SCons C preprocessor:
62   - Update the optional integer suffixes to include the z|Z and wb|WB
63     suffixes.
64   - Add support for binary integer constants.
65   - Add support for octal integer constants.  Previously, octal integers
66     were evaluated as decimal integers.  A literal zero (0) is treated as an
67     octal number.
68   - Change the method for attempted conversion of a define expansion value
69     to an integer from a literal to a constant expression evaluation.
71 - Add a tag to each CacheDir to let systems ignore backing it up
72   (per https://bford.info/cachedir/). Update the way a CacheDir
73   is created, since it now has to create two files.
75 - The Dictionary method now has an as_dict flag. If true, Dictionary
76   always returns  a dict. The default remains to return different
77   types depending on whether zero, one, or multiple construction
79 - A Variables object now makes available a "defaulted" attribute,
80   a list of variable names that were set in the environment with
81   their values taken from the default in the variable description
82   (if a variable was set to the same value as the default in one
83   of the input sources, it is not included in this list).
85 - If a build Variable is created with no aliases, the name of the
86   Variable is no longer listed in its aliases. Internally, the name
87   and aliases are considered together anyway so this should not have
88   any effect except for being visible to custom help text formatters.
90 FIXES
91 -----
93 - PackageVariable now does what the documentation always said it does
94   if the variable is used on the command line with one of the enabling
95   string as the value: the variable's default value is produced (previously
96   it always produced True in this case).
98 - Temporary files created by TempFileMunge() are now cleaned up on
99   scons exit, instead of at the time they're used.  Fixes #4595.
101 - AddOption now correctly adds short (single-character) options.
102   Previously an added short option would always report as unknown,
103   while long option names for the same option worked. Short options
104   that take a value require the user to specify the value immediately
105   following the option, with no spaces (e.g. -j5 and not -j 5).
107 - Fix a problem with compilation_db component initialization - the
108   entries for assembler files were not being set up correctly.
110 - On Darwin, PermissionErrors are now handled while trying to access
111   /etc/paths.d. This may occur if SCons is invoked in a sandboxed environment
112   (such as Nix).
114 - Added error handling when creating MSVC detection debug log file specified
115   by SCONS_MSCOMMON_DEBUG.
117 - MSVS: Modify select msvs test scripts to run on platforms not supported by
118   the msvs/msvc tool implementation via a default host architecture for
119   unsupported platforms.
121 - MSVS: Fixed early loop exit in select msvs test scripts.  Select msvs test
122   scripts were being invoked for msvc version 8.0 only.  Additional msvs
123   tool and test changes due to the msvs test scripts being run for all msvc
124   versions (i.e., minor test and tool issues went undetected).
126 - MSVS: for variant build configurations, msvs solution files are
127   generated in the source directory and a placeholder file is generated in
128   the variant build directory.  This mirrors the behavior of generated
129   msvs project files.
131 - MSVS: msvs project files are generated before the corresponding msvs
132   solution file.  User-specified project GUIDs should now be correctly
133   written to the solution file.
135 - SCons C preprocessor: Preserve literals that contain valid integer
136   substring specifications.  Previously, the integer suffix could be
137   stripped from a symbol that contained an integer and suffix substring.
139 - SCons C preprocessor: Update the optional integer suffixes to include
140   support for the alternate orderings of unsigned with long or long long as
141   defined in the c/cpp grammar.
143 - SCons C preprocessor: Update the optional integer suffixes for case
144   insensitive specifications as defined in the c/cpp grammar.
146 - Fix nasm test for missing include file, cleanup.
148 - Skip running a few validation tests if the user is root and the test is
149   not designed to work for the root user.
151 - Make sure unknown variables from a Variables file are recognized
152   as such. Previously only unknowns from the command line were
153   recognized (issue #4645).
155 - Update ninja tool to use ninja.BIN_DIR to find pypi packaged ninja binary.
156   python ninja package version 1.11.1.2 changed the location and previous
157   logic no longer worked.
159 - The (optional) C Conditional Scanner now does limited macro
160   replacement on the contents of CPPDEFINES, to improve finding deps
161   that are conditionally included.  Previously replacement was only
162   done on macro definitions found in the file being scanned.
163   Only object-like macros are replaced (not function-like), and
164   only on a whole-word basis; recursion is limited to five levels
165   and does not error out if that limit is reached (issue #4523).
167 - Minor modernization: make use of stat object's st_mode, st_mtime
168   and other attributes rather than indexing into stat return.
170 - Ninja's TEMPLATE rule pool changed from `local_pool` to `install_pool`
171   hoping it will fix a race condition that can occurs when Ninja defers
172   to SCons to build.
174 - Renamed env.Help() & Help()'s argument `keep_local` to `local_only`, previously the documentation
175   specified `local_only`, but the code and tests were using `keep_local`. The functionality
176   more closely matches local only.  NOTE: It doesn't seem like any code in the wild was using
177   local_only as we'd not received any reports of such until PR #4606 from hedger.
180 IMPROVEMENTS
181 ------------
183 - List improvements that wouldn't be visible to the user in the
184   documentation:  performance improvements (describe the circumstances
185   under which they would be observed), or major code cleanups
187 - For consistency with the optparse "add_option" method, AddOption accepts
188   an SConsOption object as a single argument (this failed previously).
189   Calling AddOption with the full set of arguments (option names and
190   attributes) to set up the option is still the recommended approach.
192 - Add clang and clang++ to the default tool search orders for POSIX
193   and Windows platforms. These will be searched for after gcc and g++,
194   respectively. Does not affect explicitly requested tool lists.  Note:
195   on Windows, SCons currently only has builtin support for clang, not
196   for clang-cl, the version of the frontend that uses cl.exe-compatible
197   command line switches.
199 PACKAGING
200 ---------
202 - List changes in the way SCons is packaged and/or released
204 DOCUMENTATION
205 -------------
207 - List any significant changes to the documentation (not individual
208   typo fixes, even if they're mentioned in src/CHANGES.txt to give
209   the contributor credit)
211 - Some manpage cleanup for the gettext and pdf/ps builders.
213 - Some clarifications in the User Guide "Environments" chapter.
215 - Clarify documentation of Repository() in manpage and user guide.
217 - Many grammatical and spelling fixes in the documentation.
219 - Update Clean and NoClean documentation.
221 - Improved Variables documentation.
223 - Update the User Guide Command() example which now shows a target name
224   being created from '${SOURCE.base}.out' to use a valid special
225   attribute and to explain what's being done in the example.
227 DEVELOPMENT
228 -----------
230 - List visible changes in the way SCons is developed
232 - Ruff/Mypy: Excluded items now synced.
234 - Ruff: Linter includes new rules - `FA`, `UP006`, `UP007`, and `UP037` - to
235   detect and upgrade legacy type-hint syntax.
237 - Removed "SCons.Util.sctyping.py", as the functionality can now be substituted
238   via top-level `from __future__ import annotations`.
240 - Implemented type hints for Nodes.
242 - Added TestSCons.NINJA_BINARY to TestSCons to centralize logic to find ninja binary
244 - Refactored SCons.Tool.ninja -> SCons.Tool.ninja_tool, and added alias so env.Tool('ninja')
245   will still work. This avoids conflicting with the pypi module ninja.
247 Thanks to the following contributors listed below for their contributions to this release.
248 ==========================================================================================
249 .. code-block:: text
251     git shortlog --no-merges -ns 4.0.1..HEAD