Re: GNU make 4.3 released!

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Re: GNU make 4.3 released!

Nicholas Clark
As a user, I just wanted to say congrats and thanks to the GNU Make team
for 4.3!

I'm very excited about the new grouped-target and EXTRA_PREREQS features.
Those are both going to be very useful. Good work folks.

-Nick


On Sun, Jan 19, 2020 at 3:46 PM Paul Smith <[hidden email]> wrote:

>     --------------------------------------------------------------------
>     GNU make is a tool which controls the generation of executables and
>     other non-source files of a program from the program's source files.
>
>     You can learn more at: http://www.gnu.org/software/make/
>     --------------------------------------------------------------------
>
> The next stable release of GNU make, 4.3, is available now for download:
>
>     d5c40e7bd1e97a7404f5d3be982f479a  make-4.3.tar.lz (1.3M)
>     fc7a67ea86ace13195b0bce683fd4469  make-4.3.tar.gz (2.3M)
>
> You can obtain a copy from:           http://ftp.gnu.org/gnu/make/
> You can choose a nearby mirror:       http://ftpmirror.gnu.org/make/
> A list of mirror sites is available:  http://www.gnu.org/order/ftp.html
>
> - NEWS ----------------------------------------------------------------
>
> Version 4.3 (19 Jan 2020)
>
> A complete list of bugs fixed in this version is available here:
>
>
> https://sv.gnu.org/bugs/index.php?group=make&report_id=111&fix_release_id=108&set=custom
>
> * WARNING: Backward-incompatibility!
>   Number signs (#) appearing inside a macro reference or function
> invocation
>   no longer introduce comments and should not be escaped with backslashes:
>   thus a call such as:
>     foo := $(shell echo '#')
>   is legal.  Previously the number sign needed to be escaped, for example:
>     foo := $(shell echo '\#')
>   Now this latter will resolve to "\#".  If you want to write makefiles
>   portable to both versions, assign the number sign to a variable:
>     H := \#
>     foo := $(shell echo '$H')
>   This was claimed to be fixed in 3.81, but wasn't, for some reason.
>   To detect this change search for 'nocomment' in the .FEATURES variable.
>
> * WARNING: Backward-incompatibility!
>   Previously appending using '+=' to an empty variable would result in a
> value
>   starting with a space.  Now the initial space is only added if the
> variable
>   already contains some value.  Similarly, appending an empty string does
> not
>   add a trailing space.
>
> * NOTE: Deprecated behavior.
>   Contrary to the documentation, suffix rules with prerequisites are being
>   treated BOTH as simple targets AND as pattern rules.  Further, the
>   prerequisites are ignored by the pattern rules.  POSIX specifies that in
>   order to be a suffix rule there can be no prerequisites defined.  In this
>   release if POSIX mode is enabled then rules with prerequisites cannot be
>   suffix rules.  If POSIX mode is not enabled then the previous behavior is
>   preserved (a pattern rule with no extra prerequisites is created) AND a
>   warning about this behavior is generated:
>     warning: ignoring prerequisites on suffix rule definition
>   The POSIX behavior will be adopted as the only behavior in a future
> release
>   of GNU make so please resolve any warnings.
>
> * New feature: Grouped explicit targets
>   Pattern rules have always had the ability to generate multiple targets
> with
>   a single invocation of the recipe.  It's now possible to declare that an
>   explicit rule generates multiple targets with a single invocation.  To
> use
>   this, replace the ":" token with "&:" in the rule.  To detect this
> feature
>   search for 'grouped-target' in the .FEATURES special variable.
>   Implementation contributed by Kaz Kylheku <[hidden email]>
>
> * New feature: .EXTRA_PREREQS variable
>   Words in this variable are considered prerequisites of targets but they
> are
>   not added to any of the automatic variable values when expanding the
>   recipe.  This variable can either be global (applies to all targets) or
>   a target-specific variable.  To detect this feature search for
> 'extra-prereqs'
>   in the .FEATURES special variable.
>   Implementation contributed by Christof Warlich <[hidden email]>
>
> * Makefiles can now specify the '-j' option in their MAKEFLAGS variable and
>   this will cause make to enable that parallelism mode.
>
> * GNU make will now use posix_spawn() on systems where it is available.
>   If you prefer to use fork/exec even on systems where posix_spawn() is
>   present, you can use the --disable-posix-spawn option to configure.
>   Implementation contributed by Aron Barath <[hidden email]>
>
> * Error messages printed when invoking non-existent commands have been
> cleaned
>   up and made consistent.
>
> * The previous limit of 63 jobs under -jN on MS-Windows is now
>   increased to 4095.  That limit includes the subprocess started by
>   the $(shell) function.
>
> * A new option --no-silent has been added, that cancels the effect of the
>   -s/--silent/--quiet flag.
>
> * A new option -E has been added as a short alias for --eval.
>
> * All wildcard expansion within GNU make, including $(wildcard ...), will
> sort
>   the results.  See https://savannah.gnu.org/bugs/index.php?52076
>
> * Interoperate with newer GNU libc and musl C runtime libraries.
>
> * Performance improvements provided by Paolo Bonzini <[hidden email]>
>
> GNU make Developer News
>
> * Import the GNU standard bootstrap script to replace the hand-rolled
>   "make update" method for building code from a GNU make Git repository.
>
> * Rework the source distribution to move source files into the src/*
>   subdirectory.  This aligns with modern best practices in GNU.
>
> * Replace local portability code with Gnulib content.  Unfortunately due
> to a
>   problem with Gnulib support for getloadavg, this forces a requirement on
>   Automake 1.16 or above in order to build from Git.  See README.git.
>
> - Log -----------------------------------------------------------------
>
> Aron Barath (4):
>       * src/makeint.h: Use pid_t to store PIDs, of int.
>       * configure.ac: Check for spawn.h and posix_spawn()
>       * configure.ac: Check for posix_spawnattr_setsigmask
>       * job.c (child_execute_job): Prefer posix_spawn() over fork()/exec()
>
> Ben Hutchings (1):
>       * src/arscan.c (ar_scan): [SV 54395] Allow long names in archives.
>
> Ben Wijen (2):
>       * bootstrap.bat: Fix typo in batch file name
>       * src/misc.c (spin): On WINDOWS32 use Sleep() instead of sleep()
>
> Bernhard M. Wiedemann (1):
>       * src/read.c (parse_file_seq): [SV 52076] Sort wildcard results.
>
> Christian Eggers (1):
>       [SV 56449] (Windows) Use slow path if '%' appears in the command
>
> Christoph Schulz (1):
>       * main.c (switches): [SV 48809] Accept obsolete jobserver flag.
>
> Dmitry Goncharov (1):
>       * tests/test_driver.pl: Enhance error messages
>
> Eli Zaretskii (9):
>       Avoid compiler warnings with MinGW runtime 3.22.2
>       Update the Guile version tested with the MS-Windows build.
>       Only include strings.h in MinGW builds
>       * NEWS: Mention the extended support for -jN on MS-Windows.
>       [SV 50021] Avoid infloop on MS-Windows with short scripts
>       Avoid crashes when SHELL=abcde is specified on the command line
>       Fix checking existence of directories on MS-Windows
>       Fix MS-Windows MinGW build
>       Revert "[SV 56449] (Windows) Use slow path if '%' appears in the
> command"
>
> Enrique Olaizola (2):
>       * tests/run_make_tests.pl: [SV 50902] Find Perl modules
>       * read.c (read_all_makefiles): [SV 50909] Add MAKEFILES to strcache
>
> Florian Weimer (1):
>       * configure.ac (HAVE_GETTIMEOFDAY): Avoid undeclared exit function.
>
> Jaak Ristioja (2):
>       * w32/*/dirent.*: [SV 49111] Remove unused telldir()
>       * expand.c (variable_append): [SV 49113] Possible null ptr deref
>
> Jouke Witteveen (3):
>       * src/implicit.c (pattern-search): Remove unneeded 'dir' variable
>       * src/implicit.c (pattern_search): Set lastslash correctly
>       [SV 54161] Fix second expansion of $* for paths
>
> Kaz Kylheku (1):
>       [SV 8297] Implement "grouped targets" for explicit rules.
>
> Marc Ullman (1):
>       Support more than 63 jobs on MS-Windows
>
> Martin Dorey (2):
>       * main.c (main): [SV 49935] Fix uninitialized variable.
>       * job.c (child_execute_job): [SV 49938] Avoid spurious GCC warning.
>
> Mike Haboustak (1):
>       [SV 28456] Don't override $< when no default rule has been defined
>
> Ola Olsson (1):
>       * doc/make.texi: Updated language
>
> Paolo Bonzini (6):
>       Use strchr/memmove in collapse_continuations.
>       Use strchr for simple case of find_char_unquote.
>       Use Jenkins hash.
>       Remove MAP_PERCENT as strchr is faster.
>       Speedup parsing of functions.
>       Do not use STOP_SET for singleton compares.
>
> Paul Eggert (7):
>       glob: Do not assume glibc glob internals.
>       Pacify Oracle Studio 12.6
>       Pacify Oracle Studio 12.6 in init_switches
>       Remove useless code in eval
>       Port grouped_targets test to Solaris 10
>       Pacify Oracle Studio c99
>       Port functions/shell test to Solaris 10
>
> Paul Smith (172):
>       * Update to pre-release version 4.2.90.
>       * README.W32.template: Update the build documentation.
>       Resolve issues discovered by static code analysis.
>       * maintMakefile: Update default GPG ID for new key.
>       * doc/make.texi: [SV 48951] Fix documentation typo.
>       * README.template: Clarify some items in the README
>       * po/LINGUAS: Added Serbian translation.
>       * po/Makevars, makeint.h, debug.h: Add xgettext C format flags.
>       Add more GCC warnings to the maintainer build.
>       [SV 49116] Check potential null pointer dereference.
>       [SV 45477] [SV 49115] Parse DOS/Windows drivespecs correctly.
>       [SV 49114] Remove support for the NO_FLOAT compile flag.
>       * read.c (get_next_mword): [SV 49865] Make fallthrough explicit.
>       * main.c (main): [SV 40234] Show correct error message.
>       [SV 20513] Un-escaped # are not comments in function invocations
>       Portability changes for the test suite.
>       [SV 40236] Handle included file open failures properly.
>       * main.c (switches): Add --no-silent to undo -s options.
>       * main.c (switches): Add -E as an alias for --eval.
>       Add test suite support to Windows
>       * doc/make.texi: [SV 50304] Add missing close parenthesis.
>       * configure.ac: [SV 50648] Detect Guile 2.2 packages.
>       [SV 50300] Use CFLAGS value of "-O1" in POSIX mode.
>       Clean up close-on-exec, particularly with jobserver pipes.
>       [SV 13651] Handle out-of-memory conditions slightly more gracefully.
>       Rename output_tmpfile() to a misc function get_tmpfile()
>       * po/LINGUAS: Add support for traditional Chinese (zh_TW)
>       * NEWS: Do not insert a space during '+=' if the value is empty.
>       * tests/test_driver.pl: Useful error if given an invalid test name.
>       [SV 50823] Support filenames containing '$' in MAKEFILE_LIST
>       [SV 51159] Use a non-blocking read with pselect to avoid hangs.
>       * function.c (shell_completed): [SV 51014] Add signal to .SHELLSTATUS
>       [SV 51400] Only unblock fatal signals after child invocation
>       * variable.c (create_pattern_var): [SV 51266] Create with xcalloc().
>       Remove uses of unnecessary "register" keyword.
>       Update copyright statements for 2017.
>       Compute load from number of running processes.
>       * function.c (func_if): Check the first character of condition.
>       * job.c (child_error): Modify error message string.
>       * main.c (main): [SV 48274] Allow -j in makefile MAKEFLAGS variable.
>       * Makefile.am: Add jhelp.pl to remote test setup.
>       Remove unsupported build facilities.
>       * tests/scripts/features/output-sync: Revert bad change in
> 0c5a9f9b92a
>       * job.c: Add "command" as a known shell built-in.
>       Rework directory structure to use GNU-recommended "src" directory.
>       * configure.ac: Support GLIBC glob interface version 2
>       * build_w32.bat: Support Visual Studio 17.
>       * scripts/copyright-update: Maintainer's script for copyright mgmt
>       * all: Update Copyright statements for 2018
>       * Makefile.ami, glob/Makefile.ami: Remove obsolete files
>       Convert GNU make to use the gnulib portability library
>       * function.c(abspath): Use memcpy() to avoid GCC 8.1 warnings
>       * maintMakefile: Preserve comments during compilation
>       Update regression tests for Windows.
>       Resolve most of the Windows Visual Studio warnings.
>       Enhance the Basic.mk environment to work with Gnulib
>       * src/read.c(unescape_char): Use C comments not C++ comments.
>       Queue failed fork() (etc.) to be handled like any other failed job.
>       Clean up errors for invalid commands and add regression tests.
>       * src/job.c (child_execute_job): Clean up posix_spawn invocation
>       * configure.ac: Add --disable-posix-spawn option
>       * lib/glob.c (glob_in_dir): [SV 53465] Allow symlinks to directories.
>       * tests/scripts/features/archives: [SV 54395] Test long archive
> names.
>       * tests/scripts/functions/wildcard: [SV 52018] Test dangling symlink.
>       * src/job.c (reap_children): Fix inverted win/lose message.
>       [SV 54233] Preserve higher command_state values on also_make targets.
>       * NEWS: Update for the latest changes.
>       [SV 40657] Don't create pattern rules for suffix rules with deps.
>       * doc/make.text: [SV 54360] Weaken "obsolete" language in the manual.
>       * doc/make.texi: [SV 48970] Clarify the value of $?
>       * src/main.c (main): Set jobserver permissions before re-execing
>       * doc/make.texi (Remaking Makefiles): [SV 52273] Note MAKE_RESTARTS
>       Change output_write() to writebuf(), add readbuf() helper.
>       * src/arscan.c (ar_member_touch): [SV 54533] Stop \0 in archive
> headers
>       Add developer customizations
>       * po/LINGUAS: Add Portuguese translation
>       * variable.c (define_variable_in_set): Clear new structs
>       Update copyright statements for 2019
>       [SV 54740] Ensure .SILENT settings do not leak into sub-makes
>       * src/hash.c (jash_string): [SV 54980] Avoid ASAN error
>       [SV 54549] Don't free used set_lists during merge
>       Update developer customizations
>       [SV 46013] Allow recursive variable overrides from Makefiles
>       * doc/make.texi: [SV 54116] Document whitespace removal trick.
>       * doc/make.texi: [SV 51974] Clarify makefile parsing operations.
>       Switch to the gnulib version of strerror()
>       * src/read.c (parse_file_seq): Update comments.
>       * po/LINGUAS: Add a translation for Bulgarian.
>       * scripts/copyright-update: Use git ls-files for controlled files
>       * bootstrap: Update from latest gnulib version
>       * src/job.c (child_execute_job): Set pid to -1 on posix_spawn
> failure.
>       * src/job.c (construct_command_argv): Remove unused VMS code
>       * tests/scripts/misc/general3: Add more tests for SHELL/.SHELLFLAGS
>       * tests/scripts/features/archives: [SV 54395] Support non-GNU ar.
>       Update maintainer mode to support debug wait points.
>       * NEWS: Update for pre-release
>       * src/read.c (parse_file_seq): [SV 52076] Don't reverse glob()
> results.
>       * NEWS: Fix incorrect notes.
>       * src/dir.c (dir_setup_glob): Initialize unused gl_offs.
>       * configure.ac: Remove redundant getloadavg gnulib support
>       Don't reset stack size when using posix_spawn()
>       * maintMakefile: Use check-local when testing build.sh.
>       * tests/scripts/functions/wildcard: Skip dangling symlink test.
>       Update to GNU make release candidate 4.2.91
>       * tetss/run_make_test.pl: Avoid 'sh -c' for Windows portability.
>       * tests/scripts/features/archives: Fix expected long ar name output.
>       * README.git: Describe GCC and GNU make requirements
>       Show useful errors when posix_spawn() doesn't do so
>       * src/job.c (start_job_command) [VMS]: Correct VMS comment.
>       * doc/make.tex (Substitution Refs): Clarify patsubst relationship.
>       Align child_execute_job among different ports
>       * doc/make.texi: Clarify that the jobserver pipe is "blocking"
>       * build.template: Rewrite to allow gnulib support.
>       * src/makeint.h: Add typedef for mode_t if !HAVE_UMASK
>       * src/config.h.W32.template [W32]: Add support for dirent.d_type
>       * configure.ac: Check whether struct dirent has a d_type field
>       * doc/make.texi (Recipe Execution): Correct example to use $(<[DF])
>       [SV 56834] Support local PATH search with posix_spawnp
>       * gl/modules/make-glob: Move local glob configure.ac to here
>       Rework the creation of build.sh so it's not a template.
>       * src/job.c (child_execute_job): Use newer gnulib findprog version.
>       * src/job.c (child_execute_job): Use errno from find_in_given_path().
>       * tests/test_driver.pl: Remember error for "running" a directory.
>       * README.git: [SV 56895] Provide more info about "maintainer mode".
>       * tests/config-flags.pm.in: Add USE_SYSTEM_GLOB.
>       Refresh the test suite framework implementation.
>       * tests/run_make_tests.pl: Create $scriptsuffix for Windows/VMS.
>       * NEWS: Update date and clarify -l change.
>       * tests/run_make_tests.pl (find_prog): Fix syntax error.
>       * tests/run_make_test.pl: Fix support for valgrind.
>       * tests/scripts/functions/shell: Detect correct SHELLSTATUS code.
>       * src/arscan.c (ar_scan): Restrict length for sscanf of ar_mode.
>       [SV 56918] Compute job slots properly on failing command
>       * src/job.c (child_execute_job): Allocate space for argv NULL.
>       * tests/scripts/function/guile: Valgrind doesn't work with Guile.
>       * tests: Convert from File::Spec::Functions to File::Spec.
>       * job.c (child_error): Modify error message string.
>       * test/test_driver.el (_run_with_timeout): Show error message.
>       * tests/scripts/features/vpathplus: Fix output for big-endian
> systems.
>       * src/function.c (func_realpath) [AIX]: Remove trailing slashes.
>       * tests/run_make_tests.pl (valid_option): Add missing File::Spec
>       * src/hash.c (jhash_string): Don't read past end of string.
>       tests: Convert %CONFIG_FLAGS to get_config()
>       * tests/scripts/functions/wildcard: Skip slash tests for local glob.
>       * Makefile.am (check-regression): Use PERLFLAGS when running Perl
>       * doc/make.text (Reading Makefiles): Rewrite to be more clear.
>       Release GNU make 4.2.92
>       Rename jhelp.pl to thelp.pl and make it a generic test helper.
>       * tests/run_make_tests.pl (subst_make_string): Force use of /
>       * tests/run_make_tests.pl (set_more_defaults): Fix typo
>       * src/job.c (load_too_high): Disable Linux /proc/loadavg for now
>       * Makefile.am: Build lzip package instead of bzip2
>       * src/config.h.W32.template: [SV 57152] MinGW32 doesn't support
> d_type
>       [SV 56655] Allow pattern expansion to contain spaces
>       [SV 57022] Avoid posix_spawn which fails asynchronously
>       * NEWS: Remove info about disabled /proc/loadavg usage.
>       * src/makeint.h: Add a declaration for memrchr()
>       * tests/scripts/features/exec: Don't use $ENV in the description
>       * tests/test_driver.pl: Compute full path to Perl interpreter
>       * tests/scripts/features/patternrules: Use Windows-compatible quoting
>       Support the .EXTRA_PREREQS special variable
>       Update copyright statements for 2020
>       Release GNU make 4.2.93
>       * bootstrap: Update to the latest gnulib version
>       Enable compilation with C90 compilers
>       * NEWS: Clarify authorship of new features.
>       * doc/make.texi: Change the GFDL to an Appendix
>       [SV 40657] Reinstate old behavior for suffix rules with prereqs
>       Resolve some documentation issues
>       * src/job.c (sh_cmds): [SV 57625] Update builtin shell command list
>       * configure.ac (guile): Check for Guile 3.0 installations
>       GNU Make release 4.3
>
> [hidden email] (1):
>       * src/dir.c: Preserve glob d_type field
>
>