Greetings all. This note announces the next major release of GNU Awk: version 4.2.0.
The following files may be retrieved from ftp://ftp.gnu.org/gnu/gawk, or via HTTPS from https://ftp.gnu.org/gnu/gawk: -rw-rw-r-- 1 arnold arnold 5602299 Oct 19 21:29 gawk-4.2.0.tar.gz -rw-rw-r-- 1 arnold arnold 473 Oct 19 21:38 gawk-4.2.0.tar.gz.sig -rw-rw-r-- 1 arnold arnold 2853125 Oct 19 21:28 gawk-4.2.0.tar.lz -rw-rw-r-- 1 arnold arnold 473 Oct 19 21:38 gawk-4.2.0.tar.lz.sig -rw-rw-r-- 1 arnold arnold 2948108 Oct 19 21:29 gawk-4.2.0.tar.xz -rw-rw-r-- 1 arnold arnold 473 Oct 19 21:38 gawk-4.2.0.tar.xz.sig This is a major new release, with a number of new features. The relevant part of the NEWS file is appended below. This release represents over four years of very hard work by a number of people. I thank them all for their contributions, I could not have done it by myself. Differences from gawk 4.1.4 are not available; they would be too large. The usual GNU build incantation should be used: tar -xpvzf gawk-4.2.0.tar.gz cd gawk-4.2.0 ./configure && make && make check Bug reports should be sent to bug-g...@gnu.org. Enjoy! Arnold Robbins (on behalf of all the gawk developers) arn...@skeeve.com ------------------------------------------------------------ Changes from 4.1.4 to 4.2.0 --------------------------- 1. If not in POSIX mode, changes to ENVIRON are reflected into gawk's environment, affecting any programs run by system() or for piped redirections. This can also affect built-in routines, such as mktime(), which is typically influenced by the TZ environment variable. 2. The series of numbers returned by rand() should now be "more random" than previously. Gawk's rand() remains repeatable; you will get the same series of numbers each time you call rand() repeatedly, but this will be a different series than previously. 3. Multiple changes related to the pretty printer: * The --pretty-print option no longer runs the program too. * Pretty printing now preserves comments and places them into the pretty-printed file. * Pretty-printing now uses the original text of constant numeric values for pretty-printing and profiling. * Pretty-printing now preserves parenthesized expressions as they were in the source file. This solves several niggling corner cases with such things. 4. The igawk script and igawk.1 man page are no longer installed by `make install'. They have been obsolete since gawk 4.0.0. 5. Gawk can now be built with CMake. This is an alternative build system for those who may want it; gawk is not going to switch off use of the autotools anytime soon, if ever. 6. Gawk now processes a maximum of two hexadecimal digits in \x escape sequences inside strings. 7. Setting PROCINFO["redirection", "NONFATAL"] to true makes I/O errors for "redirection" not fatal, setting ERRNO. Setting PROCINFO["NONFATAL"] makes all I/O nonfatal. See the manual. 8. MirBSD is no longer supported. 9. `make install' now installs shell startup files $sysconfdir/profile.d/gawk.{csh,sh} containing shell functions to manipulate the AWKPATH and AWKLIBPATH environment variables. On a Fedora system, these files belong in /etc/profile.d, but the appropriate location may be different on other platforms. 10. Gawk now supports retryable I/O via PROCINFO[input-file, "RETRY"]; see the manual. 11. The C API has undergone changes that break binary compatibility with the previous version. Thus the API version is now at 2.0. YOU WILL NEED TO RECOMPILE YOUR EXTENSIONS to work with this version of gawk. Source code compatibility remains intact, although you will get compiler warnings if you do not revise your extensions. We strongly recommend that you do so. Fortunately, the changes are fairly minor and straightforward. See the manual for the new features. 12. Revisions in the POSIX standard remove the special case for POSIX mode when FS = " " where newline was not a field separator. The code and doc have been updated. 13. Gawk now supports strongly typed regexp constants. Such constants look like @/.../. You can assign them to variables, pass them to functions, use them in ~, !~ and the case part of a switch statement. More details are provided in the manual. 14. The new typeof() function can be used to indicate if a variable or array element is an array, regexp, string or number. 15. As promised when 4.1 was released, the old extension mechanism, using the `extension' function, is now gone. 16. Support for GNU/Linux on Alpha systems has been removed. 17. Optimizations are now enabled by default. Use the new -s/--no-optimize option(s) to disable them. Pretty-printing and profiling automatically disable optimizations so that the output program is the same as the original input program. 18. Gawk now uses fwrite_unlocked if it's available. The yields a 7% - 18% improvement in raw output speed (gawk '{ print }' on a large file). 19. Passing negative operands to any of the bitwise functions now produces a fatal error. 20. Programs that toggle IGNORECASE a lot should now be noticeably faster. 21. The mktime function now accepts an optional second argument. If this argument is present and is non-zero or non-null, the time will be converted from UTC instead of from the local timezone. 22. The FIELDWIDTHS parsing syntax has been enhanced to allow specifying how many characters to skip before a field starts. It also allows specifying '*' as the last character to mean "the rest of the record". Field splitting with FIELDWIDTHS now sets NF correctly. The documentation for FIELDWIDTHS in the manual has been considerably reorganized and improved as well. 23. The PROCINFO["argv"] array records all of gawk's command line arguments as gawk received them (the values of the C level argv array). 24. The DJGPP port has been revived and now has an official maintainer. 25. The manual has been translated into Italian! The translation is included in the distribution. -- If you have a working or partly working program that you'd like to offer to the GNU project as a GNU package, see https://www.gnu.org/help/evaluation.html.