From ce08086b15a0009eb762dfbd2a77e99208a92308 Mon Sep 17 00:00:00 2001 From: Mike Gerwitz Date: Wed, 23 Jan 2019 09:53:37 -0500 Subject: [PATCH] doc: Remove todo.texi TODOs shouldn't be stored here, and they will get out of sync. * Makefile.am (tame_TEXINFOS): Remove todo.texi. * tame.texi: Remove include and menu entry. * todo.texi: Remove file. --- doc/Makefile.am | 2 +- doc/tame.texi | 2 - doc/todo.texi | 143 ------------------------------------------------ 3 files changed, 1 insertion(+), 146 deletions(-) delete mode 100644 doc/todo.texi diff --git a/doc/Makefile.am b/doc/Makefile.am index 9b244850..7b7a4f6a 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 b83ddf05..300610e3 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 490ae199..00000000 --- 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