diff options
-rw-r--r-- | FUTURES | 95 | ||||
-rw-r--r-- | TODO | 204 | ||||
-rw-r--r-- | TODO.xgawk | 148 | ||||
-rw-r--r-- | doc/ChangeLog | 5 | ||||
-rw-r--r-- | doc/gawk.info | 59 | ||||
-rw-r--r-- | doc/gawk.texi | 43 |
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? @@ -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 |