[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: GNU make 4.3 released!
From: |
Nicholas Clark |
Subject: |
Re: GNU make 4.3 released! |
Date: |
Sun, 19 Jan 2020 15:59:21 -0700 |
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 <address@hidden> 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 <address@hidden>
>
> * 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 <address@hidden>
>
> * 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 <address@hidden>
>
> * 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 <address@hidden>
>
> 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
>
> address@hidden (1):
> * src/dir.c: Preserve glob d_type field
>
>