Home
History
Comparisons
Examples
Documentation
Help File
Download
News
Wish List
Soapbox
Project:
Forums
Tracker
CVS
Hosted by:
Sourceforge
VA Linux
Author
|
Hawk / Ftwalk Wish List
This list is old (vintage 1.4, i.e. 1999, like last century),
with minor cleanup.
Table of Contents
Program Structure/Packaging
Language
Exceptions
- General syntax for handling exceptions (modelled on Java):
try { statements }
catch ( exception ) { statements }
[catch ( exception ) { statements }]
finally { statements }
The try block defines a block of code to try to execute. If any
exception occurs during its exception, a corresponding catch block
is executed or, if none is defined, the exception is raised to the caller
and ultimately caught by a default handler. The finally block is
executed to clean up if any part of the try block is executed.
Lower code could also explicitly throw an exception. Exceptions
would be a new data type, with an identifier, optional values, and
context information.
- The TRAP event provides a simpler global method for trapping
exceptions.
- A number of run-time conditions should generate exceptions (but
very few do at present). Primo examples include: assignment to non-lvalue
objects; call of non-function/functor; undefined type operations;
eval compilation errors; data-dependent errors (index out of
bounds, divide by zero, etc.). Some run-time errors should only be
thrown if there is a trap; others should always be thrown. The list,
obviously, needs work.
Directives
Input Generators
- Option to file search to handle files in sorted order.
Data Types
- Change to current typeof type classification scheme to
define types hierarchically by a series of colon-separated names,
with partial matches. (The matches could be limited to using a new
instanceof operator, such as Java has.) This would replace
the current two-level scheme.
- New method to assign an arbitrary typeof identifier to any
data type.
- A wide string class consisting of C wchar_t: wstring.
- Replace regexp(3) library dependency with own implementation
of regular expressions, which would provide support for alternation.
Should also support X/OPEN internationalization, and possibly some
Perl features.
- Ability to attach a sort vector to a map. Possible sort methods
might include: insertion order, update order, key comparison order,
key collation order, value comparison order, value collation order,
user-specified functor.
- Support for sub-second date/time resolutions (e.g., gettimeofday,
timeval for file stats, usleep. These would generally be
done transparently under current calls, converting where applicable to
floating-point seconds.
- New date/time literal input conversion, which would generate intervals
for ambiguous values above some threshold (seconds or minutes?). For
example, T"Feb. 1992" would define an interval from 00:00:00
Feb. 1, 1992 through 23:59:59 Feb. 28, 1992. (How should subtraction
of date/time intervals behave? Probably by subtracting the low bounds.)
Built-In Functions
- Options to glob: $all returns all filenames; $hide
hides normally hidden filenames; $sort returns filenames in sorted
order.
- Options to backup to provide support for compressed and/or
version-controlled backup files (time-synched but different sizes).
- New restore to reverse backup, with checks for overwriting
more recent files (options: $force; $interactive, with
optional functor).
- Conversion formats for scanf to match on regular expressions,
character sets, balanced quote definitions. (The latter should be able
to match balanced parentheses with various types of quoting and/or
ignored comments.)
- New functions to deal with SVR4 security functions (acl,
filepriv, procpriv, etc.).
C/C++ Interface
- Need to make some general attempt at specifying a long-term viable
extension API. The present <ftwcall.h> is woefully
inadequate, which people can now avoid by working directly against
the full source code header files. However, the latter are subject
to change.
- Data types to map to native C variable types, so that native C
variables could be directly accessed/assigned from Ftwalk.
Why not go "whole hog" and do struct, union, and pointers
as well?
- A method for attaching C variable type declarations to shared
memory segments and mmap files.
- A method for declaring external C/C++ functions and for calling
them from Ftwalk without implementing explicit wrappers.
- Functions for mangling and de-mangling C++ function names.
Extensions
- A TK library interface, for development of X-Windows applications.
- A gdbm interface, similar to the current ndbm interface.
- An interface to the gzip data compression routines.
- A CGI library.
- A URL data type.
- A module for determining file types like file(1), possibly
with an optional database that could be used instead of re-reading the
file each time.
- Input generators for reading tar and cpio archives.
- Input generators for deciphering various languages (e.g., C, C++,
SGML).
Interactive Monitor
- Read in a user-specific preferences file at startup.
- Add monitor commands for debugging (breakpoints, tracing).
- Add support for vi editor keys (possibly make editor mode
programmable, with adequate support for all desired configurations).
On-Line Help
- Preprocess help file to handle platform-variant help information.
- Build a TK-based on-line help viewer (front end to fthelp).
This would support multiple windows, could support script editing
and management, interface to interactive monitor, and man pages.
|