Mike Gerwitz

Activist for User Freedom

aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/Makefile.am2
-rw-r--r--doc/tame.texi2
-rw-r--r--doc/todo.texi143
3 files changed, 1 insertions, 146 deletions
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 9b24485..7b7a4f6 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -27,7 +27,7 @@ stylesheets := $(shell find "$(path_src)" \
stexi := $(stylesheets:.xsl=.texi)
info_TEXINFOS = tame.texi
-tame_TEXINFOS = about.texi todo.texi license.texi $(stexi) tame.css
+tame_TEXINFOS = about.texi license.texi $(stexi) tame.css
MAKEINFOHTML=$(MAKEINFO) --html --css-include tame.css
diff --git a/doc/tame.texi b/doc/tame.texi
index b83ddf0..300610e 100644
--- a/doc/tame.texi
+++ b/doc/tame.texi
@@ -55,7 +55,6 @@ Free Documentation License".
* Preprocessor:: Metaprogramming system
* Dependency Graph:: Dependency processing and flow analysis
* Symbol Table:: Lookup table for all objects
-* Project TODOs:: High-level project tasks
* License:: Document License
@end menu
@@ -124,7 +123,6 @@ TAME
@include src/symtable.texi
@lowersections
-@include todo.texi
@include license.texi
@bye
diff --git a/doc/todo.texi b/doc/todo.texi
deleted file mode 100644
index 490ae19..0000000
--- a/doc/todo.texi
+++ /dev/null
@@ -1,143 +0,0 @@
-@c This document is part of the TAME manual.
-@c Copyright (C) 2017 R-T Specialty, LLC.
-@c Permission is granted to copy, distribute and/or modify this document
-@c under the terms of the GNU Free Documentation License, Version 1.3 or
-@c any later version published by the Free Software Foundation; with no
-@c Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
-@c A copy of the license is included in the section entitled ``GNU Free
-@c Documentation License''.
-
-@node Project TODOs
-@appendix Project TODOs
-This project has far more TODOs than are listed here, but here are
- some higher-level goals for the future.
-There are miscellaneous TODOs sprinkled throughout the code,
- but those are lower-level.
-
-
-@section Linker
-The linker should be one of the fastest parts of the system@mdash{
- }it should just do a topological sort,
- resolve symbols as necessary,
- and arrange code blocks.
-Unfortunately,
- especially due to memory requirements of loading so many packages
- into memory (using Saxon),
- this has been a pain point.
-Performance has improved drastically,
- but we can do better by gutting other parts of the system that were
- designed as kluges or now have better solutions that alleviates
- linker work.
-
-@enumerate
- @item Limit recursion during stack processing.
- If you look at a stack trace on error,
- it can be hundreds of levels deep.
- Instead,
- use a trampoline-style approach and indicate that additional
- symbols need to be loaded,
- but don't do so immediately in a recursive manner.
- This may or may not improve the memory footprint@mdash{
- }hopefully Saxon will see that previously generated trees
- are no longer necessary and GC them.
-@end enumerate
-
-
-@section Compiler
-The compiler itself has cruft from over the years and most of the code
- exists from the design prior to object files and symbol tables.
-There is plenty of room for optimization.
-
-@enumerate
- @item Validate against an algebraic type system.
- Certain classes of bugs can be avoided entirely by stating that
- values must always be a vector of positive real numbers, for
- example.
- The compiler can determine the type of expressions by the
- symbols it references and by its child expressions.
- In situations that are not resolvable at compile-time,
- runtime checks via terminating classifications would do;
- an example being the sum of two unsigned integers being
- non-zero.
- In cases where types are simply too difficult to determine
- without significant compiler work,
- annotations can be used to declare expressions equivalent
- to certain mathematical concepts
- (e.g. ``this function is equivalent to rounding to the
- nearest integer'');
- this can also serve as an alternative to primitives in
- certain instances,
- since native target language features could be used.
- @item Make parameters package-scoped and allow importers to
- determine what to do with them.
- If an importer provides a mapping for the parameter,
- which may be a calculation or anything else,
- then the parameter will be bound;
- otherwise it will be propagated as a parameter.
- But since we do not have any sort of loxical scoping or
- closures,
- if a parameter is bound more than once,
- an error would have to occur during linking.
- This would also replace externs,
- which was intended to be a temporary kluge when
- transitioning to a symbol-based system.
- This also has the additional benefit that parameters can
- represent inputs in shared systems for the sake of mocking
- and as an alternative to externs without having the
- downsides of a paramter---that
- it must be mapped as an input.
-@end enumerate
-
-
-@section Preprocessor
-The preprocessor is primarily responsible for macro (template) expansion.
-
-@enumerate
- @item Remove distinction between primitives and short-hand template
- expansion.
- Treat @emph{all} nodes as potential template expansions,
- and use the core library to mark certain templates as
- primitives.
- This will allow extending the language grammar naturally,
- and easily convert existing primitives to templates.@footnote{
- For example, @samp{lv:rate-each} is a good candidate for
- a template.
- Ideally, all XSLT-driven expansions should be converted
- into templates (the template system didn't exist back
- then).}
-@end enumerate
-
-
-@section Input/Return Map
-@enumerate
- @item Generate normal packages and use templates rather than a
- specialized system;
- it has numerous kluges to work around inconsistencies with
- other parts of the system,
- and copies code from portions,
- particularly for preprocessing.
-@end enumerate
-
-
-@section Worksheet
-@enumerate
- @item Implement a symbol table and treat worksheet packages as
- normal packages.
- As it stands today,
- symbols will not be retained by the linker if they are
- referenced by the worksheet because there is no symbol table;
- this puts the onus on the developer to manually place
- it in the return map,
- which is error-prone.
-@end enumerate
-
-
-@section Documentation
-Programs are written in a literate style.
-
-@enumerate
- @item Auto-generate LaTeX documentation using the existing @code{lvspec}
- package used to manually write specifications some time ago.
- Certain implementation details may need to be sorted out,
- like determining the section hierarchy.
-@end enumerate