Csound 6 TODO list

1) loadable instruments:
 - AST tree memory recovery needs fixing. *** FIXED ***
 - add support for fast loadable format  *** future versions ***
 - document AST tree format to allow users to parse into it. *** future versions ***
 - API functions  ** done **
 - thread safety ? ** done **
 - add opcode to compile/load an orchestra *** done ***
 - API step by step construction of TREE?  *** future versions ***
 - safe deletion of TREE *** FIXED ***
 - memory recovery of POOLs ***DONE***
- test extensively (including UDOs and namedins)
 - UDOs are not replaced, memory recovery needed? 

2) allow any number of strings in score events (except p2,p3). 
     *** FIXED ***
  - do we need a new parser for score? (**in progress**)

3) test sample-accurate opcodes, or document those not working
  - check that kperf code can be used in multicore mode in csound.c
  (possibly changes need to be propagated?) **mainly done**

4) Use instrument-local structure rather than global (ksmps mainly)
**** Done ****

5) New DAG control without memory use   *** Done ***

6) Whittle code needs rewrite to avoid copyright infringement and to
make it easier to maintain *** FIXED ***

7) Analysis formats need to be byte-order/machine independent, and
reader opcodes need to accept them.
   *** Hetro analysis fixed *** 
   *** cvanal analysis fixed *** 
   *** lpanal analysis fixed *** 
  7a: fix _export programs

8) syntax error checks (undef variables etc) need to be put back. *** DONE ***

9) csoundInputMessage() is broken. *** FIXED ***

10) check changing p3 works with early ending code, and event/scedule
    ***done***

11) realtime priority mode
  -  asynchronous disk access IO mechanism. *** DONE *** soundin, fout, foutk, fin,
and fink modified. diskin, diskin2 and pvsfwrite  now have their own
dedicated async read/write. diskgrain and pvsdiskin have not been
changed but they have realtime safe versions in syncgrain and
pvsfread. 

  - asynchronous init pass in RT mode - added but needs further
    testing/evaluation

  - other features?

12) More user control over size of graphs (request from Menno)
    Actually needs make graph drawing external via API/plugin

13) Functions of more than 1 argument
  ** DONE ** actually works, and taninv2 and divz are also available
  as functions of 2 args 

14) Expose OPARMS or OPARMS-like struct to API users, so that they can
configure csound with typed system (that in turn can be inspected)
**** DONE  new configuration functions  and struct ****

15) Rewrl tvars
    **** DONE to CS5 level ****

rc1 aimed for 28 Feb -- actual 08 Apr

Post RC1

1) Implement csp_orc_analyze_tree() and remove csp code from csound_orc.y
2) Complete removal of old type code and use only new type system 
   * remove argtyp2
   * modify add_udo_definition to use var pool, new utility functions to 
     calculate mem pool size
3) Sort out installer for Mac *** DONE ***
4) Test builds with iOS and Android  (need to update CS6 repo with
   latest from CS5 for both of those to start) *** DONE ***
5) Add API tests in Python in tests/python 
   * build out test suite runner
   * organize what API functions to test
6) Modify API Wrappers to use csnd6 instead of csnd, so that csound5
   and csound6 can co-exist on the same system.  (Requires users to
   update code to use new package name)  *** DONE ****
7) Remove tabvars.c and remove concrete t-type code (handled by k[]
   now) *** DONE ***
8) Tidy up compiler files: move functions around into new
   compiler_utils.c file, use .h to replace all the uses of externs  
9) Review error messages to see if they can be made better
10) Document new facilities and opcodes *** opcodes done ***
11) Decide array semantics *** left to future release ***

=====
Speculation List

2) Allow changes in possible options after start, eg debugging for
next instrument

