aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--FUTURES95
-rw-r--r--TODO204
-rw-r--r--TODO.xgawk148
-rw-r--r--doc/ChangeLog5
-rw-r--r--doc/gawk.info59
-rw-r--r--doc/gawk.texi43
6 files changed, 202 insertions, 352 deletions
diff --git a/FUTURES b/FUTURES
deleted file mode 100644
index 861cf503..00000000
--- a/FUTURES
+++ /dev/null
@@ -1,95 +0,0 @@
- Copyright (C) 2005, 2006, 2010, 2011, 2012 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.
-
-This file lists future projects and enhancements for gawk. Items are listed
-in roughly the order they will be done for a given release. This file is
-mainly for use by the developers to help keep themselves on track, please
-don't bug us too much about schedules or what all this really means.
-
-For 4.1
-=======
- DONE: Merge gawk/pgawk/dgawk into one executable
-
- DONE: Merge xmlgawk -l feature
-
- DONE: Merge xmlgawk XML extensions (via source forge project that
- works with new API)
-
- DONE: Integrate MPFR to provide high precision arithmetic.
-
- DONE: Implement designed API for loadable modules
-
- DONE: Redo the loadable modules interface from the awk level.
-
- DONE: Consider really implementing BWK awk SYMTAB for seeing what
- global variables are defined.
-
- Continue code reviews / code cleanup
- - Nuking overly deep macros...
-
- Consider making shadowed variables a warning and not
- a fatal warning when -lint=fatal
-
-For 4.2
-=======
- Think about how to generalize indirect access. Manuel Collado
- suggests things like
-
- foo = 5
- @"foo" += 4
-
- Also needed:
-
- indirect calls of built-ins
- indirect calls of extension functions
- indirect through array elements, not just scalar variables
-
- Consider relaxing the strictness of --posix.
-
- Consider removing use of and/or need for the protos.h file.
-
- Consider moving var_value info into Node_var itself
- to reduce memory usage.
-
- Rework management of array index storage. (Partially DONE.)
-
- DBM storage of awk arrays. Try to allow multiple dbm packages.
-
- ? Add an optional base to strtonum, allowing 2-36.
-
- ? Optional third argument for index indicating where to start the
- search.
-
- ?? A RECLEN variable for fixed-length record input. PROCINFO["RS"]
- would be "RS" or "RECLEN" depending upon what's in use.
- *** Could be done as an extension.
-
- ?? Use a new or improved dfa and/or regex library.
-
- ??? Gnulib
-
-Probably never:
-===============
- Do an optimization pass over parse tree?
-
- Consider integrating Fred Fish's DBUG library into gawk.
-
- Make awk '/foo/' files... run at egrep speeds (how?)
-
- ? Have strftime() pay attention to the value of ENVIRON["TZ"]
-
- Add a lint check if the return value of a function is used but
- the function did not supply a value.
-
- Consider making gawk output +nan for NaN values so that it
- will accept its own output as input.
- NOTE: Investigated this. GLIBC formats NaN as '-nan'
- and -NaN as 'nan'. Dealing with this is not simple.
-
- Enhance FIELDWIDTHS with some way to indicate "the rest of the record".
- E.g., a length of 0 or -1 or something. May be "n"?
-
- Make FIELDWIDTHS be an array?
diff --git a/TODO b/TODO
index aaf2331f..f62f02f9 100644
--- a/TODO
+++ b/TODO
@@ -1,27 +1,145 @@
-Add debugger commands to reference card ??
-Review all FIXME and TODO comments
+Sat Nov 24 20:09:56 IST 2012
+============================
-FIX regular field splitting to use FPAT algorithm.
+There were too many files tracking different thoughts and ideas for
+things to do, or consider doing. This file merges them into one. As
+tasks are completed, they should be moved to the DONE section, below,
+or simply removed.
-Look at function order within files.
+Upon creation of a release (major or patch release), items from the
+previous release should be removed.
-regex.h - remove underscores in param names (for 4.1)
+TODO
+====
-Really make failure to open a socket a non-fatal error (for 4.1).
+Minor Cleanups and Code Improvements
+------------------------------------
+ ?? Add debugger commands to reference card
-?? Scope IDs for IPv6 addresses ??
+ FIX regular field splitting to use FPAT algorithm.
-DONE: Merge the chapter and the appendix on floating-point math (for 4.1).
+ Look at function order within files.
-Look at code coverage tools, like S2E: https://s2e.epfl.ch/
+ regex.h - remove underscores in param names
-From Andy: Review the following test cases that they work with make diffout.
-These look suspicious: mmap8k, fmtspcl (the mpfr case), clobber, getlnbuf,
-rtlenmb, profile1, rand (mpfr case).
+ From Andy: Review the following test cases that they work with make diffout.
+ These look suspicious: mmap8k, fmtspcl (the mpfr case), clobber, getlnbuf,
+ rtlenmb, profile1, rand (mpfr case).
-------
+ Add tests for patches in emails (?? - not sure now what this referred to)
-Code Review:
+ In gawkapi.c - review switch statements and use of default.
+
+ Consider removing use of and/or need for the protos.h file.
+
+ Consider moving var_value info into Node_var itself
+ to reduce memory usage.
+
+ Add macros for working with flags instead of using & and | directly.
+
+ Review the bash source script for working with shared libraries in
+ order to nuke the use of libtool.
+
+Minor New Features
+------------------
+
+ Enhance extension/fork.c waitpid to allow the caller to specify the options.
+ And add an optional array argument to wait and waitpid in which to return
+ exit status information.
+
+ Consider relaxing the strictness of --posix.
+
+ ? Add an optional base to strtonum, allowing 2-36.
+
+ ? Optional third argument for index indicating where to start the
+ search.
+
+Major New Features
+------------------
+ Think about how to generalize indirect access. Manuel Collado
+ suggests things like
+
+ foo = 5
+ @"foo" += 4
+
+ Also needed:
+
+ indirect calls of built-ins
+ indirect calls of extension functions
+ indirect through array elements, not just scalar variables
+
+ Rebase and integration of array_iface branch.
+
+ Rework management of array index storage. (Partially DONE.)
+
+ Consider using an atom table for all string array indices.
+
+ DBM storage of awk arrays. Try to allow multiple dbm packages.
+
+ ?? A RECLEN variable for fixed-length record input. PROCINFO["RS"]
+ would be "RS" or "RECLEN" depending upon what's in use.
+ *** Could be done as an extension?
+
+ ?? Use a new or improved dfa and/or regex library.
+
+Things To Think About That May Never Happen
+-------------------------------------------
+ ?? Scope IDs for IPv6 addresses ??
+
+ ??? Gnulib
+
+ Consider making shadowed variables a warning and not
+ a fatal warning when -lint=fatal.
+
+ Similar for extra parameters in a function call.
+
+ Look at code coverage tools, like S2E: https://s2e.epfl.ch/
+
+ Change from dlopen to using the libltdl library (i.e. lt_dlopen).
+ This may support more platforms.
+
+ Implement namespaces. Arnold suggested the following in an email:
+ - Extend the definition of an 'identifier' to include "." as a valid character
+ although an identifier can't start with it.
+ - Extension libraries install functions and global variables with names
+ that have a "." in them: XML.parse(), XML.name, whatever.
+ - Awk code can read/write such variables and call such functions, but they
+ cannot define such functions
+ function XML.foo() { .. } # error
+ or create a variable with such a name if it doesn't exist. This would
+ be a run-time error, not a parse-time error.
+ - This last rule may be too restrictive.
+ I don't want to get into fancy rules a la perl and file-scope visibility
+ etc, I'd like to keep things simple. But how we design this is going
+ to be very important.
+
+ Include a sample rpm spec file in a new packaging subdirectory.
+
+ Patch lexer for @include and @load to make quotes optional.
+
+ Do an optimization pass over parse tree?
+
+ Consider integrating Fred Fish's DBUG library into gawk.
+
+ Make awk '/foo/' files... run at egrep speeds (how?)
+
+ ? Have strftime() pay attention to the value of ENVIRON["TZ"]
+
+ Add a lint check if the return value of a function is used but
+ the function did not supply a value.
+
+ Consider making gawk output +nan for NaN values so that it
+ will accept its own output as input.
+ NOTE: Investigated this. GLIBC formats NaN as '-nan'
+ and -NaN as 'nan'. Dealing with this is not simple.
+
+ Enhance FIELDWIDTHS with some way to indicate "the rest of the record".
+ E.g., a length of 0 or -1 or something. Maybe "n"?
+
+ Make FIELDWIDTHS be an array?
+
+Code Review
+-----------
awkgram.y
debug.c
eval.c
@@ -33,7 +151,51 @@ gawkmisc.c
profile.c
protos.h
-DONE:
+DONE
+====
+
+Minor Cleanups and Code Improvements
+------------------------------------
+Done in 4.1:
+
+ Review all FIXME and TODO comments
+
+Minor New Features
+------------------
+Done in 4.1:
+
+ Merge the chapter and the appendix on floating-point math (for 4.1).
+
+Major New Features
+------------------
+Done in 4.1:
+
+ DONE: Design and implement I/O plugin API.
+
+ DONE: Implement designed API for loadable modules
+
+ DONE: Redo the loadable modules interface from the awk level.
+
+ DONE: xgawk features (@load, -l, others)
+
+ DONE: Merge gawk/pgawk/dgawk into one executable
+
+ DONE: Merge xmlgawk XML extensions (via source forge project that
+ works with new API)
+
+ DONE: Integrate MPFR to provide high precision arithmetic.
+
+ DONE: Consider really implementing BWK awk SYMTAB for seeing what
+ global variables are defined.
+
+Things To Think About That May Never Happen
+-------------------------------------------
+
+Things That We Decided We Will Never Do
+---------------------------------------
+
+Code Review
+-----------
array.c
awk.h
builtin.c
@@ -50,15 +212,3 @@ re.c
replace.c
version.c
xalloc.h
-
-------
-
-DONE: Add in gawk/mp
-
-DONE: Design and implement I/O plugin API.
-
-DONE: Implement C function call API per man pages
-
-DONE: xgawk features (@load, -l, others)
-
-Add tests for patches in emails
diff --git a/TODO.xgawk b/TODO.xgawk
deleted file mode 100644
index 55c5371c..00000000
--- a/TODO.xgawk
+++ /dev/null
@@ -1,148 +0,0 @@
-To-do list for xgawk enhancements:
-
-- In gawkapi.c - review switch statements and use of default.
-
-Low priority:
-
-- Enhance extension/fork.c waitpid to allow the caller to specify the options.
- And add an optional array argument to wait and waitpid in which to return
- exit status information.
-
-Possible future changes requiring (further) discussion:
-
-- Change from dlopen to using the libltdl library (i.e. lt_dlopen).
- This may support more platforms.
-
-- Implement namespaces. Arnold suggested the following in an email:
- - Extend the definition of an 'identifier' to include "." as a valid character
- although an identifier can't start with it.
- - Extension libraries install functions and global variables with names
- that have a "." in them: XML.parse(), XML.name, whatever.
- - Awk code can read/write such variables and call such functions, but they
- cannot define such functions
- function XML.foo() { .. } # error
- or create a variable with such a name if it doesn't exist. This would
- be a run-time error, not a parse-time error.
- - This last rule may be too restrictive.
- I don't want to get into fancy rules a la perl and file-scope visibility
- etc, I'd like to keep things simple. But how we design this is going
- to be very important.
-
-Unlikely:
-
-- Include a sample rpm spec file in a new packaging subdirectory.
-
-- Patch lexer for @include and @load to make quotes optional.
-
-Done:
-
-- Add AWKLIBPATH with default pointing to ${libexecdir}/$PACKAGE/$VERSION
-
-- Change default shared library extension from ".so" to ".$shlibext"
-
-- Patch build infrastructure so that the current code in the
- extension subdirectory gets built and installed into the default $AWKLIBPATH
- location.
-
-- Implement @load
-
-- Patch ERRNO handling to create a simple API for use by extensions:
- extern void update_ERRNO_int(int)
- enum errno_translate { TRANSLATE, DONT_TRANSLATE };
- extern void update_ERRNO_string(const char *string, enum errno_translate);
- extern void unset_ERRNO(void);
-
-- Add valgrind-noleak target.
-
-- Fix minor bug in fork extension, and add wait function.
-
-- Patch filefuncs extension to read symbolic links more robustly.
-
-- Add shared library tests.
-
-- Delete extension/xreadlink.[ch]
-
-- Add a -i (--include) option.
-
-- Enable default ".awk" search in io.c:find_source(). The simple change
- is to add this code inline in io.c:
- #ifndef DEFAULT_FILETYPE
- #define DEFAULT_FILETYPE ".awk"
- #endif
-
-- The -f flag should not eliminate duplicates.
-
-- Eliminate libtool from the top-level configure.ac. Create a separate
- configure.ac in the extensions subdirectory, and hide all the libtool
- stuff in there.
-
-- Running "make install" should install gawkapi.h in /usr/include.
-
-- Add time extension to the gawk distro. This defines sleep and gettimeofday.
- Renamed existing gettimeofday to getlocaltime.
-
-- Finish implementing new interface using gawkapi.h
- - api_get_curfunc_param not honoring requested type in node_to_awk_value
- - should api_sym_lookup also accept a type request?
- - must update the API do_lint value when changed by set_LINT
- - what is the proper return value for load_ext? It does not matter
- unless called by the "extension" function that nobody uses.
-
-- Hide private parts of IOBUF from extensions.
-
-- Fix extension/rwarray.c.
-
-- Fix lint complaints about shared library functions being called without
- having been defined. For example, try:
- gawk --lint -lordchr 'BEGIN {print chr(65)}'
- gawk: warning: function `chr' called but never defined
- A
- In ext.c, make_builtin needs to call awkgram.y:func_use. If done naively,
- I think this would result in complaints about shared library functions
- defined but not used. So there should probably be an enhancement to func_use
- and ftable to indicate if it's a shared library function.
-
-- Develop a libgawk shared library for use by extensions. Should this
- be hosted in a separate project?
-
- A few existing extensions use a hash API for mapping string
- handles to structures. In xgawk, we had this API inside array.c, but it
- probably belongs in a separate libgawk shared library:
-
- typedef struct _strhash strhash;
- extern strhash *strhash_create P((size_t min_table_size));
- /* Find an entry in the hash table. If it is not found, the insert_if_missing
- argument indicates whether a new entry should be created. The caller
- may set the "data" field to any desired value. If it is a new entry,
- "data" will be initialized to NULL. */
- extern strhash_entry *strhash_get P((strhash *, const char *s, size_t len,
- int insert_if_missing));
- typedef void (*strhash_delete_func)(void *data, void *opaque,
- strhash *, strhash_entry *);
- extern int strhash_delete P((strhash *, const char *s, size_t len,
- strhash_delete_func, void *opaque));
- extern void strhash_destroy P((strhash *, strhash_delete_func, void *opaque));
-
-- Separate projects for major standalone extensions. We need to set up
- hosting for these projects:
-
- - XML
-
- - PostgreSQL
-
- - GD
-
- - MPFR. This is probably not useful now that MPFR support has been
- integrated into gawk. Are there any users who need this extension?
-
-- Review open hook implementation.
- * Mostly done.
- * Still to go: Rework iop_alloc, interaction with open hooks, and
- skipping command line directories.
-
-- Attempting to load the same file with -f and -i (or @include) should
- be a fatal error.
-
-- Consider adding a way to access gawk special vars read only.
-
-- Review macros (force_string etc.)
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 0cb342b1..53b59041 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,8 @@
+2012-11-24 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawk.texi (Future Extensions): Point to TODO file in the
+ gawk dist.
+
2012-11-22 Arnold D. Robbins <arnold@skeeve.com>
* gawk.texi: In API chapter, document the full list of include
diff --git a/doc/gawk.info b/doc/gawk.info
index c7f60987..8c5b4356 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -26926,40 +26926,11 @@ C.3 Probable Future Extensions
Hey!
Larry Wall
- This minor node briefly lists extensions and possible improvements
-that indicate the directions we are currently considering for `gawk'.
-The file `FUTURES' in the `gawk' distribution lists these extensions as
-well.
-
- Following is a list of probable future changes visible at the `awk'
-language level:
-
-Databases
- It may be possible to map a GDBM/NDBM/SDBM file into an `awk'
- array.
-
-`RECLEN' variable for fixed-length records
- Along with `FIELDWIDTHS', this would speed up the processing of
- fixed-length records. `PROCINFO["RS"]' would be `"RS"' or
- `"RECLEN"', depending upon which kind of record processing is in
- effect.
-
-More `lint' warnings
- There are more things that could be checked for portability.
-
- Following is a list of probable improvements that will make `gawk''s
-source code easier to work with:
-
-Better array subscript management
- `gawk''s management of array subscript storage could use revamping,
- so that using the same value to index multiple arrays only stores
- one copy of the index value.
-
- Finally, the programs in the test suite could use documenting in
-this Info file.
-
- *Note Additions::, if you are interested in tackling any of these
-projects.
+ The `TODO' file in the `gawk' distribution lists possible future
+enhancements. Some of these relate to the source code, and others to
+possible new features. Please see that file for the list. *Note
+Additions::, if you are interested in tackling any of the projects
+listed there.

