summaryrefslogtreecommitdiffstats
path: root/RELEASE.txt
blob: 1096dbf5998cd1b65641f0b9ef94f5b43955d00c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
A new SCons release, 4.3.1, is now available
on the SCons download page:

      https://scons.org/pages/download.html


Here is a summary of the changes since 4.3.1:

NOTE: If you build with Python 3.10.0 and then rebuild with 3.10.1 (or higher), you may
      see unexpected rebuilds. This is due to Python internals changing which changed
      the signature of a Python Action Function.


NEW FUNCTIONALITY
-----------------

- Added MSVC_USE_SCRIPT_ARGS variable to pass arguments to MSVC_USE_SCRIPT.
- Added Configure.CheckMember() checker to check if struct/class has the specified member.
- Added SHELL_ENV_GENERATOR construction variables. This variable allows the user to Define
  a function which will be called to generate or alter the execution environment which will
  be used in the shell command of some Action.


DEPRECATED FUNCTIONALITY
------------------------

- List anything that's been deprecated since the last release

CHANGED/ENHANCED EXISTING FUNCTIONALITY
---------------------------------------

- On Windows, %AllUsersProfile%\scons\site_scons is now the default "system"
  location for a site_scons. %AllUsersProfile%\Application Data\scons\site_scons
  will continue to work. There does not seem to be any convention to use
  an "Application Data" subdirectory here.
- Action._subproc() can now be used as a python context manager to ensure that the
  POpen object is properly closed.
- SCons help (-H) no longer prints the "ignored for compatibility" options,
  which are still listed in the manpage.
- Help is now sensitive to the size of the terminal window: the width of the
  help text will scale to wider (or narrower) terminals than 80 characters.
- Ninja: Changed generated build.ninja file to run SCons only build Actions via
  a SCons Deamon. Added logic for starting and connecting to SCons daemon (currently
  only used for ninja)
- The change to "content" and "content-timestamp" Decider names is reflected
  in the User Guide as well, since the hash function may be other than md5
  (tidying up from earlier change)
- Update ninja file generation to only create response files for build commands
  which exceed MAXLINELENGTH
- Update the debug output written to stdout for MSVC initialization which is enabled
  by setting SCONS_MSCOMMON_DEBUG=- to use the logging module. Also changed the debug
  output format written to stdout to include more information about the source for each
  message of MSVC initialization debugging output.  A single space was added before the
  message for all debugging output records written to stdout and to files.
- The build argument (i.e., x86) is no longer passed to the MSVC 6.0 to 7.1 batch
  files.  This may improve the effectiveness of the internal msvc cache when using 
  MSVC detection and when bypassing MSVC detection as the MSVC 6.0 to 7.1 batch files 
  do not expect any arguments.
- Propagate the OS and windir environment variables from the system environment to the msvc
  environment.  The OS and windir environment variables are used in the MSVC 6.0 batch file
  and the SDK 6.0-7.1 SetEnv.cmd batch files.  Inclusion of the OS and windir environment
  variables eliminates some partial paths and warnings generated by the MSVC 6.0 and SDK
  6.0-7.1 batch files when the variables are not defined.
  Note: Attempting to run the SDK 6.0-7.1 batch files directly via MSVC_USE_SCRIPT can lead to
        build failures and/or incomplete build environments.  The SDK 6.0-7.1 batch files
        require delayed expansion to be enabled which is currently not supported and is
        typically not enabled by default on the host system. The batch files may also require
        environment variables that are not included by default in the msvc environment.

FIXES
-----

- Fix a number of Python ResourceWarnings which are issued when running SCons and/or it's tests
  with python 3.9 (or higher)
- Ninja: Fix issue where Configure files weren't being properly processed when build run
  via ninja.
- Fixed crash in C scanner's dictify_CPPDEFINES() function which happens if
  AppendUnique is called on CPPPATH. (Issue #4108).
- Added default values for source and target arguments to _defines() function. This
  is used to expand CPPDEFINES (and others). Previous change added those arguments
  with no defaults, so old usage where _defines() was called without source and target
  arguments would yield an exception. This issue was found via qt4 and qt5 tools in
  scons-contrib https://github.com/SCons/scons-contrib/issues/45
- Fix issue where if you only had mingw installed on a Windows system and no MSVC compiler, and
  did not explicitly request the mingw tool, mingw tool initialization would fail and set the
  default compiler to MSVC which wasn't installed, yielding broken build.
  Updated mingw tool so that the generate and exists methods use the same mingw search paths
  (issue #4134).
- Ninja: Added NINJA_GENERATED_SOURCE_ALIAS_NAME which allows user to specify an
  Alias() which the ninja tool can use to determine which files are generated sources.
  If this is not set by the user then the ninja tool will still dynamically determine
  which files are generated sources based on NINJA_GENERATED_SOURCE_SUFFIXES, and create
  a phony target _ninja_generated_sources. Generated sources will be built first by
  ninja. This is needed because ninja cannot determine which generated sources are
  required by other build targets.  Code contributed by MongoDB.
- Added special case for ninja scons daemon to work in win32 python3.6 environments.
  This particular environment does a bad job managing popen standard file handles, so
  some special workarounds are needed.
- Added user configurable setting of ninja depfile format via NINJA_DEPFILE_PARSE_FORMAT.
  Now setting NINJA_DEPFILE_PARSE_FORMAT to [msvc,gcc,clang] can force the ninja expected
  format. Compiler tools will also configure the variable automatically.
- Fix issue where Express versions of the MSVC compiler were not detected due to differences
  in initial msvc detection and msvc batch file determination when configuring the build
  environment.  This could lead to build failures when only an MSVC Express instance is installed
  and the MSVC version is not explicitly specified (issue #2668 and issue #2697).
- Restore the ability of the content-timestamp decider to see that a
  a source which is a symlink has changed if the file-system target of
  that link has been modified (issue #3880)
- Fix typo in ninja scons daemon startup which causes ConnectionRefusedError to not retry 
  to connect to the server during start up.
- The system environment variable names imported for MSVC 7.0 and 6.0 were updated to be
  consistent with the variables names defined by their respective installers.  This fixes an
  error caused when bypassing MSVC detection by specifying the MSVC 7.0 batch file directly.

IMPROVEMENTS
------------

- Verify that a user specified msvc script (via MSVC_USE_SCRIPT) exists and raise an
  exception immediately when the user specified msvc script does not exist.
- Add cache-debug messages for push failures.
- Added ninja mingw support and improved ninja CommandGeneratorAction support.
- Command-line help is now sensitive to the size of the terminal window: the
  width of the help text will scale for terminals other than 80 chars wide.
- Refactor the msvc code so that the same data structures are used during initial msvc detection
  and msvc batch file determination when configuring the build environment.  Simplify the msvc
  code by eliminating special case handling primarily due to the differences between the full
  versions and express versions of visual studio.
- Updated ninja scons daemon scripts to output errors to stderr as well as the daemon log.

PACKAGING
---------

- Added project_url for mailing lists and Discord
- Updated setup.cfg to remove Python 3.5 and add Python 3.10

DOCUMENTATION
-------------

- List any significant changes to the documentation (not individual
  typo fixes, even if they're mentioned in src/CHANGES.txt to give
  the contributor credit)

DEVELOPMENT
-----------

- List visible changes in the way SCons is developed

Thanks to the following contributors listed below for their contributions to this release.
==========================================================================================
.. code-block:: text

    git shortlog --no-merges -ns 4.3.0..HEAD