[Top][All Lists]

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

[gawk-diffs] [SCM] gawk branch, xgawk, updated. b406b0ddbc1c306162ec94b7

From: Andrew J. Schorr
Subject: [gawk-diffs] [SCM] gawk branch, xgawk, updated. b406b0ddbc1c306162ec94b76724347a1bea99f6
Date: Sun, 25 Mar 2012 15:23:16 +0000

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, xgawk has been updated
       via  b406b0ddbc1c306162ec94b76724347a1bea99f6 (commit)
       via  afb9913ce1218d07cffa1f88e6a10f2de2800dce (commit)
      from  90fd3ce39521c90213d1a7090370bc1aba100451 (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 -----------------------------------------------------------------

commit b406b0ddbc1c306162ec94b76724347a1bea99f6
Author: Andrew J. Schorr <address@hidden>
Date:   Sun Mar 25 11:22:53 2012 -0400

    Really Added TODO.xgawk

diff --git a/TODO.xgawk b/TODO.xgawk
new file mode 100644
index 0000000..4c8ff98
--- /dev/null
+++ b/TODO.xgawk
@@ -0,0 +1,116 @@
+To-do list for xgawk enhancements:
+- 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
+To do (not necessarily in this order):
+- 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
+- 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.
+- Patch standard extensions to work properly.  For example, fork is broken.
+  And I think we made a few improvements in the xgawk versions.
+- Add tests for standard extensions.
+- 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);
+- Develop a libgawk shared library for use by extensions.  In particular,
+  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 
+     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 
+- Running "make install" should install the new libgawk shared library
+  as well as header files needed to build extensions under /usr/include/gawk.
+  The extensions include "awk.h", and that pulls in the following headers
+  (according to gcc -M) :
+      awk.h config.h custom.h gettext.h mbsupport.h protos.h getopt.h \
+      regex.h dfa.h
+  Most likely, most of this is not required.  Arnold has suggested 
+  creating a smaller header to define the public interface for use by shared
+  libraries.  One could imagine having "awk-ext.h" that is included by "awk.h".
+Separate projects for major standalone extensions.  Where should these
+be hosted?
+- Time.  This defines sleep and gettimeofday.   This one is quite trivial,
+  and I propose that it be included in the mainline gawk distro.
+- XML
+- PostgreSQL
+- GD
+- MPFR.  Is this still useful if MPFR support will be integrated into gawk?
+Possible changes requiring (further) discussion:
+- Implement namespaces.  Arnold suggested the following in an email:
+  - Extend the definition of an 'identifier' to include "." as a valid 
+    although an identifier can't start with it.
+  - Extension libraries install functions and global variables with names
+    that have a "." in them:  XML.parse(),, whatever.
+  - Awk code can read/write such variables and call such functions, but they
+    cannot define such functions
+         function { .. }     # 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.
+- Add a valgrind target in and associated valgrind-scan target in
+  test/  This runs "make check" under valgrind.  This was
+  invaluable for finding bugs.
+- Include a sample rpm spec file in a new packaging subdirectory.
+- Patch lexer for @include and @load to make quotes optional.
+- Add a -i (--include) option.

commit afb9913ce1218d07cffa1f88e6a10f2de2800dce
Author: Andrew J. Schorr <address@hidden>
Date:   Sun Mar 25 11:22:10 2012 -0400

    Added TODO.xgawk.

diff --git a/ChangeLog b/ChangeLog
index 542ee78..39b05e5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2012-03-25         Andrew J. Schorr     <address@hidden>
+       * TODO.xgawk: New file listing completed and pending xgawk enhancements.
 2012-03-24         Andrew J. Schorr     <address@hidden>
        * io.c (path_info): Fix white space.


Summary of changes:
 ChangeLog  |    4 ++
 TODO.xgawk |  116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 120 insertions(+), 0 deletions(-)
 create mode 100644 TODO.xgawk


reply via email to

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