Blame TODO

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.