-*-text-*-

EDEN TODO LIST


BUGS
====

o billiards with dtkeden seg faults in Tcl on replay button
o Fix railway bug: $PUBLIC/projects/simulations/railway tracktest.d then
  wmb (from email)... bus error.
o COMICAL/GAS3D now doesn't work.  Something to do with virtual agents and
  eager, possibly.  It still works on the pre-dtkeden merge version.
o Redefining p1_b1 to -3 in Chris' pyramid Sasami model causes tkeden to
  die
o Test Sasami with a model which calls eager() in a tight loop - Ben had a
  note about this in the original render.c source (should be OK as eager
  forces a Tcl update, and togl will then call the r_render callback).
o Windows: Control-C in the DOS window doesn't seem to have immediate
  effect - seems to be delayed until next Tcl update?
o arca.lib will need revising wrt fonts
o Windows: radio/check button icons (ticks on this platform) are not
  displayed correctly: not enough room for them?
o Windows: Coloured circles in Donald (eg Heapsort) apparently don't work?
o Memory leak in COMICAL/ROADSYS
o cd into dirname of file from command line fails in the case where we
  combine filenames with absolute pathnames with relative ones.
o radiobuttons not always up to date with internal state?  (Particularly
  after having just loaded cruise).
o Next interaction after a Previous / Next sequence will start to overwrite
  precious recent input window history: the cycling of this history on
  Previous / Next isn't quite right.

o Windows: bug in dashed lines in Donald (eg see jugs with
  jug.disp.d).  Errors about not finding the dash.bitmap file appear,
  which can be silenced if we set the Eden variable using double
  escapes, thus: DASH_BITMAP = "c:\\\\cygwin\\\\home\\\\ashl..., as we
  need to escape the backslash once to get Eden to read it literally
  and then again to get Tcl to read it literally.  However, even if we
  make this fix (and this will require making Eden aware of the
  cygwin_path... function), the dashed line still does not appear -
  perhaps due to the angle of the line?  Basically, the current hack
  for dashed lines doesn't work on Windows.  Probably the best thing
  is to attempt to use Tk 8.3.3 instead which has the dash patch
  merged in (but this Tk doesn't seem to have been compiled up for use
  with cygwin and gcc by anyone).



IMPROVEMENTS
============

o Exactly how inefficient is the list implementation in tkeden? Does it scan
  from the end each time? How would we go about storing an entire dictionary
  in Eden for example, for Hangman?
o Find original Donald lexer lex.l - see what changes were made for the
  (handwritten?) lex.c in tkeden
o Check out hash function used in Eden/symbol.c. Will the hash index ever be
  > 0xFF: constantly EORing with a char...???
o Profile tkeden and improve most called regions, especially for Chris'
  Data Explorer...
o Another notation, like Scout, to handle whole windowing system? Carters
  says hard because X assumes user has control of windows, not the program.
o Sort out inconsistencies between notations.
o Think about JVM and relation to the Eden VM - what possibility of cross
  fertilization?
o Define key to retrieve last entered thing from history (like up cursor in
  shell). Difficult as error messages go into history as well. Also no
  separators between "events". Related to comment in TODO file
  "history to be stored in a file rather than always reside in memory
  (not a popular suggestion)"
o "add layers to donald through scout" (from TODO)
o "Wrap standard I/O in a tk window" (from TODO)
o Port to Mac?! gcc available on the Mac? On the Arch (schools?)
o Remove reliance on PATH (eg ImageScale uses 'pnmscale'). Either
  write a wrapper or set variables with the complete path for each utility
  used.
o A single step facility to enable modeller to monitor each redefinition?
o dtkeden in heterogenous environments?
o Vastly improve the textual script viewer: hyperlinked definitions, fast
  rebuild... link to a web browser? Write an Eden script to communicate with
  Netscape (or any browser) and send the text of the script.
  Eg netscape -remote 'openURL(http://www.dcs.warwick.ac.uk/modelling)'
o Higher order definitions somehow? Multiple similar definitions cannot be
  done particularly neatly at the moment. Or can they? See the speedo eg.
o Link Javabeans with dependencies in Eden. Use, or at least look at jacl?
o Get rid of alloca? See http://www.eskimo.com/~scs/C-faq/q7.32.html
o Automatically generate dependencies for non-local variables used in
  functions - recall note from the back of the Eden manual. Don't retrigger
  actions though.
o Maybe Misc should be a subdirectory (or maybe just in the directory of?)
  Eden
o Make lint happy with the code. Haven't got it to run the second stage yet.
o Make it do a 'cd' when Including a file from another directory? Perhaps it
  should especially for the Windoz port which will probably always have the
  same working directory. Also need to be able to type in an
  (absolute) directory name into the filename bit, press OK and have
  it view that directory.