File: gawk.info, Node: Basic Concepts, Next: Glossary, Prev: Notes, Up: Top
@@ -32252,15 +32223,15 @@ Ref: Derived Files-Footnote-11083803
Ref: Derived Files-Footnote-21083837
Ref: Derived Files-Footnote-31084437
Node: Future Extensions1084535
-Node: Basic Concepts1086022
-Node: Basic High Level1086703
-Ref: figure-general-flow1086974
-Ref: figure-process-flow1087573
-Ref: Basic High Level-Footnote-11090802
-Node: Basic Data Typing1090987
-Node: Glossary1094342
-Node: Copying1119653
-Node: GNU Free Documentation License1157210
-Node: Index1182347
+Node: Basic Concepts1085079
+Node: Basic High Level1085760
+Ref: figure-general-flow1086031
+Ref: figure-process-flow1086630
+Ref: Basic High Level-Footnote-11089859
+Node: Basic Data Typing1090044
+Node: Glossary1093399
+Node: Copying1118710
+Node: GNU Free Documentation License1156267
+Node: Index1181404

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 92d1de4e..0e83b268 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -34874,44 +34874,11 @@ Arnold Robbins
Larry Wall
@end quotation
-This @value{SECTION} briefly lists extensions and possible improvements
-that indicate the directions we are
-currently considering for @command{gawk}. The file @file{FUTURES} in the
-@command{gawk} distribution lists these extensions as well.
-
-Following is a list of probable future changes visible at the
-@command{awk} language level:
-
-@c these are ordered by likelihood
-@table @asis
-@item Databases
-It may be possible to map a GDBM/NDBM/SDBM file into an @command{awk} array.
-
-@item @code{RECLEN} variable for fixed-length records
-Along with @code{FIELDWIDTHS}, this would speed up the processing of
-fixed-length records.
-@code{PROCINFO["RS"]} would be @code{"RS"} or @code{"RECLEN"},
-depending upon which kind of record processing is in effect.
-
-@item More @code{lint} warnings
-There are more things that could be checked for portability.
-@end table
-
-Following is a list of probable improvements that will make @command{gawk}'s
-source code easier to work with:
-
-@table @asis
-@item Better array subscript management
-@command{gawk}'s management of array subscript storage could use revamping,
-so that using the same value to index multiple arrays only
-stores one copy of the index value.
-@end table
-
-Finally,
-the programs in the test suite could use documenting in this @value{DOCUMENT}.
-
+The @file{TODO} file in the @command{gawk} distribution lists possible
+future enhancements. Some of these relate to the source code, and others
+to possible new features. Please see that file for the list.
@xref{Additions},
-if you are interested in tackling any of these projects.
+if you are interested in tackling any of the projects listed there.
@c ENDOFRANGE impis
@c ENDOFRANGE gawii
@@ -37255,5 +37222,5 @@ Suggestions:
------------
% Next edition:
% 1. Standardize the error messages from the functions and programs
-% in Chapters 12 and 13.
+% in the two sample code chapters.
% 2. Nuke the BBS stuff and use something that won't be obsolete