Changes from 4.0.0 to 4.0.1
---------------------------
1. The default handling of backslash in sub() and gsub() has been reverted to
the behavior of 3.1. It was silly to think I could break compatibility that
way, even for standards compliance.
2. Completed the implementation of Rational Range Interpretation.
3. Failure to get the group set is no longer a fatal error.
4. Lots of minor bugs fixed and portability clean-ups along the way. See
the ChangeLog for details.
on pkgsrc-users.
Changes:
Changes from 3.1.8 to 4.0.0
---------------------------
1. The special files /dev/pid, /dev/ppid, /dev/pgrpid and /dev/user are
now completely gone. Use PROCINFO instead.
2. The POSIX 2008 behavior for `sub' and `gsub' are now the default.
THIS CHANGES BEHAVIOR!!!!
3. The \s and \S escape sequences are now recognized in regular expressions.
4. The split() function accepts an optional fourth argument which is an array
to hold the values of the separators.
5. The new -b / --characters-as-bytes option means "hands off my data"; gawk
won't try to treat input as a multibyte string.
6. There is a new --sandbox option; see the doc.
7. Indirect function calls are now available.
8. Interval expressions are now part of default regular expressions for
GNU Awk syntax.
9. --gen-po is now correctly named --gen-pot.
10. switch / case is now enabled by default. There's no longer a need
for a configure-time option.
11. Gawk now supports BEGINFILE and ENDFILE. See the doc for details.
12. Directories named on the command line now produce a warning, not
a fatal error, unless --posix or --traditional.
13. The new FPAT variable allows you to specify a regexp that matches
the fields, instead of matching the field separator. The new patsplit()
function gives the same capability for splitting.
14. All long options now have short options, for use in `#!' scripts.
15. Support for IPv6 is added via the /inet6/... special file. /inet4/...
forces IPv4 and /inet chooses the system default (probably IPv4).
16. Added a warning for /[:space:]/ that should be /[[:space:]]/.
17. Merged with John Haque's byte code internals. Adds dgawk debugger and
possibly improved performance.
18. `break' and `continue' are no longer valid outside a loop, even with
--traditional.
19. POSIX character classes work with --traditional (BWK awk supports them).
20. Nuked redundant --compat, --copyleft, and --usage long options.
21. Arrays of arrays added. See the doc.
22. Per the GNU Coding Standards, dynamic extensions must now define
a global symbol indicating that they are GPL-compatible. See
the documentation and example extensions.
THIS CHANGES BEHAVIOR!!!!
23. In POSIX mode, string comparisons use strcoll/wcscoll.
THIS CHANGES BEHAVIOR!!!!
24. The option for raw sockets was removed, since it was never implemented.
25. Gawk now treats ranges of the form [d-h] as if they were in the C
locale, no matter what kind of regexp is being used, and even if
--posix. The latest POSIX standard allows this, and the documentation
has been updated. Maybe this will stop all the questions about
[a-z] matching uppercase letters.
THIS CHANGES BEHAVIOR!!!!
26. PROCINFO["strftime"] now holds the default format for strftime().
27. Updated to latest infrastructure: Autoconf 2.68, Automake 1.11.1,
Gettext 0.18.1, Bison 2.5.
28. Many code cleanups. Removed code for many old, unsupported systems:
- Atari
- Amiga
- BeOS
- Cray
- MIPS RiscOS
- MS-DOS with Microsoft Compiler
- MS-Windows with Microsoft Compiler
- NeXT
- SunOS 3.x, Sun 386 (Road Runner)
- Tandem (non-POSIX)
- Prestandard VAX C compiler for VAX/VMS
- Probably others that I've forgotten
29. If PROCINFO["sorted_in"] exists, for(iggy in foo) loops sort the
indices before looping over them. The value of this element
provides control over how the indices are sorted before the loop
traversal starts. See the manual.
30. A new isarray() function exists to distinguish if an item is an array
or not, to make it possible to traverse multidimensional arrays.
31. asort() and asorti() take a third argument specifying how to sort.
See the doc.
Changes from 3.1.7 to 3.1.8
---------------------------
1. The zero flag no longer applies to %c and %s; apparently the standards
changed at some point.
2. Updated to latest infrastructure: Autoconf 2.65, Automake 1.11.1,
libtool 2.2.6b, Bison 2.4.2.
3. Failure to open a socket is no longer a fatal error.
4. dfa.h and dfa.c are now more-or-less in sync with GNU grep, for the first
time in many years.
5. Gawk no longer includes its own copy of libsigsegv but it will use it if
installed on the build system. The --disable-libsigsegv configure option
is now gone.
6. The ' flag (%'d) is now just ignored on systems that can't support it.
7. Lots of bug fixes, see the ChangeLog.
Changes from 3.1.6 to 3.1.7
---------------------------
1. Gawk now has support for z/OS (IBM S/390 architecture).
2. Gawk now handles multibyte strings better in [s]printf with field
widths and such.
3. Gawk now uses libsigsegv to print a message before core dumping. This
handles infinite recursion of an awk function a little better.
Use of the library can be disabled at configure time with the
--disable-libsigsegv option for unusual systems.
4. The handling of BINMODE is now somewhat more sane.
5. A getline from a directory is no longer fatal; instead it returns -1.
6. Per POSIX, special variable names (like FS) cannot be used as function
parameter names.
7. The new -O / --optimize option enables simple constant folding on
the parse tree during parsing. We hope that with time the number
of optimizations will increase.
8. Updated to the latest autotools: Autoconf 2.63, Automake 1.11,
Libtool 2.2.6a, and Gettext 0.17. Also latest Bison: 2.4.1.
9. Some improvement in testing for isinf / isnan in builtin.c.
10. Improved the handling of `a = a b c' to be more general.
11. Locale handling for %'d should now work on certain non-Unix /
non-Linux systems.
12. Lots of bugs fixed, see the ChangeLog for the details.
1. `gawk 'program' /non/existant/file' no longer core dumps.
2. gawk now only uses the locale's decimal point
3. `gawk -v BINMODE=1 ...' works again.
4. Internal file names like `/dev/user' now work again. (Note that these
file names are obsolete and will go away eventually.)
5. Problems with wide strings in non "C" locales have been straightened
out everywhere. (At least, we think so.)
6. Use of `ansi2knr' is no longer supported. Please use an ANSI C compiler.
7. Updated to Autoconf 2.61, Automake 1.10, and Gettext 0.16.1.
8. The getopt* and regex* files were synchronized with current GLIBC CVS.
See the ChangeLog for the versions and minor edits made.
9. There are additional --lint-old warnings.
10. Gawk now uses getaddrinfo(3) to look up names and IP addresses. This
allows the use of an IPv6 format address and paves the way for
eventual addition of `/inet6/...' and `/inet4/...' hostnames.
11. We believe gawk to now be valgrind clean. At least when run against
the test suite.
12. A number of issues dealing with the formatting and printing of very
large numbers in integer formats have been dealt with and fixed.
13. Gawk now converts "+inf", "-inf", "+nan" and "-nan" into the corresponding
magic IEEE floating point values. Only those strings (case independent)
work. With --posix, gawk calls the system strtod directly. You asked
for it, you got it, you deal with it.
14. Defining YYDEBUG enables the -D command line option.
15. Gawk should now work out of the box on Tandem NSK/OSS systems.
16. Lint messages rationalized: many more of the messages are now printed
only once, instead of every time they are encountered.
17. The strftime() function now accepts an optional third argument, which
if non-zero or non-null, indicates that the time should be formatted
as UTC instead of as local time.
18. The precedence of concatenation and `| getline' (in something like
"echo " "date" | getline stuff) has been reverted to the earlier
behavior and now once again matches Unix awk.
19. New configure time flag --disable-directories-fatal which causes
gawk to silently skip directories on the command line. This behavior
is also enabled for --traditional, since it's what Unix awk does.
20. A new option, --use-lc-numeric, forces use of the locale's decimal
point without the rest of the draconian restrictions imposed by
--posix. This softens somewhat the stance taken in item 2.
21. Everything relevant has been updated to the GPL 3.
22. Array growth should be faster now, at no cost in space.
23. Lots more tests.
24. One new translation.
25. Various bugs fixed, see the ChangeLog for details.
PKGLOCALEDIR and which install their locale files directly under
${PREFIX}/${PKGLOCALEDIR} and sort the PLIST file entries. From now
on, pkgsrc/mk/plist/plist-locale.awk will automatically handle
transforming the PLIST to refer to the correct locale directory.
RECOMMENDED is removed. It becomes ABI_DEPENDS.
BUILDLINK_RECOMMENDED.foo becomes BUILDLINK_ABI_DEPENDS.foo.
BUILDLINK_DEPENDS.foo becomes BUILDLINK_API_DEPENDS.foo.
BUILDLINK_DEPENDS does not change.
IGNORE_RECOMMENDED (which defaulted to "no") becomes USE_ABI_DEPENDS
which defaults to "yes".
Added to obsolete.mk checking for IGNORE_RECOMMENDED.
I did not manually go through and fix any aesthetic tab/spacing issues.
I have tested the above patch on DragonFly building and packaging
subversion and pkglint and their many dependencies.
I have also tested USE_ABI_DEPENDS=no on my NetBSD workstation (where I
have used IGNORE_RECOMMENDED for a long time). I have been an active user
of IGNORE_RECOMMENDED since it was available.
As suggested, I removed the documentation sentences suggesting bumping for
"security" issues.
As discussed on tech-pkg.
I will commit to revbump, pkglint, pkg_install, createbuildlink separately.
Note that if you use wip, it will fail! I will commit to pkgsrc-wip
later (within day).
Changes from 3.1.4 to 3.1.5
---------------------------
1. The random() suite has been updated to a current FreeBSD version, which
works on systems with > 32-bit ints.
2. A new option, `--exec' has been added. It's like -f but ends option
processing. It also disables `x=y' variable assignments, but not -v.
It's needed mainly for CGI scripts, so that source code can't be
passed in as part of the URL.
3. dfa.[ch] have been synced with GNU grep development. This also fixes
multiple regex matching problems in multibyte locales.
4. Updated to Automake 1.9.5.
5. Updated to Bison 2.0.
6. The getopt* and regex* files were synchronized with current GLIBC CVS.
See the ChangeLog for the versions and minor edits made.
7. `configure --disable-nls' now disables just gawk's own translations.
Gawk continues to work with the locale's numeric formatting. This
includes a bug fix in handling the printf ' flag (e.g., %'d).
8. Gawk is now multibyte aware. This means that index(), length(),
substr() and match() all work in terms of characters, not bytes.
9. Gawk is now smarter about parsing numeric constants in corner cases.
11. Not closing open redirections no longer causes gawk to exit non-zero.
10. The VMS port has been updated.
11. Changes from Andrew Schorr at the xmlgawk project to provide for
open hooks from extensions are now included. This will let the
xmlgawk extension work in the standard gawk.
12. Updated to gettext 0.14.4. Gawk no longer includes its own copy
of the gettext `intl' library, following current GNU practice to
rely on there being an external version thereof.
13. A regexp of the form `//' will now generate a warning that it
is not a C++ comment from --lint (awk.y).
14. The ^ and ^= operators with an integer exponent now use Exponentiation
by Squaring. This simultaneously fixes a problem with ^= and a negative
integer exponent.
15. length(array) now returns the number of elements in the array. This is
is a non-standard extension that will fail in POSIX mode.
16. Carriage return characters are now ignored in program source code.
17. Four new translations added.
18. Various minor bugs fixed. See the ChangeLog for the details.
in the process. (More information on tech-pkg.)
Bump PKGREVISION and BUILDLINK_DEPENDS of all packages using libtool and
installing .la files.
Bump PKGREVISION (only) of all packages depending directly on the above
via a buildlink3 include.
Changes from 3.1.3 to 3.1.4
---------------------------
1. Gawk now supports the POSIX %F format, falling back to %f if the local
system printf doesn't handle it.
2. Gawk now supports the ' flag in printf. E.g., %'d in a locale with thousands
separators includes the thousands separator in the value, e.g. 12,345.
This has one problem; the ' flag is next to impossible to use on the
command line, without major quoting games. Oh well, TANSTAAFL.
3. The dfa code has been reinstated; the performance degradation was
just too awful. Sigh. (For fun, use `export GAWK_NO_DFA=1' to
see the difference.)
4. The special case `x = x y' is now recognized in the grammar, and gawk
now uses `realloc' to append the new value to the end of the existing
one. This can speed up the common case of appending onto a string.
5. The dfa code was upgraded with most of the fixes from grep 2.5.1, and
the regex code was upgraded with GLIBC as mid-January 2004. The regex
code is faster than it was, but still not as fast as the dfa code, so
the dfa code stays in. The getopt code was also synced to current GLIBC.
6. Support code upgraded to Automake 1.8.5, Autoconf 2.59, and gettext 0.14.1.
7. When --posix is in effect, sub/gsub now follow the 2001 POSIX behavior.
Yippee. This is even documented in the manual.
8. Gawk will now recover children that have died (input pipelines, two-way
pipes), upon detecting EOF from them, thus avoiding filling
up the process table. Open file descriptors are not recovered
(unfortunately), since that could break awk semantics. See the
ChangeLog and the source code for the details.
9. Handling of numbers like `0,1' in non-American locales ought to
work correctly now.
10. IGNORECASE is now locale-aware for characters with values above 128.
The dfa matcher is now used for IGNORECASE matches too.
11. Dynamic function loading is better. The documentation has been improved
and some new APIs for use by dynamic functions have been added.
12. Gawk now has a fighting chance of working on older systems,
a la SunOS 4.1.x.
13. Issues with multibyte support on HP-UX are now resolved. `configure' now
disables such support there, since it's not up to what gawk needs.
14. There are now even more tests in the test suite.
15. Various bugs fixed; see ChangeLog for the details.
Changes from 3.1.2 to 3.1.3
---------------------------
1. Gawk now follows POSIX in handling of local numeric formats for
input, output and number/string conversions.
2. Multibyte detection improved. See README_d/README.multibyte for more
info about multibyte locales.
3. Handling of `close' made more POSIX-compliant for POSIXLY_CORRECT,
see the documentation.
4. The record reading code was redone, again. This time it's much
better. Really!
5. For RS = "\n" and RS = "", gawk now only sets RT when it has changed.
This provides considerable performance improvement.
6. `match' now sets all the subscripts in the third argument array
correctly, even if not all subexpressions matched.
7. Updated to Automake 1.7.5. configure.in renamed configure.ac.
8. C-style switch statements are available, but must be enabled at
compile time via `configure --enable-switch'. For 3.2 they'll be
enabled by default. Thanks to Michael Benzinger for the initial
code.
9. %c now always prints no more than one character, whatever
precision is provided.
10. strtonum(<number>) now works again.
11. Gawk is now much better about scalar/array typing of global
uninitiailzed variables passed as parameters. Once the parameter
is then used one way or the other, the global var's type is
adjusted accordingly. Thanks to Stepan Kasal for the original
(considerable) changes.
12. Dynamic function loading under Windows32 should now be possible. See
README_d/README.pcdynamic. Thanks to Patrick T.J. McPhee for the changes.
13. Updated to gettext 0.12.1.
14. Gawk now follows historical practice and POSIX for the return
value of `rand': It's now 0 <= N < 1.
Changes from 3.1.1 to 3.1.2
---------------------------
1. Loops of the form:
for (iggy in foo)
next
no longer leak memory.
2. gawk -v FIELDWIDTHS="..." now sets PROCINFO["FS"] correctly.
3. All builtin operations and functions should now fully evaluate their
arguments so that side effects take place correctly.
4. Fixed a logic bug in gsub/gensub for matches to null strings that occurred
later in the string after a nonnull match.
5. getgroups code now works on Ultrix again.
6. Completely new version of the full GNU regex engine now in place.
7. Argument parsing and variable assignment has been cleaned up.
8. An I/O bug on HP-UX has been documented and worked around. See
README_d/README.hpux.
9. awklib/grcat should now compile correctly.
10. Updated to automake 1.7.3, autoconf 2.57 and gettext 0.11.5 ; thanks to
Paul Eggert for the initial automake and autoconf work.
11. As a result of #6, removed the use of the dfa code from GNU grep.
12. It is now possible to use ptys for |& two-way pipes instead of
pipes. The basic plumbing for this was provided by Paolo Bonzini.
To make this happen:
command = "unix command etc"
PROCINFO[command, "pty"] = 1
print ... |& command
command |& getline stuff
In other words, set the element in PROCINFO *before* opening the
two-way pipe, and then gawk will use ptys instead of pipes.
On systems without ptys or where all the ptys are in use, gawk
will fall back to using plain pipes.
13. Fixed a regex matching across buffer boundaries bug, with a
heuristic. See io.c:rsre_get_a_record.
14. Profiling no longer dumps core if there are extension functions in place.
15. Grammar and scanner cleaned up, courtesy of Stepen Kasal, to hopefully
once and for all fix the `/=' operator vs. `/=.../' regex ambiguity.
Lots of other grammar simplifications applied, as well.
16. BINMODE should work now on more Windows ports.
17. Updated to bison 1.875. Includes fix to bisonfix.sed script.
18. The NODE structure is now 20% (8 bytes) smaller (on x86, anyway), which
should help conserve memory.
19. Builds not in the source directory should work again.
20. Arrays now use 2 NODE's per element instead of three. Combined with
#18, (on the x86) this reduces the overhead from 120 bytes per element
to just 64 bytes: almost a 50% improvement.
21. Programs that make heavy use of changing IGNORECASE should now be
much faster, particularly if using a regular expression for FS or RS.
IGNORECASE now correctly affects RS regex record splitting, as well.
22. IGNORECASE no longer affects single-character field splitting (FS = "c"),
or single-character record splitting (RS = "c").
This cleans up some weird behavior, and makes gawk better match the
documentation, which says it only affects regex-based field splitting
and record splitting.
The documentation on this was improved, too.
23. The framework in test/ has been simplified, making it much easier to
add new tests while keeping the size of Makefile.am reasonable. Thanks
for this to Stepan Kasal.
24. --lint=invalid causes lint warnings only about stuff that's actually
invalid. This needs additional work.
25. More translations.
26. The `get_a_record' routine has been revamped (currently by splitting it
into three variants). This should improve long-term maintainability.
27. `match' now adds more entries to 3rd array arg:
match("the big dog", /([a-z]+) ([a-z]+) ([a-z]+)/, data)
fills in variables:
data[1, "start"], data[1, "length"], and so on.
28. New `asorti' function with same interface as `asort', but sorts indices
instead of values.
29. Documentation updated to FDL 1.2.
30. New `configure' option --disable-lint at compile time disables lint
checking. With GCC dead-code-elimination, cuts almost 200K off the
executable size on GNU/Linux x86. Presumably speeds up runtime.
Using this will cause some of the tests in the test suite to fail.
This option may be removed at a later date.
31. Various minor cleanups, see the ChangeLog for details.