o PC port will not show drive letters with the current scheme. Perhaps we
  need to see if Tk has a native file browser window? Nope, but Tix does,
  perhaps BLT does. [incr Widgets] has one.
o Use an enum for the type inside Datum - would this show up in debuggers,
  making it easier to see?
o New feature, perhaps built in: generate increments to a clock integer at
  a given real time frequency
o Look at BLT and integrate some features?
o Store definitions on disc rather than in memory - like VM? Need a better
  file format. WMB said would be good to be able to bring in and take out
  whole sections of script as appropriate.
o "combination observables" (eg distances between billiard balls) that can be
  defined, but don't take up space until you query them. Or perhaps these are
  just functions.
o Link the Eden library to Java using JNI?!
o Perhaps the symbol table should be a /list/ with special (associative)
  indexing. Then items could be removed easily.
o Re-do the user interface in Scout?
o Operators += etc only work on integers
o Make append, insert work on strings
o An emacs highlighting setup for Eden code?  See
  /gnu/share/emacs/20.3/lisp/font-lock.el.
o symbols() only takes one argument?  Should give an error message if given
  more than one.
o Link with emacs as an editor.  Use elisp.  Colours to represent bits that
  have been changed, and need sending to tkeden - send them with a key press.
o touch should give error message if not passed a pointer (eg touch(me))
o Finish mouse dragging facility - can we get COG to work with the current
  setup?
o Error messages should not go into the History window - create a
  separate window for this.  But how do we link the two back together in
  time?  Perhaps we need a number that increments every time something goes
  into history, then errors can show the current history number.
o Get around sensible CWD problem on Windoz by adding a cd primitive to
  Eden, and call this from Run.e files
o More obscure information in About tkeden should appear only when you
  press a "more information" button
o Edit menu with Cut and Paste?
o Make it possible for users to link in other translators for notations at
  runtime.
o Some way to see /values/ of Donald things without having to
  representation on the screen - view values in the View window...?  Or
  implement the ? operator in Donald properly (seems to be partially
  implemented at the mo... or am I being confused by the ? Donald operator
  for "this is a line of Eden?")
o Access Eden lists from Donald:
    %eden
    func f { writeln("f ", $); return $1 + 1; }
    %donald
    int f1
    f1 = f!(1)
  works, but the equivalent for lists does not.
o List indexing is not implemented in back-ticks:
    1:> s="l[2]";
    2:> l=[1,3];
    3:> writeln(`s`);
    @
o One undefined item should not stop the entire screen from being updated.
o symboltable()# fails when the table gets large - error running out of
  heap?  Could make heap a dynamic array, I suppose...
o Fix undefined problems: need more eager operators.
o Get rid of "program too big" error: make prog a more dynamic array that
  is realloc'd when this error would have occurred
o Donald 'pi' token - is it used?  Meurig was trying to '%donald; real pi'.
o Port Sasami to Unix
o A 'warnings' window instead of the error messages appearing in the
  history.  Visual warning to the user when something has appeared there.
  Warnings for "you have declared a symbol with a name similar to another",
  "this is now @" etc along with error messages (which would prob. be in a
  different colour).  Sometimes it is appropriate to warn a user that they
  are creating a new symbol (eg when /using/ a model), when building -
  probably not.
o a minor version number to represent changes to the Tcl / Eden library stuff?
o change each sprintf to snprintf and include the buffer size to attempt to
  stop all these buffer overruns.
o Radio button for the notation in the input window?
o Make long variable names possible (apparently >20 chars fails, especially
  in Scout)
o ttyeden readline: get it to complete from the symbol table.
o "Freeze" the state function - want the equivalent of SQLs COMMIT or
  ROLLBACK.
o A "save script" function for ttyeden: could rapidly prototype using the
  new readline interface, but cannot save.
o guessLibLocation should read search a predetermined path to find a
  configuration file which determines the lib files location.
o dtkeden should have the server / client name in the history window title
o 'find' symbols facility should be better: need to be able to find
  definitions and usages separately.  Need to be able to find 'is'
  separately from values.
o Navigation around the view definitions interface is awful.
o A function to 'forget' a set of definitions in the correct order?
  Perhaps by redefining all to @, then removing.  Perhaps it should
  interactively prompt to make sure that we don't accidently remove
  definitions we would like to keep: a kind of 'rm -i' prompt.  Perhaps it
  could print some information about whether it managed it or not.  Perhaps
  we need an argument to tell it to be interactive or not.
o Redesign into a one-window interface?  Then have multiple input windows,
  one for each notation?
o Inconsistency: textbox and text windows in scout with the same number of
  vertical lines are different sizes.
o Inconsistency: use outlinecolor for circles outline, color for lines
  outline.
