Whidbey was unveiled this morning. It has lots of nice new features, but I'm particularly
interested in some of the improvements to reflection.
-
Finally, there is support for custom modifiers in Reflection.Emit
-
DynamicMethod allows methods to be generated that "implement" a delegate and the code
gets garbage collected along with the delegate when it is no longer reachable.
-
There is (some) support for doing more of Reflection.Emit based on tokens (a token
is an Int32 that refers to metadata in a module), instead of the more heavy weight
MethodInfo/FieldInfo/etc. objects.
-
Reflection objects (e.g. MethodInfo) are now kept in a weak reference cache, so that
they can be garbage collected if they aren't needed anymore.
I need to do some rewriting to take advantage of the last two, but once I do, the
memory usage of IKVM should (hopefully) go down significantly. I'm not entirely sure
that the changes they made are powerful enough, but it is an important step in the
right direction.
I know I promised I wasn't going to move to Whidbey anytime soon, but I am going to
introduce some conditional compilation for Whidbey specific features, so that I can
play around with them. Mainstream development will continue to be on 1.1