Clint Jeffery To-Do List

TODAY

This Week

Steps to Make Uflex Production Grade For the City Other stuff:

Recent Stuff

Proposed New Case Expression Implementation 2/2018

  1. analyze case expressions and assign them one of three categories: (a) special case uses integer labels, (b) special case uses string labels, or (c) not special enough, better stick with current implementation
  2. devise a working/workable integer label optimization
  3. devise a string label optimization using hash numbers and the integer optimization

New Stuff Suggested by Phillip 1/2018

Concurrent programming Documentation needs better samples
Need Documentation: on designing for concurrency
Need Documentation: on rewriting existing code to be thread safe
Patterns Examples
  • UDB: How to find source code in other directories
  • Finish implementation book
    Concurrent programming seems still to be too low level
    We need higher level parallel programming capability, like a parallel switch statement?
    Analyze whether it (say, every call) can be parallelized for free or not
    Analyze how much memory threads will need.
  • Current Stuff

    Misc Recent

    A topic so big, it deserves its own page.

    Ivib Bugs

    Graphics Facilities

    Misc Stuff

    Unicon language extensions

    1. Add warnings for C-style #if or #ifdef, etc.
    2. Add warnings for semi-colon-insertion-induced surprises like ||| being three repeated alternation operators at the beginning of a line.
    3. Add warnings for "known bad" combinations of calls, such as move(many()) and suspend tab(), every-should-be-while and vice versa
    4. Add warnings or optimize things like many("x")
    5. Size of a file, *f, for number of characters remaining. If a file is newly opened, this is equal to stat(f).st_size
    6. Size of a network connection == # of characters previously processed? Or # of characters available to read.
    7. Size of a window, *w, as an alias for *Pending(w). But we also like it as an alias for WAttrib(w, "size")
    8. Should !w mean anything? Does it already? Should !net meaning anything? Does it already? Probably they read text lines from w or net.
    9. "const" attributes
      # Python L = (1, 2, 3) is a tuple
           L := `[1, 2, 3] # get confused with csets?
           record foo(a, b)
           r := `foo("hello", 3.2)
      
    10. implement an efficient case expression for strings, so that naive programmers don't have to recode them with tables of procedures.
    11. Think about adding '^abc' as an alias for &cset--'abc'. What about a unary ^ operator, so it is just ^'abc' ? Look into whether to support ranges, e.g. 'a-l'
    12. define new events for region allocation.
    13. go through Icon 9.5 and look for any other obvious improvements that we should back in.
    14. co-expressions support in uprof
    15. Add to iconc the same "discarded file/procedure" info that icont -v3 gives
    16. ODBC - review/update code for modern ODBC standards, what is it with the recurring warnings?
    17. cleanup dead platforms? -- config directories
    18. cleanup dead platforms? -- #ifdefs
    19. Reduce # of libraries required to build Unicon.
    20. review CGI - claim that some character conversions are more general and should be promoted. boilerplate head is not customizable, or isn't easy enough to customize.
    21. debug toxline-dedup program, preferably three-thread version
    22. More examples on how to use concurrency; thread pools etc.
    23. Much more thorough unicon -C testing and validation.
    24. Standard tests should test unicon -C as a matter of course
    25. IPL libraries -- some obsolete, maybe retire and/or remove from Unicon book if platform dead -- consider hexadecimal to decimal conversion program, prints chart on screen with dead controls.

    Utilities

    1. Make a Unicon pretty printer
    2. Make a Unicon call graph and dead code detector
    3. Make lists use array internally if constructing list-of-numbers
    4. Unicon book updates regarding arrays (maybe done)
    5. Debug and/or document better, the expanding memory regions semantics
    6. Better instrumentation and/or accounting for regions upon failure
    7. Remove temporary files left around in /tmp, e.g. /tmp/uni91018483-iconc

    Earlier items; may need some updates and/or removals.

    1. write test suites for recently added Unicon features and tools
    2. extend the Unicon configuration tool to handle Concurrent/HAVE_PTHREADS/Patterns
    3. add diagnostic messages (to the Unicon configuration tool) about what is necessary and missing to enable optional Unicon features such as sound and graphics.
    4. expand the Unicon documentation on co-expressions to include one or more complete program examples
    5. clarify Unicon documentation regarding the distinction between the while and every keywords
    6. clarify Unicon documentation regarding the use and scope of object-oriented variables and initializers (!)
    7. Propagate default "make" rules for Unicon config/build
    8. Update UB so OOP examples are complete programs and explain public-ness of fields properly
    9. eliminate duplication between parser/ and unicon/, check duplication in ide/
    10. test heavily the JPG and PNG support on windows
    11. extend syntax coloring editable textlist to do font attributes (bold, italics, underline)
    12. port Audio code to Windows
    13. Merge MSDOS and NT symbols down to MS

    Clint and Phillip's To-Do List, November 2009

    Portability

    Database Chapter of Unicon Book

    Clint's Old To-Do List from May 2007

    1. Develop background printing
    2. Add attributes for viewport/perspective adjustment to 3D facilities
    3. Performance tune 3D facilities: use fewer slices for spheres/cylinders/disks as they get further away, proportional to their size
    4. Drop obviously non-rendered primitives such as objects that are behind the camera
    5. Add a Canvas subclass of Panel that knows the full built-in Unicon 2D graphics repertoire.
    6. write an ilink.icn
    7. ability to load icont programs from an iconc program
    8. investigate why linker optimization on a large link (core.icn) does not give back all the bytes and be equivalent to not linking it, if you aren't using anything in it.