gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[SCM] gawk branch, feature/minrx, updated. gawk-4.1.0-5580-gb1a8f968


From: Arnold Robbins
Subject: [SCM] gawk branch, feature/minrx, updated. gawk-4.1.0-5580-gb1a8f968
Date: Tue, 2 Apr 2024 02:50:35 -0400 (EDT)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, feature/minrx has been updated
       via  b1a8f968d508058fe52f2db6393ca2891c292fb5 (commit)
      from  94ccd5e886d6581096c021e525d3f61c9e298a89 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=b1a8f968d508058fe52f2db6393ca2891c292fb5

commit b1a8f968d508058fe52f2db6393ca2891c292fb5
Author: Arnold D. Robbins <arnold@skeeve.com>
Date:   Tue Apr 2 09:50:20 2024 +0300

    Doc update for MinRX.

diff --git a/doc/ChangeLog b/doc/ChangeLog
index 1a82bbaf..b148fdb1 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,8 @@
+2024-04-02         Arnold D. Robbins     <arnold@skeeve.com>
+
+       * gawk.texi (Choosing Matchers): New section on MinRX vs.
+       the GNU matchers.
+
 2024-03-03         Arnold D. Robbins     <arnold@skeeve.com>
 
        * gawk.texi (Extension Sample Inplace): Document that it
diff --git a/doc/gawk.info b/doc/gawk.info
index fcce95d9..2b739230 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -178,6 +178,7 @@ in (a) below.  A copy of the license is included in the 
section entitled
 * Computed Regexps::                    Using Dynamic Regexps.
 * GNU Regexp Operators::                Operators specific to GNU software.
 * Case-sensitivity::                    How to do case-insensitive matching.
+* Choosing Matchers::                   Selecting the regexp matcher.
 * Regexp Summary::                      Regular expressions summary.
 * Records::                             Controlling how data is split into
                                         records.
@@ -3620,6 +3621,7 @@ you specify more complicated classes of strings.
 * Computed Regexps::            Using Dynamic Regexps.
 * GNU Regexp Operators::        Operators specific to GNU software.
 * Case-sensitivity::            How to do case-insensitive matching.
+* Choosing Matchers::           Selecting the regexp matcher.
 * Regexp Summary::              Regular expressions summary.
 
 
@@ -4438,7 +4440,7 @@ No options
      any real effect.
 
 
-File: gawk.info,  Node: Case-sensitivity,  Next: Regexp Summary,  Prev: GNU 
Regexp Operators,  Up: Regexp
+File: gawk.info,  Node: Case-sensitivity,  Next: Choosing Matchers,  Prev: GNU 
Regexp Operators,  Up: Regexp
 
 3.8 Case Sensitivity in Matching
 ================================
@@ -4512,10 +4514,47 @@ and we don't recommend it.
 that ‘gawk’ does the right thing.
 
 
-File: gawk.info,  Node: Regexp Summary,  Prev: Case-sensitivity,  Up: Regexp
+File: gawk.info,  Node: Choosing Matchers,  Next: Regexp Summary,  Prev: 
Case-sensitivity,  Up: Regexp
 
-3.9 Summary
-===========
+3.9 Selecting the Regexp Matching Engine
+========================================
+
+Release *FIXME: 5.x.y* of ‘gawk’ introduced a new regular expression
+matching engine, named MinRX (see FIXME: URL here).
+
+   MinRX is fully compliant with the POSIX standard for Extended Regular
+Expressions (EREs), including the additional features needed by ‘awk’
+and ‘gawk’.  It is also a little stricter in terms of accepting valid
+regular expression syntax when specifying a regexp.  (These restrictions
+apply to corner cases that should not come up in day-to-day use.)
+
+   Previously, ‘gawk’ used GNU ‘regex’ and ‘dfa’ from GNULIB. These
+matchers are fast and generally robust, albeit not fully POSIX
+compliant.  MinRX replaces both of them.
+
+   Because regular expression matching is such a fundamental part of
+what ‘awk’ programs do, introducing a new regular expression engine has
+some risk associated with it.  To alleviate the risk, for the term of
+one major release, ‘gawk’ continues to provide access to the original
+regexp matchers should that be needed.
+
+   If the environment variable ‘GAWK_GNU_MATCHERS’ exists, then ‘gawk’
+switches to using GNU ‘regex’ and ‘dfa’, as previously.  Otherwise, the
+MinRX matcher is the default and that is what it uses.
+
+   Should you find a need to switch from MinRX to the original matchers,
+_please_ submit a bug report describing what did not work (*note
+Bugs::).  Doing so is very important, as it will help the maintainers
+and the MinRX author to fix any issues that are found.
+
+   After one major release, the old matchers, and the use of the
+‘GAWK_GNU_MATCHERS’ environment variable, will be removed from ‘gawk’.
+
+
+File: gawk.info,  Node: Regexp Summary,  Prev: Choosing Matchers,  Up: Regexp
+
+3.10 Summary
+============
 
    • Regular expressions describe sets of strings to be matched.  In
      ‘awk’, regular expression constants are written enclosed between
@@ -37602,6 +37641,8 @@ Index
 * environment variables, AWKPATH <11>:   OpenVMS Running.     (line  50)
 * environment variables, AWKREADFUNC:    Other Environment Variables.
                                                               (line  57)
+* environment variables, GAWK_GNU_MATCHERS: Choosing Matchers.
+                                                              (line  25)
 * environment variables, GAWK_LOCALE_DIR: Other Environment Variables.
                                                               (line  70)
 * environment variables, GAWK_LOCALE_DIR <1>: Explaining gettext.
@@ -39825,627 +39866,628 @@ Index
 
 Tag Table:
 Node: Top1203