o Inconsistency: use div in donald, / in eden.
o Inconsistency: use semicolons in eden, not in donald
o Inconsistency: don't declare in eden, declare in donald.
o Inconsistency: last element of a scout window doesn't have a comma, the
  others do.
o Inconsistency: PI in eden, pi in donald
o Inconsistency: scout references its windows from the top left and donald
  from the bottom left
o If any element in the screen is @, the whole screen is not displayed
  (apparently).  Improve this to give a warning if something in the screen
  is @.
o '?insert', '?append' fails.  This is because the parser expects '?',
  lvalue and keywords such as insert and append are not lvalues.  Need to
  figure out how to get the parser to accept these types.

o Test new Eden bison.simple with eden < file, read file, piped input (via
  a translator)...
o Link translators (eg eddi) to tkeden via pipes (tkeden pipe function?)
  and multiple Tcl windows
o wouldBlock: change to getcWouldBlock and put in rl_getc_wouldblock logic
o Check "additional possibilities" sum in bison.simple - does it give the
  right answer?
o View -> Eden definitions: an option to sort and indent according to
  definition level?  (This could be used to quickly find the basic model
  parameters).
o Make a documentation package: cron job to nightly tar and gzip the HTML
  Eden, Scout, Donald documentation (post-SSI processing: wget? need
  version numbers or stamp package with the date: make the package each
  night and see if it has changed).
o Change colour of interrupt button when it might be necessary to press it
  (when a RunSet is being processed?)
o Make it possible to extend the stack when overflow occurs by implementing
  a non-contiguous stack.  Need to ensure that nothing attempts to walk the
  stack to be able to do this tho'.
o Make it possible to extend the heap when overflow occurs.  (Example
  problem: see OASYSPermutations/gen_table.e).  Perhaps allocate memory
  with malloc when heap overflows.
o Highlight Eden / Donald / Scout keywords in the input window as they are
  entered using the Tcl text tag facility?
o Extend debug() to take combinations of categories to filter debugging
  output, now that I've introduced CALSTK etc.
