diff options
Diffstat (limited to 'TODO.xgawk')
-rw-r--r-- | TODO.xgawk | 148 |
1 files changed, 0 insertions, 148 deletions
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.) |