-Node: Foreword347032
-Node: Foreword451606
-Node: Preface53150
-Ref: Preface-Footnote-156136
-Ref: Preface-Footnote-256245
-Ref: Preface-Footnote-356479
-Node: History56625
-Node: Names59239
-Ref: Names-Footnote-160393
-Node: This Manual60556
-Ref: This Manual-Footnote-167485
-Node: Conventions67593
-Node: Manual History70022
-Ref: Manual History-Footnote-173047
-Ref: Manual History-Footnote-273088
-Node: How To Contribute73162
-Node: Acknowledgments74108
-Node: Getting Started79097
-Node: Running gawk81624
-Node: One-shot82842
-Node: Read Terminal84141
-Node: Long86195
-Node: Executable Scripts87845
-Ref: Executable Scripts-Footnote-190615
-Node: Comments90722
-Node: Quoting93252
-Node: DOS Quoting98896
-Node: Sample Data Files100976
-Node: Very Simple103611
-Node: Two Rules109865
-Node: More Complex111817
-Node: Statements/Lines114237
-Ref: Statements/Lines-Footnote-1119749
-Node: Other Features120038
-Node: When121006
-Ref: When-Footnote-1122808
-Node: Intro Summary122873
-Node: Invoking Gawk123827
-Node: Command Line125389
-Node: Options126239
-Ref: Options-Footnote-1145579
-Ref: Options-Footnote-2145814
-Node: Other Arguments145839
-Node: Naming Standard Input150004
-Node: Environment Variables151274
-Node: AWKPATH Variable151848
-Ref: AWKPATH Variable-Footnote-1155432
-Ref: AWKPATH Variable-Footnote-2155466
-Node: AWKLIBPATH Variable155857
-Ref: AWKLIBPATH Variable-Footnote-1157630
-Node: Other Environment Variables158025
-Node: Exit Status162501
-Node: Include Files163214
-Node: Loading Shared Libraries167266
-Node: Obsolete168756
-Node: Undocumented169505
-Node: Invoking Summary169802
-Node: Regexp172827
-Node: Regexp Usage174321
-Node: Escape Sequences176422
-Ref: Escape Sequences-Footnote-1183935
-Node: Regexp Operators184013
-Node: Regexp Operator Details184506
-Ref: Regexp Operator Details-Footnote-1192517
-Node: Interval Expressions192676
-Ref: Interval Expressions-Footnote-1194943
-Node: Bracket Expressions195041
-Ref: table-char-classes197597
-Node: Leftmost Longest201095
-Node: Computed Regexps202451
-Node: GNU Regexp Operators205966
-Node: Case-sensitivity209982
-Ref: Case-sensitivity-Footnote-1212932
-Ref: Case-sensitivity-Footnote-2213175
-Node: Regexp Summary213287
-Node: Reading Files214809
-Node: Records217126
-Node: awk split records218401
-Node: gawk split records223283
-Ref: gawk split records-Footnote-1228571
-Node: Fields228608
-Ref: Fields-Footnote-1231524
-Node: Nonconstant Fields231644
-Ref: Nonconstant Fields-Footnote-1233952
-Node: Changing Fields234168
-Node: Field Separators240466
-Node: Default Field Splitting243335
-Node: Regexp Field Splitting244477
-Node: Single Character Fields248306
-Node: Comma Separated Fields249395
-Ref: table-csv-examples250799
-Node: Command Line Field Separator253098
-Node: Full Line Fields256474
-Ref: Full Line Fields-Footnote-1258052
-Ref: Full Line Fields-Footnote-2258098
-Node: Field Splitting Summary258203
-Node: Constant Size260520
-Node: Fixed width data261264
-Node: Skipping intervening264779
-Node: Allowing trailing data265581
-Node: Fields with fixed data266642
-Node: Splitting By Content268264
-Ref: Splitting By Content-Footnote-1272714
-Node: More CSV272877
-Node: FS versus FPAT274535
-Node: Testing field creation275735
-Node: Multiple Line277509
-Node: Getline283978
-Node: Plain Getline286561
-Node: Getline/Variable289207
-Node: Getline/File290402
-Node: Getline/Variable/File291850
-Ref: Getline/Variable/File-Footnote-1293495
-Node: Getline/Pipe293591
-Node: Getline/Variable/Pipe296399
-Node: Getline/Coprocess297582
-Node: Getline/Variable/Coprocess298905
-Node: Getline Notes299671
-Node: Getline Summary302624
-Ref: table-getline-variants303068
-Node: Read Timeout303972
-Ref: Read Timeout-Footnote-1307934
-Node: Retrying Input307992
-Node: Command-line directories309259
-Node: Input Summary310197
-Node: Input Exercises313577
-Node: Printing314015
-Node: Print315958
-Node: Print Examples317459
-Node: Output Separators320304
-Node: OFMT322411
-Node: Printf324124
-Node: Basic Printf324929
-Node: Control Letters326564
-Node: Format Modifiers332010
-Node: Printf Examples338282
-Node: Redirection340823
-Node: Special FD348595
-Ref: Special FD-Footnote-1351893
-Node: Special Files351971
-Node: Other Inherited Files352600
-Node: Special Network353665
-Node: Special Caveats354553
-Node: Close Files And Pipes355536
-Ref: Close Files And Pipes-Footnote-1361660
-Node: Close Return Value361808
-Ref: table-close-pipe-return-values363079
-Ref: Close Return Value-Footnote-1363910
-Node: Noflush364066
-Node: Nonfatal365574
-Node: Output Summary367989
-Node: Output Exercises369275
-Node: Expressions369966
-Node: Values371166
-Node: Constants371844
-Node: Scalar Constants372539
-Ref: Scalar Constants-Footnote-1375115
-Ref: Scalar Constants-Footnote-2375365
-Node: Nondecimal-numbers375445
-Node: Regexp Constants378558
-Node: Using Constant Regexps379104
-Node: Standard Regexp Constants379750
-Node: Strong Regexp Constants383046
-Node: Variables386889
-Node: Using Variables387554
-Node: Assignment Options389528
-Node: Conversion392079
-Node: Strings And Numbers392611
-Ref: Strings And Numbers-Footnote-1395821
-Node: Locale influences conversions395930
-Ref: table-locale-affects398768
-Node: All Operators399410
-Node: Arithmetic Ops400051
-Node: Concatenation402874
-Ref: Concatenation-Footnote-1405810
-Node: Assignment Ops405929
-Ref: table-assign-ops411056
-Node: Increment Ops412437
-Node: Truth Values and Conditions416028
-Node: Truth Values417122
-Node: Typing and Comparison418202
-Node: Variable Typing419034
-Ref: Variable Typing-Footnote-1425678
-Ref: Variable Typing-Footnote-2425758
-Node: Comparison Operators425839
-Ref: table-relational-ops426266
-Node: POSIX String Comparison429942
-Ref: POSIX String Comparison-Footnote-1431699
-Ref: POSIX String Comparison-Footnote-2431842
-Node: Boolean Ops431926
-Ref: Boolean Ops-Footnote-1436600
-Node: Conditional Exp436696
-Node: Function Calls438476
-Node: Precedence442423
-Node: Locales446286
-Node: Expressions Summary447962
-Node: Patterns and Actions450617
-Node: Pattern Overview451753
-Node: Regexp Patterns453478
-Node: Expression Patterns454024
-Node: Ranges457929
-Node: BEGIN/END461103
-Node: Using BEGIN/END461912
-Ref: Using BEGIN/END-Footnote-1464820
-Node: I/O And BEGIN/END464930
-Node: BEGINFILE/ENDFILE467411
-Node: Empty470842
-Node: Using Shell Variables471159
-Node: Action Overview473495
-Node: Statements475930
-Node: If Statement477826
-Node: While Statement479389
-Node: Do Statement481477
-Node: For Statement482661
-Node: Switch Statement486016
-Node: Break Statement488565
-Node: Continue Statement490757
-Node: Next Statement492688
-Node: Nextfile Statement495167
-Node: Exit Statement498020
-Node: Built-in Variables500547
-Node: User-modified501724
-Node: Auto-set509931
-Ref: Auto-set-Footnote-1528015
-Ref: Auto-set-Footnote-2528233
-Node: ARGC and ARGV528289
-Node: Pattern Action Summary532718
-Node: Arrays535324
-Node: Array Basics536697
-Node: Array Intro537545
-Ref: figure-array-elements539556
-Ref: Array Intro-Footnote-1542409
-Node: Reference to Elements542541
-Node: Assigning Elements545061
-Node: Array Example545556
-Node: Scanning an Array547518
-Node: Controlling Scanning550613
-Ref: Controlling Scanning-Footnote-1557248
-Node: Numeric Array Subscripts557572
-Node: Uninitialized Subscripts559840
-Node: Delete561513
-Ref: Delete-Footnote-1564325
-Node: Multidimensional564382
-Node: Multiscanning567585
-Node: Arrays of Arrays569252
-Node: Arrays Summary573556
-Node: Functions575743
-Node: Built-in576875
-Node: Calling Built-in578064
-Node: Boolean Functions580104
-Node: Numeric Functions580666
-Ref: Numeric Functions-Footnote-1584851
-Ref: Numeric Functions-Footnote-2585534
-Ref: Numeric Functions-Footnote-3585586
-Node: String Functions585862
-Ref: String Functions-Footnote-1612313
-Ref: String Functions-Footnote-2612445
-Ref: String Functions-Footnote-3612701
-Node: Gory Details612788
-Ref: table-sub-escapes614797
-Ref: table-sub-proposed616428
-Ref: table-posix-sub617923
-Ref: table-gensub-escapes619596
-Ref: Gory Details-Footnote-1620515
-Node: I/O Functions620669
-Ref: table-system-return-values627345
-Ref: I/O Functions-Footnote-1629507
-Ref: I/O Functions-Footnote-2629655
-Node: Time Functions629775
-Ref: Time Functions-Footnote-1641248
-Ref: Time Functions-Footnote-2641316
-Ref: Time Functions-Footnote-3641478
-Ref: Time Functions-Footnote-4641589
-Ref: Time Functions-Footnote-5641705
-Ref: Time Functions-Footnote-6641932
-Node: Bitwise Functions642210
-Ref: table-bitwise-ops642808
-Ref: Bitwise Functions-Footnote-1649050
-Ref: Bitwise Functions-Footnote-2649227
-Node: Type Functions649422
-Node: I18N Functions651593
-Node: User-defined653328
-Node: Definition Syntax654074
-Ref: Definition Syntax-Footnote-1659892
-Node: Function Example659967
-Ref: Function Example-Footnote-1662946
-Node: Function Calling662968
-Node: Calling A Function663560
-Node: Variable Scope664530
-Node: Pass By Value/Reference667584
-Node: Function Caveats670312
-Ref: Function Caveats-Footnote-1672403
-Node: Return Statement672523
-Node: Dynamic Typing675555
-Node: Dynamic Typing Awk676133
-Node: Dynamic Typing Gawk678271
-Node: Indirect Calls681641
-Node: Functions Summary692778
-Node: Library Functions695744
-Ref: Library Functions-Footnote-1699292
-Ref: Library Functions-Footnote-2699437
-Node: Library Names699612
-Ref: Library Names-Footnote-1703383
-Ref: Library Names-Footnote-2703610
-Node: General Functions703704
-Node: Strtonum Function704974
-Node: Assert Function708056
-Node: Round Function711506
-Node: Cliff Random Function713078
-Node: Ordinal Functions714102
-Ref: Ordinal Functions-Footnote-1717205
-Ref: Ordinal Functions-Footnote-2717457
-Node: Join Function717671
-Ref: Join Function-Footnote-1719469
-Node: Getlocaltime Function719673
-Node: Readfile Function723447
-Node: Shell Quoting725476
-Node: Isnumeric Function726932
-Node: To CSV Function728368
-Node: Data File Management730460
-Node: Filetrans Function731092
-Node: Rewind Function735368
-Node: File Checking737339
-Ref: File Checking-Footnote-1738705
-Node: Empty Files738910
-Node: Ignoring Assigns740973
-Node: Getopt Function742547
-Ref: Getopt Function-Footnote-1758365
-Node: Passwd Functions758577
-Ref: Passwd Functions-Footnote-1767712
-Node: Group Functions767800
-Ref: Group Functions-Footnote-1775924
-Node: Walking Arrays776135
-Node: Library Functions Summary779181
-Node: Library Exercises780601
-Node: Sample Programs781086
-Node: Running Examples781868
-Node: Clones782620
-Node: Cut Program783888
-Node: Egrep Program794312
-Node: Id Program803617
-Node: Split Program813709
-Ref: Split Program-Footnote-1823922
-Node: Tee Program824107
-Node: Uniq Program827013
-Node: Wc Program834873
-Node: Bytes vs. Characters835268
-Node: Using extensions836868
-Node: wc program837646
-Node: Miscellaneous Programs842639
-Node: Dupword Program843864
-Node: Alarm Program845913
-Node: Translate Program850816
-Ref: Translate Program-Footnote-1855525
-Node: Labels Program855803
-Ref: Labels Program-Footnote-1859238
-Node: Word Sorting859322
-Node: History Sorting863496
-Node: Extract Program865769
-Node: Simple Sed874022
-Node: Igawk Program877232
-Ref: Igawk Program-Footnote-1892442
-Ref: Igawk Program-Footnote-2892648
-Ref: Igawk Program-Footnote-3892778
-Node: Anagram Program892905
-Node: Signature Program895991
-Node: Programs Summary897241
-Node: Programs Exercises898495
-Ref: Programs Exercises-Footnote-1902797
-Node: Advanced Features902883
-Node: Nondecimal Data905364
-Node: Boolean Typed Values906994
-Node: Array Sorting908951
-Node: Controlling Array Traversal909680
-Ref: Controlling Array Traversal-Footnote-1918183
-Node: Array Sorting Functions918305
-Ref: Array Sorting Functions-Footnote-1924402
-Node: Two-way I/O924610
-Ref: Two-way I/O-Footnote-1932581
-Ref: Two-way I/O-Footnote-2932772
-Node: TCP/IP Networking932854
-Node: Profiling936022
-Node: Persistent Memory945692
-Ref: Persistent Memory-Footnote-1955264
-Node: Extension Philosophy955395
-Node: Advanced Features Summary956922
-Node: Internationalization959188
-Node: I18N and L10N960890
-Node: Explaining gettext961585
-Ref: Explaining gettext-Footnote-1967721
-Ref: Explaining gettext-Footnote-2967914
-Node: Programmer i18n968079
-Ref: Programmer i18n-Footnote-1973191
-Node: Translator i18n973240
-Node: String Extraction974070
-Ref: String Extraction-Footnote-1975246
-Node: Printf Ordering975344
-Ref: Printf Ordering-Footnote-1978202
-Node: I18N Portability978270
-Ref: I18N Portability-Footnote-1980830
-Node: I18N Example980897
-Ref: I18N Example-Footnote-1984291
-Ref: I18N Example-Footnote-2984364
-Node: Gawk I18N984481
-Node: I18N Summary985135
-Node: Debugger986532
-Node: Debugging987552
-Node: Debugging Concepts988001
-Node: Debugging Terms989818
-Node: Awk Debugging992421
-Ref: Awk Debugging-Footnote-1993394
-Node: Sample Debugging Session993530
-Node: Debugger Invocation994080
-Node: Finding The Bug995705
-Node: List of Debugger Commands1002337
-Node: Breakpoint Control1003714
-Node: Debugger Execution Control1007536
-Node: Viewing And Changing Data1011010
-Node: Execution Stack1014744
-Node: Debugger Info1016425
-Node: Miscellaneous Debugger Commands1020720
-Node: Readline Support1025961
-Node: Limitations1026905
-Node: Debugging Summary1029529
-Node: Namespaces1030828
-Node: Global Namespace1031955
-Node: Qualified Names1033389
-Node: Default Namespace1034424
-Node: Changing The Namespace1035197
-Node: Naming Rules1036879
-Node: Internal Name Management1038794
-Node: Namespace Example1039864
-Node: Namespace And Features1042441
-Node: Namespace Summary1043896
-Node: Arbitrary Precision Arithmetic1045407
-Node: Computer Arithmetic1046926
-Ref: table-numeric-ranges1050734
-Ref: table-floating-point-ranges1051231
-Ref: Computer Arithmetic-Footnote-11051889
-Node: Math Definitions1051946
-Ref: table-ieee-formats1054978
-Node: MPFR features1055551
-Node: MPFR On Parole1056004
-Ref: MPFR On Parole-Footnote-11056845
-Node: MPFR Intro1057004
-Node: FP Math Caution1058688
-Ref: FP Math Caution-Footnote-11059760
-Node: Inexactness of computations1060133
-Node: Inexact representation1061164
-Node: Comparing FP Values1062545
-Node: Errors accumulate1063803
-Node: Strange values1065268
-Ref: Strange values-Footnote-11067922
-Node: Getting Accuracy1068027
-Node: Try To Round1070764
-Node: Setting precision1071671
-Ref: table-predefined-precision-strings1072376
-Node: Setting the rounding mode1074260
-Ref: table-gawk-rounding-modes1074642
-Ref: Setting the rounding mode-Footnote-11078694
-Node: Arbitrary Precision Integers1078877
-Ref: Arbitrary Precision Integers-Footnote-11082087
-Node: Checking for MPFR1082240
-Node: POSIX Floating Point Problems1083730
-Ref: POSIX Floating Point Problems-Footnote-11088550
-Node: Floating point summary1088588
-Node: Dynamic Extensions1090844
-Node: Extension Intro1092441
-Node: Plugin License1093743
-Node: Extension Mechanism Outline1094556
-Ref: figure-load-extension1095007
-Ref: figure-register-new-function1096585
-Ref: figure-call-new-function1097694
-Node: Extension API Description1099809
-Node: Extension API Functions Introduction1101538
-Ref: table-api-std-headers1103432
-Node: General Data Types1107873
-Ref: General Data Types-Footnote-11117019
-Node: Memory Allocation Functions1117322
-Ref: Memory Allocation Functions-Footnote-11122039
-Node: Constructor Functions1122138
-Node: API Ownership of MPFR and GMP Values1126039
-Node: Registration Functions1127592
-Node: Extension Functions1128296
-Node: Exit Callback Functions1133870
-Node: Extension Version String1135184
-Node: Input Parsers1135879
-Node: Output Wrappers1150498
-Node: Two-way processors1155340
-Node: Printing Messages1157693
-Ref: Printing Messages-Footnote-11158904
-Node: Updating ERRNO1159057
-Node: Requesting Values1159856
-Ref: table-value-types-returned1160609
-Node: Accessing Parameters1162668
-Node: Symbol Table Access1163949
-Node: Symbol table by name1164461
-Ref: Symbol table by name-Footnote-11167662
-Node: Symbol table by cookie1167794
-Ref: Symbol table by cookie-Footnote-11172063
-Node: Cached values1172127
-Ref: Cached values-Footnote-11175759
-Node: Array Manipulation1175916
-Ref: Array Manipulation-Footnote-11177015
-Node: Array Data Types1177052
-Ref: Array Data Types-Footnote-11179870
-Node: Array Functions1179966
-Node: Flattening Arrays1184995
-Node: Creating Arrays1192043
-Node: Redirection API1196885
-Node: Extension API Variables1199902
-Node: Extension Versioning1200625
-Ref: gawk-api-version1201054
-Node: Extension GMP/MPFR Versioning1202841
-Node: Extension API Informational Variables1204545
-Node: Extension API Boilerplate1205798
-Node: Changes from API V11209928
-Node: Finding Extensions1211560
-Node: Extension Example1212135
-Node: Internal File Description1212957
-Node: Internal File Ops1217249
-Ref: Internal File Ops-Footnote-11228799
-Node: Using Internal File Ops1228947
-Ref: Using Internal File Ops-Footnote-11231378
-Node: Extension Samples1231656
-Node: Extension Sample File Functions1233225
-Node: Extension Sample Fnmatch1241350
-Node: Extension Sample Fork1242945
-Node: Extension Sample Inplace1244221
-Node: Extension Sample Ord1248323
-Node: Extension Sample Readdir1249199
-Ref: table-readdir-file-types1249988
-Node: Extension Sample Revout1251344
-Node: Extension Sample Rev2way1251941
-Node: Extension Sample Read write array1252693
-Node: Extension Sample Readfile1255967
-Node: Extension Sample Time1257098
-Node: Extension Sample API Tests1259098
-Node: gawkextlib1259606
-Node: Extension summary1262638
-Node: Extension Exercises1266486
-Node: Language History1267756
-Node: V7/SVR3.11269468
-Node: SVR41271818
-Node: POSIX1273350
-Node: BTL1274775
-Node: POSIX/GNU1275542
-Node: Feature History1282197
-Node: Common Extensions1301999
-Node: Ranges and Locales1303474
-Ref: Ranges and Locales-Footnote-11308259
-Ref: Ranges and Locales-Footnote-21308286
-Ref: Ranges and Locales-Footnote-31308521
-Node: Contributors1308744
-Node: History summary1314935
-Node: Installation1316377
-Node: Gawk Distribution1317341
-Node: Getting1317833
-Node: Extracting1318832
-Node: Distribution contents1320538
-Node: Unix Installation1328428
-Node: Quick Installation1329248
-Node: Compiling with MPFR1331788
-Node: Shell Startup Files1332494
-Node: Additional Configuration Options1333651
-Node: Configuration Philosophy1336034
-Node: Compiling from Git1338534
-Node: Building the Documentation1339093
-Node: Non-Unix Installation1340505
-Node: PC Installation1340981
-Node: PC Binary Installation1341850
-Node: PC Compiling1342743
-Node: PC Using1343921
-Node: Cygwin1347637
-Node: MSYS1348889
-Node: OpenVMS Installation1349515
-Node: OpenVMS Compilation1350196
-Ref: OpenVMS Compilation-Footnote-11351679
-Node: OpenVMS Dynamic Extensions1351737
-Node: OpenVMS Installation Details1353373
-Node: OpenVMS Running1355804
-Node: OpenVMS GNV1359941
-Node: Bugs1360696
-Node: Bug definition1361616
-Node: Bug address1365217
-Node: Usenet1368786
-Node: Performance bugs1369999
-Node: Asking for help1373015
-Node: Maintainers1375002
-Node: Other Versions1376029
-Node: Installation summary1385633
-Node: Notes1387015
-Node: Compatibility Mode1387825
-Node: Additions1388647
-Node: Accessing The Source1389592
-Node: Adding Code1391123
-Node: New Ports1398234
-Node: Derived Files1402737
-Ref: Derived Files-Footnote-11408548
-Ref: Derived Files-Footnote-21408583
-Ref: Derived Files-Footnote-31409194
-Node: Future Extensions1409308
-Node: Implementation Limitations1409978
-Node: Extension Design1411220
-Node: Old Extension Problems1412380
-Ref: Old Extension Problems-Footnote-11413952
-Node: Extension New Mechanism Goals1414013
-Ref: Extension New Mechanism Goals-Footnote-11417483
-Node: Extension Other Design Decisions1417684
-Node: Extension Future Growth1419881
-Node: Notes summary1420501
-Node: Basic Concepts1421711
-Node: Basic High Level1422396
-Ref: figure-general-flow1422678
-Ref: figure-process-flow1423380
-Ref: Basic High Level-Footnote-11426750
-Node: Basic Data Typing1426939
-Node: Glossary1430347
-Node: Copying1463226
-Node: GNU Free Documentation License1500784
-Node: Index1525907
+Node: Foreword347102
+Node: Foreword451676
+Node: Preface53220
+Ref: Preface-Footnote-156206
+Ref: Preface-Footnote-256315
+Ref: Preface-Footnote-356549
+Node: History56695
+Node: Names59309
+Ref: Names-Footnote-160463
+Node: This Manual60626
+Ref: This Manual-Footnote-167555
+Node: Conventions67663
+Node: Manual History70092
+Ref: Manual History-Footnote-173117
+Ref: Manual History-Footnote-273158
+Node: How To Contribute73232
+Node: Acknowledgments74178
+Node: Getting Started79167
+Node: Running gawk81694
+Node: One-shot82912
+Node: Read Terminal84211
+Node: Long86265
+Node: Executable Scripts87915
+Ref: Executable Scripts-Footnote-190685
+Node: Comments90792
+Node: Quoting93322
+Node: DOS Quoting98966
+Node: Sample Data Files101046
+Node: Very Simple103681
+Node: Two Rules109935
+Node: More Complex111887
+Node: Statements/Lines114307
+Ref: Statements/Lines-Footnote-1119819
+Node: Other Features120108
+Node: When121076
+Ref: When-Footnote-1122878
+Node: Intro Summary122943
+Node: Invoking Gawk123897
+Node: Command Line125459
+Node: Options126309
+Ref: Options-Footnote-1145649
+Ref: Options-Footnote-2145884
+Node: Other Arguments145909
+Node: Naming Standard Input150074
+Node: Environment Variables151344
+Node: AWKPATH Variable151918
+Ref: AWKPATH Variable-Footnote-1155502
+Ref: AWKPATH Variable-Footnote-2155536
+Node: AWKLIBPATH Variable155927
+Ref: AWKLIBPATH Variable-Footnote-1157700
+Node: Other Environment Variables158095
+Node: Exit Status162571
+Node: Include Files163284
+Node: Loading Shared Libraries167336
+Node: Obsolete168826
+Node: Undocumented169575
+Node: Invoking Summary169872
+Node: Regexp172897
+Node: Regexp Usage174453
+Node: Escape Sequences176554
+Ref: Escape Sequences-Footnote-1184067
+Node: Regexp Operators184145
+Node: Regexp Operator Details184638
+Ref: Regexp Operator Details-Footnote-1192649
+Node: Interval Expressions192808
+Ref: Interval Expressions-Footnote-1195075
+Node: Bracket Expressions195173
+Ref: table-char-classes197729
+Node: Leftmost Longest201227
+Node: Computed Regexps202583
+Node: GNU Regexp Operators206098
+Node: Case-sensitivity210114
+Ref: Case-sensitivity-Footnote-1213067
+Ref: Case-sensitivity-Footnote-2213310
+Node: Choosing Matchers213422
+Node: Regexp Summary215236
+Node: Reading Files216761
+Node: Records219078
+Node: awk split records220353
+Node: gawk split records225235
+Ref: gawk split records-Footnote-1230523
+Node: Fields230560
+Ref: Fields-Footnote-1233476
+Node: Nonconstant Fields233596
+Ref: Nonconstant Fields-Footnote-1235904
+Node: Changing Fields236120
+Node: Field Separators242418
+Node: Default Field Splitting245287
+Node: Regexp Field Splitting246429
+Node: Single Character Fields250258
+Node: Comma Separated Fields251347
+Ref: table-csv-examples252751
+Node: Command Line Field Separator255050
+Node: Full Line Fields258426
+Ref: Full Line Fields-Footnote-1260004
+Ref: Full Line Fields-Footnote-2260050
+Node: Field Splitting Summary260155
+Node: Constant Size262472
+Node: Fixed width data263216
+Node: Skipping intervening266731
+Node: Allowing trailing data267533
+Node: Fields with fixed data268594
+Node: Splitting By Content270216
+Ref: Splitting By Content-Footnote-1274666
+Node: More CSV274829
+Node: FS versus FPAT276487
+Node: Testing field creation277687
+Node: Multiple Line279461
+Node: Getline285930
+Node: Plain Getline288513
+Node: Getline/Variable291159
+Node: Getline/File292354
+Node: Getline/Variable/File293802
+Ref: Getline/Variable/File-Footnote-1295447
+Node: Getline/Pipe295543
+Node: Getline/Variable/Pipe298351
+Node: Getline/Coprocess299534
+Node: Getline/Variable/Coprocess300857
+Node: Getline Notes301623
+Node: Getline Summary304576
+Ref: table-getline-variants305020
+Node: Read Timeout305924
+Ref: Read Timeout-Footnote-1309886
+Node: Retrying Input309944
+Node: Command-line directories311211
+Node: Input Summary312149
+Node: Input Exercises315529
+Node: Printing315967
+Node: Print317910
+Node: Print Examples319411
+Node: Output Separators322256
+Node: OFMT324363
+Node: Printf326076
+Node: Basic Printf326881
+Node: Control Letters328516
+Node: Format Modifiers333962
+Node: Printf Examples340234
+Node: Redirection342775
+Node: Special FD350547
+Ref: Special FD-Footnote-1353845
+Node: Special Files353923
+Node: Other Inherited Files354552
+Node: Special Network355617
+Node: Special Caveats356505
+Node: Close Files And Pipes357488
+Ref: Close Files And Pipes-Footnote-1363612
+Node: Close Return Value363760
+Ref: table-close-pipe-return-values365031
+Ref: Close Return Value-Footnote-1365862
+Node: Noflush366018
+Node: Nonfatal367526
+Node: Output Summary369941
+Node: Output Exercises371227
+Node: Expressions371918
+Node: Values373118
+Node: Constants373796
+Node: Scalar Constants374491
+Ref: Scalar Constants-Footnote-1377067
+Ref: Scalar Constants-Footnote-2377317
+Node: Nondecimal-numbers377397
+Node: Regexp Constants380510
+Node: Using Constant Regexps381056
+Node: Standard Regexp Constants381702
+Node: Strong Regexp Constants384998
+Node: Variables388841
+Node: Using Variables389506
+Node: Assignment Options391480
+Node: Conversion394031
+Node: Strings And Numbers394563
+Ref: Strings And Numbers-Footnote-1397773
+Node: Locale influences conversions397882
+Ref: table-locale-affects400720
+Node: All Operators401362
+Node: Arithmetic Ops402003
+Node: Concatenation404826
+Ref: Concatenation-Footnote-1407762
+Node: Assignment Ops407881
+Ref: table-assign-ops413008
+Node: Increment Ops414389
+Node: Truth Values and Conditions417980
+Node: Truth Values419074
+Node: Typing and Comparison420154
+Node: Variable Typing420986
+Ref: Variable Typing-Footnote-1427630
+Ref: Variable Typing-Footnote-2427710
+Node: Comparison Operators427791
+Ref: table-relational-ops428218
+Node: POSIX String Comparison431894
+Ref: POSIX String Comparison-Footnote-1433651
+Ref: POSIX String Comparison-Footnote-2433794
+Node: Boolean Ops433878
+Ref: Boolean Ops-Footnote-1438552
+Node: Conditional Exp438648
+Node: Function Calls440428
+Node: Precedence444375
+Node: Locales448238
+Node: Expressions Summary449914
+Node: Patterns and Actions452569
+Node: Pattern Overview453705
+Node: Regexp Patterns455430
+Node: Expression Patterns455976
+Node: Ranges459881
+Node: BEGIN/END463055
+Node: Using BEGIN/END463864
+Ref: Using BEGIN/END-Footnote-1466772
+Node: I/O And BEGIN/END466882
+Node: BEGINFILE/ENDFILE469363
+Node: Empty472794
+Node: Using Shell Variables473111
+Node: Action Overview475447
+Node: Statements477882
+Node: If Statement479778
+Node: While Statement481341
+Node: Do Statement483429
+Node: For Statement484613
+Node: Switch Statement487968
+Node: Break Statement490517
+Node: Continue Statement492709
+Node: Next Statement494640
+Node: Nextfile Statement497119
+Node: Exit Statement499972
+Node: Built-in Variables502499
+Node: User-modified503676
+Node: Auto-set511883
+Ref: Auto-set-Footnote-1529967
+Ref: Auto-set-Footnote-2530185
+Node: ARGC and ARGV530241
+Node: Pattern Action Summary534670
+Node: Arrays537276
+Node: Array Basics538649
+Node: Array Intro539497
+Ref: figure-array-elements541508
+Ref: Array Intro-Footnote-1544361
+Node: Reference to Elements544493
+Node: Assigning Elements547013
+Node: Array Example547508
+Node: Scanning an Array549470
+Node: Controlling Scanning552565
+Ref: Controlling Scanning-Footnote-1559200
+Node: Numeric Array Subscripts559524
+Node: Uninitialized Subscripts561792
+Node: Delete563465
+Ref: Delete-Footnote-1566277
+Node: Multidimensional566334
+Node: Multiscanning569537
+Node: Arrays of Arrays571204
+Node: Arrays Summary575508
+Node: Functions577695
+Node: Built-in578827
+Node: Calling Built-in580016
+Node: Boolean Functions582056
+Node: Numeric Functions582618
+Ref: Numeric Functions-Footnote-1586803
+Ref: Numeric Functions-Footnote-2587486
+Ref: Numeric Functions-Footnote-3587538
+Node: String Functions587814
+Ref: String Functions-Footnote-1614265
+Ref: String Functions-Footnote-2614397
+Ref: String Functions-Footnote-3614653
+Node: Gory Details614740
+Ref: table-sub-escapes616749
+Ref: table-sub-proposed618380
+Ref: table-posix-sub619875
+Ref: table-gensub-escapes621548
+Ref: Gory Details-Footnote-1622467
+Node: I/O Functions622621
+Ref: table-system-return-values629297
+Ref: I/O Functions-Footnote-1631459
+Ref: I/O Functions-Footnote-2631607
+Node: Time Functions631727
+Ref: Time Functions-Footnote-1643200
+Ref: Time Functions-Footnote-2643268
+Ref: Time Functions-Footnote-3643430
+Ref: Time Functions-Footnote-4643541
+Ref: Time Functions-Footnote-5643657
+Ref: Time Functions-Footnote-6643884
+Node: Bitwise Functions644162
+Ref: table-bitwise-ops644760
+Ref: Bitwise Functions-Footnote-1651002
+Ref: Bitwise Functions-Footnote-2651179
+Node: Type Functions651374
+Node: I18N Functions653545
+Node: User-defined655280
+Node: Definition Syntax656026
+Ref: Definition Syntax-Footnote-1661844
+Node: Function Example661919
+Ref: Function Example-Footnote-1664898
+Node: Function Calling664920
+Node: Calling A Function665512
+Node: Variable Scope666482
+Node: Pass By Value/Reference669536
+Node: Function Caveats672264
+Ref: Function Caveats-Footnote-1674355
+Node: Return Statement674475
+Node: Dynamic Typing677507
+Node: Dynamic Typing Awk678085
+Node: Dynamic Typing Gawk680223
+Node: Indirect Calls683593
+Node: Functions Summary694730
+Node: Library Functions697696
+Ref: Library Functions-Footnote-1701244
+Ref: Library Functions-Footnote-2701389
+Node: Library Names701564
+Ref: Library Names-Footnote-1705335
+Ref: Library Names-Footnote-2705562
+Node: General Functions705656
+Node: Strtonum Function706926
+Node: Assert Function710008
+Node: Round Function713458
+Node: Cliff Random Function715030
+Node: Ordinal Functions716054
+Ref: Ordinal Functions-Footnote-1719157
+Ref: Ordinal Functions-Footnote-2719409
+Node: Join Function719623
+Ref: Join Function-Footnote-1721421
+Node: Getlocaltime Function721625
+Node: Readfile Function725399
+Node: Shell Quoting727428
+Node: Isnumeric Function728884
+Node: To CSV Function730320
+Node: Data File Management732412
+Node: Filetrans Function733044
+Node: Rewind Function737320
+Node: File Checking739291
+Ref: File Checking-Footnote-1740657
+Node: Empty Files740862
+Node: Ignoring Assigns742925
+Node: Getopt Function744499
+Ref: Getopt Function-Footnote-1760317
+Node: Passwd Functions760529
+Ref: Passwd Functions-Footnote-1769664
+Node: Group Functions769752
+Ref: Group Functions-Footnote-1777876
+Node: Walking Arrays778087
+Node: Library Functions Summary781133
+Node: Library Exercises782553
+Node: Sample Programs783038
+Node: Running Examples783820
+Node: Clones784572
+Node: Cut Program785840
+Node: Egrep Program796264
+Node: Id Program805569
+Node: Split Program815661
+Ref: Split Program-Footnote-1825874
+Node: Tee Program826059
+Node: Uniq Program828965
+Node: Wc Program836825
+Node: Bytes vs. Characters837220
+Node: Using extensions838820
+Node: wc program839598
+Node: Miscellaneous Programs844591
+Node: Dupword Program845816
+Node: Alarm Program847865
+Node: Translate Program852768
+Ref: Translate Program-Footnote-1857477
+Node: Labels Program857755
+Ref: Labels Program-Footnote-1861190
+Node: Word Sorting861274
+Node: History Sorting865448
+Node: Extract Program867721
+Node: Simple Sed875974
+Node: Igawk Program879184
+Ref: Igawk Program-Footnote-1894394
+Ref: Igawk Program-Footnote-2894600
+Ref: Igawk Program-Footnote-3894730
+Node: Anagram Program894857
+Node: Signature Program897943
+Node: Programs Summary899193
+Node: Programs Exercises900447
+Ref: Programs Exercises-Footnote-1904749
+Node: Advanced Features904835
+Node: Nondecimal Data907316
+Node: Boolean Typed Values908946
+Node: Array Sorting910903
+Node: Controlling Array Traversal911632
+Ref: Controlling Array Traversal-Footnote-1920135
+Node: Array Sorting Functions920257
+Ref: Array Sorting Functions-Footnote-1926354
+Node: Two-way I/O926562
+Ref: Two-way I/O-Footnote-1934533
+Ref: Two-way I/O-Footnote-2934724
+Node: TCP/IP Networking934806
+Node: Profiling937974
+Node: Persistent Memory947644
+Ref: Persistent Memory-Footnote-1957216
+Node: Extension Philosophy957347
+Node: Advanced Features Summary958874
+Node: Internationalization961140
+Node: I18N and L10N962842
+Node: Explaining gettext963537
+Ref: Explaining gettext-Footnote-1969673
+Ref: Explaining gettext-Footnote-2969866
+Node: Programmer i18n970031
+Ref: Programmer i18n-Footnote-1975143
+Node: Translator i18n975192
+Node: String Extraction976022
+Ref: String Extraction-Footnote-1977198
+Node: Printf Ordering977296
+Ref: Printf Ordering-Footnote-1980154
+Node: I18N Portability980222
+Ref: I18N Portability-Footnote-1982782
+Node: I18N Example982849
+Ref: I18N Example-Footnote-1986243
+Ref: I18N Example-Footnote-2986316
+Node: Gawk I18N986433
+Node: I18N Summary987087
+Node: Debugger988484
+Node: Debugging989504
+Node: Debugging Concepts989953
+Node: Debugging Terms991770
+Node: Awk Debugging994373
+Ref: Awk Debugging-Footnote-1995346
+Node: Sample Debugging Session995482
+Node: Debugger Invocation996032
+Node: Finding The Bug997657
+Node: List of Debugger Commands1004289
+Node: Breakpoint Control1005666
+Node: Debugger Execution Control1009488
+Node: Viewing And Changing Data1012962
+Node: Execution Stack1016696
+Node: Debugger Info1018377
+Node: Miscellaneous Debugger Commands1022672
+Node: Readline Support1027913
+Node: Limitations1028857
+Node: Debugging Summary1031481
+Node: Namespaces1032780
+Node: Global Namespace1033907
+Node: Qualified Names1035341
+Node: Default Namespace1036376
+Node: Changing The Namespace1037149
+Node: Naming Rules1038831
+Node: Internal Name Management1040746
+Node: Namespace Example1041816
+Node: Namespace And Features1044393
+Node: Namespace Summary1045848
+Node: Arbitrary Precision Arithmetic1047359
+Node: Computer Arithmetic1048878
+Ref: table-numeric-ranges1052686
+Ref: table-floating-point-ranges1053183
+Ref: Computer Arithmetic-Footnote-11053841
+Node: Math Definitions1053898
+Ref: table-ieee-formats1056930
+Node: MPFR features1057503
+Node: MPFR On Parole1057956
+Ref: MPFR On Parole-Footnote-11058797
+Node: MPFR Intro1058956
+Node: FP Math Caution1060640
+Ref: FP Math Caution-Footnote-11061712
+Node: Inexactness of computations1062085
+Node: Inexact representation1063116
+Node: Comparing FP Values1064497
+Node: Errors accumulate1065755
+Node: Strange values1067220
+Ref: Strange values-Footnote-11069874
+Node: Getting Accuracy1069979
+Node: Try To Round1072716
+Node: Setting precision1073623
+Ref: table-predefined-precision-strings1074328
+Node: Setting the rounding mode1076212
+Ref: table-gawk-rounding-modes1076594
+Ref: Setting the rounding mode-Footnote-11080646
+Node: Arbitrary Precision Integers1080829
+Ref: Arbitrary Precision Integers-Footnote-11084039
+Node: Checking for MPFR1084192
+Node: POSIX Floating Point Problems1085682
+Ref: POSIX Floating Point Problems-Footnote-11090502
+Node: Floating point summary1090540
+Node: Dynamic Extensions1092796
+Node: Extension Intro1094393
+Node: Plugin License1095695
+Node: Extension Mechanism Outline1096508
+Ref: figure-load-extension1096959
+Ref: figure-register-new-function1098537
+Ref: figure-call-new-function1099646
+Node: Extension API Description1101761
+Node: Extension API Functions Introduction1103490
+Ref: table-api-std-headers1105384
+Node: General Data Types1109825
+Ref: General Data Types-Footnote-11118971
+Node: Memory Allocation Functions1119274
+Ref: Memory Allocation Functions-Footnote-11123991
+Node: Constructor Functions1124090
+Node: API Ownership of MPFR and GMP Values1127991
+Node: Registration Functions1129544
+Node: Extension Functions1130248
+Node: Exit Callback Functions1135822
+Node: Extension Version String1137136
+Node: Input Parsers1137831
+Node: Output Wrappers1152450
+Node: Two-way processors1157292
+Node: Printing Messages1159645
+Ref: Printing Messages-Footnote-11160856
+Node: Updating ERRNO1161009
+Node: Requesting Values1161808
+Ref: table-value-types-returned1162561
+Node: Accessing Parameters1164620
+Node: Symbol Table Access1165901
+Node: Symbol table by name1166413
+Ref: Symbol table by name-Footnote-11169614
+Node: Symbol table by cookie1169746
+Ref: Symbol table by cookie-Footnote-11174015
+Node: Cached values1174079
+Ref: Cached values-Footnote-11177711
+Node: Array Manipulation1177868
+Ref: Array Manipulation-Footnote-11178967
+Node: Array Data Types1179004
+Ref: Array Data Types-Footnote-11181822
+Node: Array Functions1181918
+Node: Flattening Arrays1186947
+Node: Creating Arrays1193995
+Node: Redirection API1198837
+Node: Extension API Variables1201854
+Node: Extension Versioning1202577
+Ref: gawk-api-version1203006
+Node: Extension GMP/MPFR Versioning1204793
+Node: Extension API Informational Variables1206497
+Node: Extension API Boilerplate1207750
+Node: Changes from API V11211880
+Node: Finding Extensions1213512
+Node: Extension Example1214087
+Node: Internal File Description1214909
+Node: Internal File Ops1219201
+Ref: Internal File Ops-Footnote-11230751
+Node: Using Internal File Ops1230899
+Ref: Using Internal File Ops-Footnote-11233330
+Node: Extension Samples1233608
+Node: Extension Sample File Functions1235177
+Node: Extension Sample Fnmatch1243302
+Node: Extension Sample Fork1244897
+Node: Extension Sample Inplace1246173
+Node: Extension Sample Ord1250275
+Node: Extension Sample Readdir1251151
+Ref: table-readdir-file-types1251940
+Node: Extension Sample Revout1253296
+Node: Extension Sample Rev2way1253893
+Node: Extension Sample Read write array1254645
+Node: Extension Sample Readfile1257919
+Node: Extension Sample Time1259050
+Node: Extension Sample API Tests1261050
+Node: gawkextlib1261558
+Node: Extension summary1264590
+Node: Extension Exercises1268438
+Node: Language History1269708
+Node: V7/SVR3.11271420
+Node: SVR41273770
+Node: POSIX1275302
+Node: BTL1276727
+Node: POSIX/GNU1277494
+Node: Feature History1284149
+Node: Common Extensions1303951
+Node: Ranges and Locales1305426
+Ref: Ranges and Locales-Footnote-11310211
+Ref: Ranges and Locales-Footnote-21310238
+Ref: Ranges and Locales-Footnote-31310473
+Node: Contributors1310696
+Node: History summary1316887
+Node: Installation1318329
+Node: Gawk Distribution1319293
+Node: Getting1319785
+Node: Extracting1320784
+Node: Distribution contents1322490
+Node: Unix Installation1330380
+Node: Quick Installation1331200
+Node: Compiling with MPFR1333740
+Node: Shell Startup Files1334446
+Node: Additional Configuration Options1335603
+Node: Configuration Philosophy1337986
+Node: Compiling from Git1340486
+Node: Building the Documentation1341045
+Node: Non-Unix Installation1342457
+Node: PC Installation1342933
+Node: PC Binary Installation1343802
+Node: PC Compiling1344695
+Node: PC Using1345873
+Node: Cygwin1349589
+Node: MSYS1350841
+Node: OpenVMS Installation1351467
+Node: OpenVMS Compilation1352148
+Ref: OpenVMS Compilation-Footnote-11353631
+Node: OpenVMS Dynamic Extensions1353689
+Node: OpenVMS Installation Details1355325
+Node: OpenVMS Running1357756
+Node: OpenVMS GNV1361893
+Node: Bugs1362648
+Node: Bug definition1363568
+Node: Bug address1367169
+Node: Usenet1370738
+Node: Performance bugs1371951
+Node: Asking for help1374967
+Node: Maintainers1376954
+Node: Other Versions1377981
+Node: Installation summary1387585
+Node: Notes1388967
+Node: Compatibility Mode1389777
+Node: Additions1390599
+Node: Accessing The Source1391544
+Node: Adding Code1393075
+Node: New Ports1400186
+Node: Derived Files1404689
+Ref: Derived Files-Footnote-11410500
+Ref: Derived Files-Footnote-21410535
+Ref: Derived Files-Footnote-31411146
+Node: Future Extensions1411260
+Node: Implementation Limitations1411930
+Node: Extension Design1413172
+Node: Old Extension Problems1414332
+Ref: Old Extension Problems-Footnote-11415904
+Node: Extension New Mechanism Goals1415965
+Ref: Extension New Mechanism Goals-Footnote-11419435
+Node: Extension Other Design Decisions1419636
+Node: Extension Future Growth1421833
+Node: Notes summary1422453
+Node: Basic Concepts1423663
+Node: Basic High Level1424348
+Ref: figure-general-flow1424630
+Ref: figure-process-flow1425332
+Ref: Basic High Level-Footnote-11428702
+Node: Basic Data Typing1428891
+Node: Glossary1432299
+Node: Copying1465178
+Node: GNU Free Documentation License1502736
+Node: Index1527859
 
 End Tag Table
 
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 769c82c5..be0369b4 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -569,6 +569,7 @@ particular records in a file and perform operations upon 
them.
 * Computed Regexps::                    Using Dynamic Regexps.
 * GNU Regexp Operators::                Operators specific to GNU software.
 * Case-sensitivity::                    How to do case-insensitive matching.
