|
Packit Service |
f629e6 |
Mon Jul 3 21:05:03 IDT 2017
|
|
Packit Service |
f629e6 |
============================
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
There were too many files tracking different thoughts and ideas for
|
|
Packit Service |
f629e6 |
things to do, or consider doing. This file merges them into one. As
|
|
Packit Service |
f629e6 |
tasks are completed, they should be removed.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
This file should exist only in the master branch or branches based off
|
|
Packit Service |
f629e6 |
of it for development, but not in the stable branch. This may require some
|
|
Packit Service |
f629e6 |
careful work with Git.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
TODO
|
|
Packit Service |
f629e6 |
====
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Minor Cleanups and Code Improvements
|
|
Packit Service |
f629e6 |
------------------------------------
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
API:
|
|
Packit Service |
f629e6 |
??? #if !defined(GAWK) && !defined(GAWK_OMIT_CONVENIENCE_MACROS)
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
?? Add debugger commands to reference card
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Look at function order within files.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Consider removing use of and/or need for the protos.h file.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Recheck if gnulib regex can be dropped in
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Fully synchronize whitespace tests (for \s, \S in Unicode
|
|
Packit Service |
f629e6 |
environment) with those of GNU grep.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
See if something like b = a "" can be optimized to not do
|
|
Packit Service |
f629e6 |
a concatenation, but instead just set STRCUR on a.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Minor New Features
|
|
Packit Service |
f629e6 |
------------------
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Enable command line source text in the debugger.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Enhance extension/fork.c waitpid to allow the caller to specify
|
|
Packit Service |
f629e6 |
the options. And add an optional array argument to wait and
|
|
Packit Service |
f629e6 |
waitpid in which to return exit status information.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Consider relaxing the strictness of --posix.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
? Add an optional base to strtonum, allowing 2-36.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
? Optional third argument for index indicating where to start the
|
|
Packit Service |
f629e6 |
search.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Major New Features
|
|
Packit Service |
f629e6 |
------------------
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Think about how to generalize indirect access. Manuel Collado
|
|
Packit Service |
f629e6 |
suggests things like
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
foo = 5
|
|
Packit Service |
f629e6 |
@"foo" += 4
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Also needed:
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Indirect through array elements, not just scalar variables
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Add ability to do decimal arithmetic.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Rework management of array index storage. (Partially DONE.)
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Consider using an atom table for all string array indices.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
DBM storage of awk arrays. Try to allow multiple dbm packages.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
?? A RECLEN variable for fixed-length record input. PROCINFO["RS"]
|
|
Packit Service |
f629e6 |
would be "RS" or "RECLEN" depending upon what's in use.
|
|
Packit Service |
f629e6 |
*** Could this be done as an extension?
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
?? Use a new or improved dfa and/or regex library.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Rewrite in C++.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Things To Think About That May Never Happen
|
|
Packit Service |
f629e6 |
-------------------------------------------
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Consider making shadowed variables a warning and not
|
|
Packit Service |
f629e6 |
a fatal warning when --lint=fatal.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Similar for extra parameters in a function call.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Look at code coverage tools, like S2E: https://s2e.epfl.ch/
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Try running with diehard. See http://www.diehard-software.org,
|
|
Packit Service |
f629e6 |
https://github.com/emeryberger/DieHard
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Implement namespaces. Arnold suggested the following in an email:
|
|
Packit Service |
f629e6 |
- Extend the definition of an 'identifier' to include "." as a valid
|
|
Packit Service |
f629e6 |
character although an identifier can't start with it.
|
|
Packit Service |
f629e6 |
- Extension libraries install functions and global variables with names
|
|
Packit Service |
f629e6 |
that have a "." in them: XML.parse(), XML.name, whatever.
|
|
Packit Service |
f629e6 |
- Awk code can read/write such variables and call such functions,
|
|
Packit Service |
f629e6 |
but they cannot define such functions
|
|
Packit Service |
f629e6 |
function XML.foo() { .. } # error
|
|
Packit Service |
f629e6 |
or create a variable with such a name if it doesn't exist. This would
|
|
Packit Service |
f629e6 |
be a run-time error, not a parse-time error.
|
|
Packit Service |
f629e6 |
- This last rule may be too restrictive.
|
|
Packit Service |
f629e6 |
I don't want to get into fancy rules a la perl and file-scope visibility
|
|
Packit Service |
f629e6 |
etc, I'd like to keep things simple. But how we design this is going
|
|
Packit Service |
f629e6 |
to be very important.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Include a sample rpm spec file in a new packaging subdirectory.
|
|
Packit Service |
f629e6 |
(Really needed?)
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Patch lexer for @include and @load to make quotes optional.
|
|
Packit Service |
f629e6 |
(Really needed?)
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Add a lint check if the return value of a function is used but
|
|
Packit Service |
f629e6 |
the function did not supply a value.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Consider making gawk output +nan for NaN values so that it
|
|
Packit Service |
f629e6 |
will accept its own output as input.
|
|
Packit Service |
f629e6 |
NOTE: Investigated this. GLIBC formats NaN as '-nan'
|
|
Packit Service |
f629e6 |
and -NaN as 'nan'. Dealing with this is not simple.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Review the bash source script for working with shared libraries in
|
|
Packit Service |
f629e6 |
order to nuke the use of libtool. [ Partially started in the
|
|
Packit Service |
f629e6 |
dead-branches/nolibtool branch. ]
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Things That We Decided We Will Never Do
|
|
Packit Service |
f629e6 |
=======================================
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Consider moving var_value info into Node_var itself to reduce
|
|
Packit Service |
f629e6 |
memory usage. This would break all uses of get_lhs in the
|
|
Packit Service |
f629e6 |
code. It's too sweeping a change.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Add macros for working with flags instead of using & and |
|
|
Packit Service |
f629e6 |
directly.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
FIX regular field splitting to use FPAT algorithm.
|
|
Packit Service |
f629e6 |
Note: Looked at this. Not sure it's with the trouble:
|
|
Packit Service |
f629e6 |
If it ain't broke...
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Scope IDs for IPv6 addresses
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Gnulib
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Make FIELDWIDTHS be an array?
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
"Do an optimization pass over parse tree?"
|
|
Packit Service |
f629e6 |
This isn't relevant now that we are using a byte code engine.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
"Consider integrating Fred Fish's DBUG library into gawk."
|
|
Packit Service |
f629e6 |
I did this once as an experiment. But I don't see a lot of value
|
|
Packit Service |
f629e6 |
to this at this stage of the development. Stepping through things
|
|
Packit Service |
f629e6 |
in a debugger is generally enough. Also, I would have to try to
|
|
Packit Service |
f629e6 |
track down the latest version of this.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
"Make awk '/foo/' files... run at egrep speeds" (How?)
|
|
Packit Service |
f629e6 |
This has been on the list since the early days (gawk 1.x or early
|
|
Packit Service |
f629e6 |
2.x). But I am not sure how to really do this, nor have I done
|
|
Packit Service |
f629e6 |
timings, nor does there seem to be any real demand for this.
|
|
Packit Service |
f629e6 |
|
|
Packit Service |
f629e6 |
Change from dlopen to using the libltdl library (i.e. lt_dlopen).
|
|
Packit Service |
f629e6 |
This may support more platforms. If we move off of libtool
|
|
Packit Service |
f629e6 |
then this is the wrong direction.
|