Hi Charlls!
* ugen/plugin infrastructure; what headers you include? what classes you inherit?
While the framework for both statically and dynamically adding new classes and unit generators exists, only the static one is exposed. Look into any of the ugen_*.cpp or ulib_*.cpp as an example. These are pretty cumbersome, we definitely hope to improve them at some point.
*** how much multithread-eable could be chuck; in other words, how possible is to implement shreds in a true multithreaded mode where each shred can run in a different core, but keeping the sample-synchronous approach?
Having multi-core isn't hard, but keeping the sample-synchronous nature between cores may be really difficult to do efficiently. This is the subject of future research.
i imagine one could relax that to a "block-synchronous" multi-shreding.
There has been some thought put into adaptively optimizing by putting things into blocks when possible, as advised by the shreduler. There was a discussion of it here: https://lists.cs.princeton.edu/pipermail/chuck-dev/2005-September/ 000090.html https://lists.cs.princeton.edu/pipermail/chuck-dev/2005-September/ 000091.html
* dynamic allocation of resources; of course, this could be implemented on top of the language; for example, creating a fixed number of audio buffers and calling .read as a score progresses a number of times in the same sndbuf object would (i imagine) free the previous allocated buffer and alloc for the new one.
There is certainly a goal. Currently we can dynamically allocate objects in the language (via new) but garbage collection isn't done yet. This will hopefully be finished in the very near future. Best, Ge!