[ci skip] minor updates to CHANGE/RELEASE
[scons.git] / RELEASE.txt
blob7f706bfea3f8edd9c1ef9edf7045b365941fd13a
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.5.3, 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.5.2:
16 NEW FUNCTIONALITY
17 -----------------
19 - D compilers : added support for generation of .di interface files.
20   New variables DI_FILE_DIR, DI_FILE_DIR_PREFIX, DI_FILE_DIR_SUFFIX,
21   DI_FILE_SUFFIX.
22 - MSVC: If available, native arm64 tools will be used on arm64 hosts for VS2022.
23 - MSVC: If necessary, automatically define VSCMD_SKIP_SENDTELEMETRY for VS2019 and later
24   on arm64 hosts when using an arm (32-bit) build of python to prevent a powershell
25   error pop-up window (powershell dll not found).
27 DEPRECATED FUNCTIONALITY
28 ------------------------
30 - List anything that's been deprecated since the last release
32 CHANGED/ENHANCED EXISTING FUNCTIONALITY
33 ---------------------------------------
35 - When debugging (--debug=pdb), the filenames SConstruct and SConscript
36   are now recognized when manipulating breakpoints. Previously,
37   only a full pathname to an sconscript file worked, as pdb requires
38   a .py extension to open a file that is not an absolute path.
39 - Three unused non-public methods of the Environment Base class
40   were dropped: get_src_sig_type, get_tgt_sig_type, _changed_source.
41   These were unused remnants of the previously removed SourceSignatures
42   and TargetSignatures features (dropped in 3.1.2).
43 - The --debug flag now has a 'json' option which will write information
44   generated by --debug={count, memory, time, action-timestamps} and about
45   the build.
46 - Obsoleted YACCVCGFILESUFFIX, it's being replaced by YACC_GRAPH_FILE_SUFFIX.
47   If YACC_GRAPH_FILE_SUFFIX is not set, it will respect YACCVCGFILESUFFIX.
48 - The yacc tool now understands the bison behavior of --header, --defines
49   and --graph being called without an option-argument as being synonyms
50   for -d (first two) and -g. -H also recognized as a synonym for -d.
51   Default value for $YACC_GRAPH_FILE_SUFFIX changed to '.gv' to match
52   current bison default (since bison 3.8). Set this variable to '.dot'
53   if using byacc. Fixes #4326 and #4327.
54 - MSVC: When trying to find a valid msvc batch file, the existence of the msvc compiler
55   executable is verified for VS6 to VS2015 to avoid executing the msvc batch file when
56   the host/target tool is known not to be present. Always check that the msvc compiler
57   executable is found on the msvc script environment path after running the msvc batch
58   file.  This is predominately needed for recent versions of Visual Studio where the msvc
59   batch file exists but an individual msvc toolset may not support the host/target
60   architecture combination.  For example, when using VS2022 on arm64, the arm64 native
61   tools are only installed for the 14.3x toolsets.
62 - Extend range of recognized Java versions to 20.
63 - Builder calls (like Program()) now accept pathlib objects in source lists.
64 - The Help() function now takes an additional keyword argument keep_local:
65   when starting to build a help message, you can now retain help from AddOption
66   calls (options added for the project_, but omit help for SCons' own cmdline
67   options with "Help(newtext, append=True, local_only=True)".
68 - Calling SConscript() with a nonexistent file is now an error.
69   Previously this succeeded - prior to SCons 3.0, silently; since 3.0, with
70   a warning. Developers can still instruct such an SConscript() call not
71   to fail by being explicit: pass keyword argument "must_exist=False".
72   The "--warn=missing-sconscript" commandline option is no longer available
73   as the warning was part of the transitional phase.
74 - Add missing directories to searched paths for mingw installs
76 FIXES
77 -----
79 - Fixed: when using the mingw tool, if an msys2 Python is used (os.sep
80   is '/' rather than the Windows default '\'), certain Configure checks
81   could fail due to the construction of the path to run the compiled check.
82 - C scanner's dictifyCPPDEFINES routine did not understand the possible
83   combinations of CPPDEFINES - not aware of a "name=value" string either
84   embedded in a sequence, or by itself.  The conditional C scanner thus
85   did not always properly apply the defines. The regular C scanner does
86   not use these, so was not affected.  [fixes #4193]
87 - MSVC: The installed msvc list is calculated once and cached.  There was an indirect
88   dependency on the target architecture when determining if each version of msvc
89   was installed based on the initial invocation.  It was possible that an msvc instance
90   would not be considered installed due to the tools for the requested target
91   architecture not being installed.  The initial call to construct the installed msvc
92   list now uses an undefined target architecture to evaluate all potential host/target
93   combinations when evaluating if the msvc tools are installed for a given Visual Studio
94   installation.
95 - MSVC: Erroneous construction of the installed msvc list (as described above) caused an
96   index error in the msvc support code.  An explicit check was added to prevent indexing
97   into an empty list.  Fixes #4312.
98 - MSCommon: Test SConfTests.py would fail when mscommon debugging was enabled via the
99   MSVC_MSCOMMON_DEBUG environment variable.  The mscommon logging filter class registered
100   with the python logging module was refactored to prevent test failure.
101 - MSVS: Add arm64 to the MSVS supported architectures list for VS2017 and later
102   to be consistent with the current documentation of MSVS_ARCH.
103 - MSCommon: Added more error handling while reading msvc config cache.
104   (Enabled/specified by SCONS_CACHE_MSVC_CONFIG).
105   The existing cache will be discarded if there's a decode error reading it.
106   It's possible there's a race condition creating this issue it in certain CI builds.
108 IMPROVEMENTS
109 ------------
111 - Now tries to find mingw if it comes from Chocolatey install of msys2.
113 PACKAGING
114 ---------
116 - The build of scons now matches the help text displayed - the targets
117   listed there can all now be given as a target to build (except for
118   the two full source balls; the source tar.gz is currently generated directly
119   by the GitHub release process).
121 DOCUMENTATION
122 -------------
124 - Aligned manpage signature for Alias function to match implementation -
125   if the previous *targets* parameter had been used as a keyword argument,
126   the results would be incorrect (does not apply to positional argument
127   usage, which had no problem).
128 - Changed the message about scons -H to clarify it shows built-in options only.
129 - Cachedir description updated.
131 DEVELOPMENT
132 -----------
134 - SCons test runner now uses pathlib to normalize and compare paths
135   to test files, which allows test lists, exclude lists, and tests on
136   the command line to "not care" about the OS convention for pathname
137   separators.
138 - Class ActionBase is now an abstract base class to more accurately
139   reflect its usage. Derived _ActionAction inherits the ABC, so it
140   now declares (actually raises NotImplementedError) two methods it
141   doesn't use so it can be instantiated by unittests and others.
142 - Added more type annotations to internal routines.
143 - Cleaned up dblite module (checker warnings, etc.).
145 Thanks to the following contributors listed below for their contributions to this release.
146 ==========================================================================================
147 .. code-block:: text
149     git shortlog --no-merges -ns 4.5.2..HEAD