this gawk version is newer than the version shipped with 1.6 and has some
potentially useful features such as 2 way pipes which allow easy access to
the sort(1) command.
Changes from 3.1.0 to 3.1.1
---------------------------
1. Six new translations.
2. Having more than 4 different value for OFMT and/or CONVFMT now works.
3. The handling of dynamic regexes is now more more sane, esp. w.r.t.
the profiling code. The profiling code has been fixed in several
places.
4. The return value of index("", "") is now 1.
5. Gawk should no longer close fd 0 in child processes.
6. Fixed test for strtod semantics and regenerated configure.
7. Gawk can now be built with byacc; an accidental bison dependency was
removed.
8. yyerror() will no longer dump core on long source lines.
9. Gawk now correctly queries getgroups(2) to figure out how many groups
the process has.
10. New configure option to force use of included strftime, e.g. on
Solaris systems. See `./configure --help' for the details. Replaced
the included strftime.c with the one from textutils.
11. OS/2 port has been updated.
12. Multi-byte character support has been added, courtesy of IBM Japan.
13. The `for (iggy in foo) delete foo[iggy]' -> `delete foo' optimisation
now works.
14. Upgraded to gettext 0.11.2 and automake 1.5.
15. Full gettext compatibility (new dcngettext function).
16. The O'Reilly copyedits and indexing changes for the documentation have
been folded into the texinfo version of the manuals.
17. A humongously long value for the AWKPATH environment variable will no
longer dump core.
18. Configuration / Installation issues have been straightened out in
Makefile.am.
changes to get it to build on NetBSD are extensive - for reference,
and the one who comes after me, they are:
+ awk.h defines "proc" in a cpp macro. This doesn't sit too well with
"struct proc" references, as found in <sys/uio.h>. The good news is that
only awk.h and awkgram.y need to be modified to workaround this.
+ the present Makefile copying wrt gettext Makefile.in.in is unnecessary
+ automake is a pre-req of this package
+ and there is a problem in Makefile.in/configure with ${AUTOMAKE} not
being defined properly
and many, many more...
Enable this package for all platforms.
Added GAWK_ENABLE_PORTALS to mk/bsd.pkg.defaults.mk to enable/disable gawk
handling file names that start with `/p/' as a 4.4 BSD type portal file.
Changes from 3.0.4 to 3.0.5:
- bug fix release only.
Changes from 3.0.5 to 3.0.6:
- bug fix release only.
Changes from 3.0.6 to 3.1.0:
- A new PROCINFO array provides info about the process. The non-I/O /dev/xxx
files are now obsolete, and their use always generates a warning.
- A new `mktime' builtin function was added for creating time stamps. The
`mktime' function written in awk was removed from the user's guide.
- New `--gen-po' option creates GNU gettext .po files for strings marked
with a leading underscore.
- Gawk now completely interprets special file names internally, ignoring the
existence of real /dev/stdin, /dev/stdout files, etc.
- The mmap code was removed. It was a worthwhile experiment that just
didn't work out.
- The BINMODE variable is new; on non-UNIX systems it affects how gawk
opens files for text vs. binary.
- Gawk no longer supports `next file' as two words.
- On systems that support it, gawk now sets the `close on exec' flag on all
files and pipes it opens. This makes sure that child processes run via
system() or pipes have plenty of file descriptors available.
- If `--posix' is in effect, newlines are not allowed after ?:.
- Weird OFMT/CONVFMT formats no longer cause fatal errors.
- Diagnostics about array parameters now include the parameter's name,
not just its number.
- It is now possible to open a two-way pipe via the `|&' operator.
See the discussion in the manual about putting `sort' into such a pipeline,
though. (NOTE! This is borrowed from ksh: it is not the same as
the same operator in csh!)
- The close() function now takes an optional second string argument
that allows closing one or the other end of the two-way pipe to
a co-process. This is needed to use `sort' in a co-process, see
the doc.
- If TCP/IP is available, special file names beginning with `/inet'
can be used with `|&' for IPC.
- With `--enable-portals' on the configure command line, gawk will also
treat file names that start with `/p/' as a 4.4 BSD type portal file,
i.e., a two-way pipe for `|&'.
- Unrecognized escapes, such as "\q" now always generate a warning.
- The LINT variable is new; it provides dynamic control over the --lint
option.
- Lint warnings can be made fatal by using --lint=fatal or `LINT = "fatal"'.
Use this if you're really serious about portable code.
- A number of lint warnings have been added. Most notably, gawk will
detect if a variable is used before assigned to. Warnings for
when a string that isn't a number gets converted to a number are
in the code but disabled; they seem to be too picky in practice.
Also, gawk will now warn about function parameter names that shadow
global variable names.
- It is now possible to dynamically add builtin functions on systems
that support dlopen. This facility is not (yet) as portable or well
integrated as it might be. *** WARNING *** THIS FEATURE WILL EVOLVE!
- Profiling has been added! A separate version of gawk, named pgawk, is
built and generates a run-time execution profile. The --profile option
can be used to change the default output file. In regular gawk, this
option pretty-prints the parse tree.
- Gawk has been internationalized, using GNU gettext. Translations for
future distributions are most welcome.
- New asort() function for sorting arrays. See the doc for details.
- The match function takes an optional array third argument to hold
the text matched by parenthesized sub-expressions.
- The bit op functions and octal and hex source code constants are on by
default, no longer a configure-time option. Recognition of non-decimal
data is now enabled at runtime with --non-decimal-data command line option.
- Internationalization features available at the awk level: new TEXTDOMAIN
variable and bindtextdomain() and dcgettext() functions. printf formats
may contain the "%2$3.5d" kind of notation for use in translations. See
the texinfo manual for details.
- The return value from close() has been rationalized. Most notably,
closing something that wasn't open returns -1 but remains non-fatal.
- The array effeciency change from 3.0.5 was reverted; the semantics were
not right. Additionally, index values of previously stored elements
can no longer change dynamically.
- The new option --dump-variables dumps a list of all global variables and
their final types and values to a file you give, or to `awkvars.out'.
- Gawk now uses a recent version of random.c courtesy of the FreeBSD
project.
- The gawk source code now uses ANSI C function definitions (new style),
with ansi2knr to translate code for old compilers.
- `for (iggy in foo)' loops should be more robust now in the face of
adding/deleting elements in the middle; they loop over just the elements
that are present in the array when the loop starts.
Summary of changes:
- removal of USE_GTEXINFO
- addition of mk/texinfo.mk
- inclusion of this file in package Makefiles requiring it
- `install-info' substituted by `${INSTALL_INFO}' in PLISTs
- tuning of mk/bsd.pkg.mk:
removal of USE_GTEXINFO
INSTALL_INFO added to PLIST_SUBST
`${INSTALL_INFO}' replace `install-info' in target rules
print-PLIST target now generate `${INSTALL_INFO}' instead of `install-info'
- a couple of new patch files added for a handful of packages
- setting of the TEXINFO_OVERRIDE "switch" in packages Makefiles requiring it
- devel/cssc marked requiring texinfo 4.0
- a couple of packages Makefiles were tuned with respect of INFO_FILES and
makeinfo command usage
See -newly added by this commit- section 10.24 of Packages.txt for
further information.