+* Choosing Matchers::                   Selecting the regexp matcher.
 * Regexp Summary::                      Regular expressions summary.
 * Records::                             Controlling how data is split into
                                         records.
@@ -5410,6 +5411,7 @@ regular expressions work, we present more complicated 
instances.
 * Computed Regexps::            Using Dynamic Regexps.
 * GNU Regexp Operators::        Operators specific to GNU software.
 * Case-sensitivity::            How to do case-insensitive matching.
+* Choosing Matchers::           Selecting the regexp matcher.
 * Regexp Summary::              Regular expressions summary.
 @end menu
 
@@ -6687,6 +6689,45 @@ The value of @code{IGNORECASE} has no effect if 
@command{gawk} is in
 compatibility mode (@pxref{Options}).
 Case is always significant in compatibility mode.
 
+@node Choosing Matchers
+@section Selecting the Regexp Matching Engine
+
+Release @strong{FIXME: 5.x.y} of @command{gawk} introduced a new
+regular expression matching engine, named MinRX (see FIXME: URL
+here).
+
+MinRX is fully compliant with the POSIX standard for Extended
+Regular Expressions (EREs), including the additional features needed
+by @command{awk} and @command{gawk}.  It is also a little stricter
+in terms of accepting valid regular expression syntax when specifying
+a regexp.  (These restrictions apply to corner cases that should
+not come up in day-to-day use.)
+
+Previously, @command{gawk} used GNU @code{regex} and @code{dfa}
+from GNULIB. These matchers are fast and generally robust, albeit not
+fully POSIX compliant.  MinRX replaces both of them.
+
+Because regular expression matching is such a fundamental part of what
+@command{awk} programs do, introducing a new regular expression engine
+has some risk associated with it.  To alleviate the risk, for the
+term of one major release, @command{gawk} continues to provide access
+to the original regexp matchers should that be needed.
+
+@cindex environment variables @subentry @env{GAWK_GNU_MATCHERS}
+If the environment variable @env{GAWK_GNU_MATCHERS} exists, then
+@command{gawk} switches to using GNU @code{regex} and @code{dfa},
+as previously.  Otherwise, the MinRX matcher is the default and
+that is what it uses.
+
+Should you find a need to switch from MinRX to the original matchers,
+@emph{please} submit a bug report describing what did not work
+(@pxref{Bugs}).  Doing so is very important, as it will help the
+maintainers and the MinRX author to fix any issues that are found.
+
+After one major release, the old matchers, and the use of the
+@env{GAWK_GNU_MATCHERS} environment variable, will be removed
+from @command{gawk}.
+
 @node Regexp Summary
 @section Summary
 

-----------------------------------------------------------------------

Summary of changes:
 doc/ChangeLog |    5 +
 doc/gawk.info | 1292 +++++++++++++++++++++++++++++----------------------------
 doc/gawk.texi |   41 ++
 3 files changed, 713 insertions(+), 625 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]