Oh yes - you are absolutely right in all of your points.
The big obstacle in the way is our old friend, the stc compiler. That one is (still) written using yacc and lex, in C. Therefore, it has very limited chances of doing any real work at compile time - especially, and for this issue relevant: it cannot evaluate any smalltalk. I must admit, that I do have a love/hate relationship to stc; on one hand, its an inflexible beast, written in C. On the other hand, its the one tool which allows for most of ST/X's portability, helps to bootstrap to other architectures and also generates the standAlone dll and exe objects.
We could enhance stc to pass some of the parsed code unevaluated and have the initialize code handle this later, when smalltalk has control. That would mean, that the annotation-contents is passed untranslated by stc to some later stage during the startUp and then compiled by smalltalk (possibly lazily).
However, we have actually stopped further enhancements of stc because we think that its too hard to maintain and needs a replacement:
For quite some time, I have started to work on a new compiler, which uses the same front-end as the bytecode compiler but takes the generated bytecode and generates C from those. It is written in Smalltalk and will need the old stc for bootstrapping. Obviously, it will understand Smalltalk and will be a good basis to implement all of the features you aked for. Right now, I cannot tell you when that will be ready for production - it is in a releatively early stage, and definitely not stable enough for publication. It will also need a different librun, as I plan to generate continuation-capapable C-code (for all those seaside fans). I will keep you informed. Is anyone willing to help working on that ? I could also think about some bachelor/master/diploma themes based on that...
Claus