-
Notifications
You must be signed in to change notification settings - Fork 6
/
NEWS.0
2542 lines (1606 loc) · 83.1 KB
/
NEWS.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
2005, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
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.
Changes from 3.1.5 to 3.1.6
---------------------------
1. `gawk 'program' /non/existant/file' no longer core dumps.
2. Too many people the world over have complained about gawk's use of the
locale's decimal point for parsing input data instead of the traditional
period. So, even though gawk was being nicely standards-compliant, in
a Triumph For The Users, gawk now only uses the locale's decimal point
if --posix is supplied or if POSIXLY_CORRECT is set. It is the sincere
hope that this change will eliminate this FAQ from being asked.
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.
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.
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.
Changes from 3.1.0 to 3.1.1
---------------------------
1. Six new translations.
2. Having more than 4 different values 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 from 3.0.6 to 3.1.0
---------------------------
1. 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.
2. A new `mktime' builtin function was added for creating time stamps. The
`mktime' function written in awk was removed from the user's guide.
3. New `--gen-po' option creates GNU gettext .po files for strings marked
with a leading underscore.
4. Gawk now completely interprets special file names internally, ignoring the
existence of real /dev/stdin, /dev/stdout files, etc.
5. The mmap code was removed. It was a worthwhile experiment that just
didn't work out.
6. The BINMODE variable is new; on non-UNIX systems it affects how gawk
opens files for text vs. binary.
7. The atari port is now unsupported.
8. Gawk no longer supports `next file' as two words.
9. 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.
10. New ports: Tandem and BeOS. The Tandem port is unsupported.
11. If `--posix' is in effect, newlines are not allowed after ?:.
12. Weird OFMT/CONVFMT formats no longer cause fatal errors.
13. Diagnostics about array parameters now include the parameter's name,
not just its number.
14. configure should now automatically add -D_SYSV3 for ISC Unix.
(This seems to have made it into the gawk 3.0.x line long ago.)
15. 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!)
16. 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.
17. If TCP/IP is available, special file names beginning with `/inet'
can be used with `|&' for IPC. Thanks to Juergen Kahrs for the initial
code.
18. 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 `|&'.
19. Unrecognized escapes, such as "\q" now always generate a warning.
20. The LINT variable is new; it provides dynamic control over the --lint
option.
21. Lint warnings can be made fatal by using --lint=fatal or `LINT = "fatal"'.
Use this if you're really serious about portable code.
22. Due to an enhanced sed script, there is no longer any need to worry
about finding or using alloca. alloca.c is thus now gone.
23. 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.
24. 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!
25. There are *many* new tests in the test suite.
26. 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.
27. Gawk has been internationalized, using GNU gettext. Translations for
future distributions are most welcome. Simultaneously, gawk was switched
over to using automake. You need Automake 1.4a (from the CVS archive)
if you want to muck with the Makefile.am files.
28. New `asort' function for sorting arrays. See the doc for details.
29. The match function takes an optional array third argument to hold
the text matched by parenthesized sub-expressions.
30. 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.
31. 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.
32. The return value from `close' has been rationalized. Most notably,
closing something that wasn't open returns -1 but remains non-fatal.
33. 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.
34. 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'.
35. Gawk now uses a recent version of random.c courtesy of the FreeBSD
project.
36. The gawk source code now uses ANSI C function definitions (new style),
with ansi2knr to translate code for old compilers.
37. `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.
Changes from 3.0.5 to 3.0.6
---------------------------
This is a bug fix release only, pending further development on 3.1.0.
Bugs fixed and changes made:
1. Subscripting an array with a variable that is just a number no
longer magically converts the variable into a string.
2. Similarly, running a `for (iggy in foo)' loop where `foo' is a
function parameter now works correctly.
3. Similarly, `i = ""; v[i] = a; if (i in v) ...' now works again.
4. Gawk now special cases `for (iggy in foo) delete foo[iggy]' and
treats it as the moral equivalent of `delete foo'. This should be
a major efficiency win when portably deleting large arrays.
5. VMS port brought up to date.
Changes from 3.0.4 to 3.0.5
---------------------------
This is a bug fix release only, pending further development on 3.1.0.
Bugs Fixed:
1. `function foo(foo)' is now a fatal error.
2. Array indexing is now much more efficient: where possible, only one
copy of an index string is kept, even if used in multiple arrays.
3. Support was added for MacOS X and an `install-strip' target.
4. [s]printf formatting for `0' flag and floating point formats now
works correctly.
5. HP-UX large file support with GCC 2.95.1 now works.
6. Arguments that contain `=' but that aren't syntactically valid are
now treated as filenames, instead of as fatal errors.
7. `-v NF=foo' now works.
8. Non-ascii alphanumeric characters are now treated as such in the
right locales by regex.c. Similarly, a Latin-1 y-umlaut (decimal
value 255) in the program text no longer acts like EOF.
9. Array indexes are always compared as strings; fixes an obscure bug
when user input gets used for the `x in array' test.
10. The usage message now points users to the documentation for how
to report bugs.
11. `/=' now works after an array.
12. `b += b += 1' now works correctly.
13. IGNORECASE changing with calls `match' now works better. (Fix for
semi-obscure bug.)
14. Multicharacter values for RS now generate a lint warning.
15. The gawk open file caching is now much more efficient.
16. Global arrays passed to functions are now managed better. In particular,
test/arynocls.awk won't crash referencing freed memory.
17. In obscure cases, `getline var' can no longer clobber $0.
Changes from 3.0.3 to 3.0.4
---------------------------
This is a bug fix release only, pending further development on 3.1.0.
Bugs Fixed:
1. A memory leak when turning a function parameter into an array was
fixed.
2. The non-decimal data option now works correctly.
3. Using an empty pair of brackets as an array subscript no longer causes
a core dump during parsing. In general, syntax errors should not
cause core dumps any more.
4. Standard input is no longer closed if it provides program source,
avoiding strange I/O problems.
5. Memory corruption during printing with `print' has been fixed.
6. The gsub function now correctly counts the number of matches.
7. A typo in doc/Makefile.in has been fixed, making installation work.
8. Calling `next' or `nextfile' from a BEGIN or END rule is now fatal.
9. Subtle problems in rebuilding $0 when fields were changed have been
fixed.
10. `FS = FS' now correctly turns off the use of FIELDWIDTHS.
11. Gawk now parses fields correctly when FS is a single character.
12. It is now possible for RS to be the NUL character ("\0").
13. Weird problems with number conversions on MIPS and other systems
have been fixed.
14. When parsing using FIELDWIDTHS is in effect, `split' with no third
argument will still use the value of FS.
15. Large File Support for Solaris, HP-UX, AIX, and IRIX is now enabled at
compile time, thanks to Paul Eggert.
16. Attempting to use the name of a function as a variable or array
from within the function is now caught as a fatal error, instead
of as a core dump.
17. A bug in parsing hex escapes was fixed.
18. A weird bug with concatenation where one expression has side effects
that changes another was fixed.
19. printf/sprintf now behave much better for uses of the '0' and '#' flags
and with precisions and field widths.
20. Further strangenesses with concatenation and multiple accesses of some
of the special variables was fixed.
21. The Atari port is marked as no longer supported.
22. Build problems on HP-UX have been fixed.
23. Minor fixes and additional explanations added to the documentation.
24. For RS = "", even a single leading newline is now correctly stripped.
25. Obscure parsing problems for regex constants like /=.../ fixed, so
that a regex constant is recognized, and not the /= operator.
26. Fixed a bug when closing a redirection that matched the current
or last FILENAME.
27. Build problems on AIX fixed.
Changes from 3.0.2 to 3.0.3
---------------------------
The horrendous per-record memory leak introduced in 3.0.1 is gone, finally.
The `amiga' directory is now gone; Amiga support is now entirely handled
by the POSIX support.
Windows32 support has been added in the `pc' directory. See `README_d/README.pc'
for more info.
The mmap changes are disabled in io.c, and will be removed entirely
in the next big release. They were an interesting experiment that just
really didn't work in practice.
A minor memory leak that occurred when using `next' from within a
function has also been fixed.
Problems with I/O from sub-processes via a pipe are now gone.
Using "/dev/pid" and the other special /dev files no longer causes a core dump.
The files regex.h, regex.c, getopt.h, getopt.c, and getopt1.c have been
merged with the versions in GNU libc. Thanks to Ulrich Drepper for his help.
Some new undocumented features have been added. Use the source, Luke!
It is not clear yet whether these will ever be fully supported.
Array performance should be much better for very very large arrays. "Virtual
memory required, real memory helpful."
builtin.c:do_substr rationalized, again.
The --re-interval option now works as advertised.
The license text on some of the missing/* files is now generic.
Lots more new test cases.
Lots of other small bugs fixed, see the ChangeLog files for details.
Changes from 3.0.1 to 3.0.2
---------------------------
Gawk now uses autoconf 2.12.
strftime now behaves correctly if passed an empty format string or if
the string formats to an empty result string.
Several minor compilation and installation problems have been fixed.
Minor page break issues in the user's guide have been fixed.
Lexical errors no longer repeat ad infinitum.
Changes from 3.0.0 to 3.0.1
---------------------------
Troff source for a handy-dandy five color reference card is now provided.
Thanks to SSC for their macros.
Gawk now behaves like Unix awk and mawk, in that newline acts as white
space for separating fields and for `split', by default. In posix mode,
only space and tab separate fields. The documentation has been updated to
reflect this.
Tons and tons of small bugs fixed and new tests added, see the ChangeLogs.
Lots fewer compile time warnings from gcc -Wall. Remaining ones aren't
worth fixing.
Gawk now pays some attention to the locale settings.
Fixes to gsub to catch several corner cases.
The `print' statement now evaluates all expressions first, and then
prints them. This leads to less suprising behaviour if any expression has
output side effects.
Miscellanious improvements in regex.h and regex.c.
Gawk will now install itself as gawk-M.N.P in $(bindir), and link
`gawk' to it. This makes it easy to have multiple versions of gawk
simultaneously. It will also now install itself as `awk' in $(bindir)
if there is no `awk' there. This is in addition to installing itself as
`gawk'. This change benefits the Hurd, and possibly other systems. One
day, gawk will drop the `g', but not yet.
`--posix' turns on interval expressions. Gawk now matches its documentation.
`close(FILENAME)' now does something meaningful.
Field management code in field.c majorly overhauled, several times.
The gensub code has been fixed, several bugs are now gone.
Gawk will use mmap for data file input if it is available.
The printf/sprintf code has been improved.
Minor issues in Makefile setup worked on and improved.
builtin.c:do_substr rationalized.
Regex matching fixed so that /+[0-9]/ now matches the leading +.
For building on vms, the default compiler is now DEC C rather than VAX C.
Changes from 2.15.6 to 3.0.0
----------------------------
Fixed spelling of `Programming' in the copyright notice in all the files.
New --re-interval option to turn on interval expressions. They're off
by default, except for --posix, to avoid breaking old programs.
Passing regexp constants as parameters to user defined functions now
generates a lint warning.
Several obscure regexp bugs fixed; alas, a small number remain.
The manual has been thoroughly revised. It's now almost 50% bigger than
it used to be.
The `+' modifier in printf is now reset correctly for each item.
The do_unix variable is now named do_traditional.
Handling of \ in sub and gsub rationalized (somewhat, see the manual for
the gory [and I do mean gory] details).
IGNORECASE now uses ISO 8859-1 Latin-1 instead of straight ASCII. See the
source for how to revert to pure ASCII.
--lint will now warn if an assignment occurs in a conditional context.
This may become obnoxious enough to need turning off in the future, but
"it seemed like a good idea at the time."
%hf and %Lf are now diagnosed as invalid in printf, just like %lf.
Gawk no longer incorrectly closes stdin in child processes used in
input pipelines.
For integer formats, gawk now correctly treats the precision as the
number of digits to print, not the number of characters.
gawk is now much better at catching the use of scalar values when
arrays are needed, both in function calls and the `x in y' constructs.
New gensub function added. See the manual.
If do_tradtional is true, octal and hex escapes in regexp constants are
treated literally. This matches historical behavior.
yylex/nextc fixed so that even null characters can be included
in the source code.
do_format now handles cases where a format specifier doesn't end in
a control letter. --lint reports an error.
strftime() now uses a default time format equivalent to that of the
Unix date command, thus it can be called with no arguments.
Gawk now catches functions that are used but not defined at parse time
instead of at run time. (This is a lint error, making it fatal could break
old code.)
Arrays that max out are now handled correctly.
Integer formats outside the range of an unsigned long are now detected
correctly using the SunOS 4.x cc compiler.
--traditional option added as new preferred name for --compat, in keeping
with GCC.
--lint-old option added, so that warnings about things not in old awk
are only given if explicitly asked for.
`next file' has changed to one word, `nextfile'. `next file' is still
accepted but generates a lint warning. `next file' will go away eventually.
Gawk with --lint will now notice empty source files and empty data files.
Amiga support using the Unix emulation added. Thanks to fnf@ninemoons.com.
test/Makefile is now "parallel-make safe".
Gawk now uses POSIX regexps + GNU regex ops by default. --posix goes to
pure posix regexps, and --compat goes to traditional Unix regexps. However,
interval expressions, even though specified by POSIX, are turned off by
default, to avoid breaking old code.
IGNORECASE now applies to string comparison as well as regexp operations.
The AT&T Bell Labs Research awk fflush builtin function is now supported.
fflush is extended to flush stdout if no arg and everything if given
the null string as an argument.
If RS is more than one character, it is treated as a regular expression
and records are delimited accordingly. The variable RT is set to the record
terminator string. This is disabled in compatibility mode.
If FS is set to the null string (or the third arg. of split() is the null
string), splitting is done at every single character. This is disabled in
compatibility mode.
Gawk now uses the Autoconf generated configure script, doing away with all
the config/* files and the machinery that went with them. The Makefile.in
has also changed accordingly, complete with all the standard GNU Makefile
targets. (Non-unix systems may still have their own config.h and Makefile;
see the appropriate README_d/README.* and/or subdirectory.)
The source code has been cleaned up somewhat and the formatting improved.
Changes from 2.15.5 to 2.15.6
-----------------------------
Copyrights updated on all changed files.
test directory enhanced with four new tests.
Gawk now generates a warning for \x without following hexadecimal digits.
In this case, it returns 'x', not \0.
Several fixes in main.c related to variable initialization:
CONVFMT has a default value
resetup is called before initializing variables
the varinit table fixed up a bit (see the comments)
gawk.1 updated with new BUG REPORTS section.
A plain `print' inside a BEGIN or END now generates a lint warning (awk.y).
Small fix in iop.c:get_a_record to avoid reading uninitialized memory.
awk.y:yylex now does a better job of handling things if the source file
does not end in a newline. Probably there is more work to be done.
Memory leaks fixed in awk.y, particularly in cases of duplicate function
parameters. Also, calling a function doesn't leak memory during parsing.
Empty function bodies are now allowed (awk.y).
Gawk now detects duplicate parameter names in functions (awk.y).
New function `error' in msg.c added for use from awk.y.
eval.c:r_get_lhs now checks if its argument is a parameter on the stack,
and pulls down the real variable. This catches more 'using an array as
a scalar' kinds of errors.
main.c recovers C alloca space after parsing, this is important for
bison-based parsers. re.c recovers C alloca space after doing an research.
[Changes from Pat Rankin]
builtin.c now declares the random() related functions based on
RANDOM_MISSING from config.h. [Suggested by Pat Rankin]
awk.h now handles alloca correctly for HP-UX. [Kaveh Ghazi]