o In the View Definitions window, use tags to highlight references to other
  variables - click and they are displayed.  Add a back and forward button
  as per web browser.  Or perhaps write an export to HTML feature and link
  with a web browser?  (Perhaps use EMHTTP - press Reload on the web
  browser and it'll reload the page of definitions).
o An incremental search facility on Ctrl-S, like emacs?
o Use a more decent File -> Include widget: try FileSelectBox from Tix (but
  these widgets are megawidgets which probably required [incr Tcl] and
  [incr Tk] - the OO extensions to Tcl/Tk).
o Take a look at TkTable - a spreadsheet / table widget: could we improve
  the View Definition windows with this?
o Change the mouse cursor when tkeden is busy (see example from Tk FAQ #4.3
  How do I change the Tk cursor?).
o A +/- button in View Eden Definitions to expand / contract display of
  agents (eg AGENT system should probably be contracted most of the time).
o Put an error message pane underneath the input window (+ make it possible
  to resize it?)
o Separate error stream into another Tcl window.
o configure.in: can we cache more?
o Option to update "View Eden Definitions" continuously (actually, on every
  RunSet switch).
o Link Prev, Next Tcl history with the history as stored on file (a bit
  like the shell).
o Wrap Sasami window in Scout
o Feed mouse placement in Sasami window to Eden (perhaps in terms of a list
  of polygons that the mouse is currently over - Benjohn describes a
  technique involving turning the OpenGL renderer into a special mode, and
  rendering a window one pixel in size).
o " %scout" - make ex.c ignore leading spaces / tabs
o Readline currently seems to tab complete from the files in the current
  directory.  Change it to complete from Eden keywords and identifiers.
o Clear up #includes: should only use <> for system libraries (so that .d
  files don't show them)
o Inp_Dev_Save might be an unnecessary hack: perhaps Inp_Dev should be
  volatile?
o When opening the Scout window, if there is any content outside, make it
  bigger.
o Provide a command line argument which lets you pass a string to be passed
  as input before anything else is read.
o Get Scout/print.c printdef to use the constants array etc
o Fix Scout so that on View Scout or Scout ? query, the correct value of
  sensitive is shown
o Input window: an Undo function (particularly wrt paste / insert)
o Improve Scout / Donald unhelpful "parse error"
o Chris Brown's changes
o Fix tcl("reinit");
o Un-hack the dashed line stuff using the Dash patch in Tcl / Tk 8.3.3...
o Add a File->cd
o "a=1; while (1) { a++; }" causes tkeden to hang: not even the Interrupt
  button works (but Ctrl-C does) - is it possible to make the event
  from the Interrupt button be processed straight away (despite Tcl update
  not having been called - perhaps via some sort of error mechanism?) but
  leave the other events until Eden is ready, as before?
o Sasami: remove the globTogl hack
o Recode all references to interp->result (see Tcl_SetResult(3))
o Add some syntax to allow removal of triggers: ~>![] ? (if ![] is valid
  syntax elsewhere)...
o Resize viewport: if viewport size has not changed, don't do anything.
o A View Sasami Definitions window for completeness
o Can we rework Sasami's numeric IDs into symbolic ones for ease of
  tracing...?
o Replace the multiple Save options with Save and Save As options,
  with radio buttons to turn off saving of various notations in the
  dialogue box.
o Don't create required windows (eg History) until it is actually
  required to speed initial startup?
o Windows: Try and get the executable to use the Scriptics-provided
  DLLs (so can use Tcl 8.3 with the dash patch etc)?  Perhaps look at
  using the tcl-stub stuff...?
o Sasami: [Ben] Smooth vertex normals based on face normals and face
  adjacency
o [Ben] Speed controller example shows some display corruption
o [Ben] Note : Enormous (40 units+) polygons screw up lighting. OpenGL
  driver bug?  (Addition) Not necessarily bug. Maybe something to do with
  oblique specular angles on large polys looking wrong (despite being
  "right" in a mathematical sense). Imagine a poly large enough that the
  vertices on both sides had specular hilights and then interpolate
  across...
o Install a non-debugging version for DCS for performance??
o Rework Misc functions in the style of random if they are declared in
  system header files
o Change Scout int_tree assertion to a more helpful error, or modify the
  Scout parser to only allow integer values.
o Find should beep when search proceeds beyond the end or beginning of the
  document.
o Finish Help -> About Donald, Scout, Sasami
o Help -> About LSD
o Add "found: UNKNOWN" (or whatever) to bison error message as well as
  "expecting..."
o Remember the state of file type selection between File -> Opens etc
o File -> Restart !
o Find in the Quick Reference Guide windows...
o Can we get the OK button in the Quick Reference Guide windows to take up
  less space?
o DFfont is read by Donald at Donald startup, but Donald lacks dependency
  in this area and it's difficult to convince it to re-render the
  statechart with a new font (for example), whereas Scout seems to be
  better implemented here.
o Un-hack the Scout integer / real implementation (give Scout true integers
  and true reals).
o Remove "VB-like" features completely.
o A rename symbol procedure, mainly for use in debugging (when we want to
  move an existing procedure out of the way to subsitute another but keep
  the original)

o Query ? operator now shows sp->master, but this pretty much always seems
  to say "input".  Can we change sp->master or get information from
  elsewhere that would make this more useful?  Need to look at the calls to
  pushMasterStack() and what that actually does.  Perhaps push the stack
  trace so far: "input window:proc p:action q"?
o Do 'Previous' after error & move cursor to position of error (making
  interaction with tkeden somewhat like interaction with a debugger)
o Save definitions should not save the ones belonging to 'system'.
o Sort out a way of tagging files to show version when on SF
o Try and sort out Chris and mouse dragging finally
o Understand and document checkRunSet in main.c.
o Add my "cheat sheet" to Eden (Donald, Scout...?) quick reference...
o %scout causes a few system definitions to be entered under agent 'input'
o Check into CVS again: cvs remove disp.c disp.h win32ex.c win32ex.h


DOCUMENTATION
=============

o "History of tkeden" - email sy
**o Find out rules of source redistribution (from Roy?)
**o Who wrote the Eden handbook?  Put it on the cover
**o README file: no longer have exp2, exp10, log2 functions. configure
  options. Also redo INSTALL file.
o Scout: screen should be defined as screen=<thing/thing2>; etc rather
  than screen=thing&thing2;, perhaps.
**o Document this new Motion sensitive thing. Note that it may not appear in
  the history window...
**o Line breaks in Donald \
o xoutput and all that stuff?
o tkeden web page: explain variants, link to documentation and example models?
  Perhaps Andy McDowell's documentation?
**o -n option to ttyeden.  And -i option??
o dtkeden port numbers = actual port numbers + 9000 or something
o Document the generated files in the source - what depends on what?
o dtkeden options must be given in a certain order
**o Document -v, -u options
o Document how to use with dmalloc
o ~> operator.  Gets overwritten when defining things in the list.
o Can pull off the View menu and make it a permenant window instead
o Donald ! operator and function calls... func!(args), not func(args)!
o Are back-ticks (``) documented?  Isn't there something about various
  problems when used on the RHS?
o FAQ: "what happens during errors in Eden" - stack discarded?  (so any?
  input is forgotten)... "stack inconsistent" error
o Donald openshape vs shape.  What?  Also attributes of shapes are not
  copied across...?
**o Document ttyeden readline functionality: use emacs-style (or vi-style)
  keys to edit and retrieve history.  Can configure with .inputrc.
o Document reserved words somewhere...

o Document keyshorts in input window - copy the material from the Tcl
  text(n) man page.
