Skip to content
szegedi edited this page Jun 1, 2012 · 1 revision

0.3

New features

  • Public fields are now handled as properties in absence of property getter/setter methods.
  • org.dynalang.dynalink.beans.StaticClass objects handle static aspects of classes: static fields, methods, properties, and instance creation. They have a "class" virtual property to retrieve the corresponding java.lang.Class object.
  • new "dyn:new" operation for creation of instances. BeansLinker links "dyn:new" for StaticClass objects (not for java.lang.Class!).
  • java.lang.Class objects have a "static" virtual property to retrieve the corresponding StaticClass object.
  • DynamicLinkerFactory has a setSyncOnRelink() method.
  • Convenience GuardedInvocation.compose() and .hasBeenInvalidated() methods.
  • Convenience GuardedInvocation.asType(), .insertArguments(), .dropArguments().
  • Language runtime-specific context arguments moved from trailing position to immediately after receiver. This avoid conflicts with variable arity invocations.
  • Operation strings are guaranteed to be interned, so you can use op == "getProp" etc. instead of equals().
  • ChainedCallSite, a default implementation of a multiply-linked relinkable call site.
  • "length" is exposed as an ordinary property on Java arrays by the BeansLinker.
  • LinkRequest.getReceiver() can be used to efficiently retrieve the 0th argument without triggering cloning of the argument array in LinkRequest.getArguments().
  • Support for explicit overloaded method resolution by specifying parameter types in the method name using the "name(type, type, ...)".
  • Lookup.findOwnSpecial() and Lookup.findOwnStatic() for easy retrieval of own private methods in classes.
  • New ConversionComparator interface to be implemented by GuardedTypeConverterFactory to help overloaded method resolution in presence of language-specific conversions.

Improvements:

  • Vastly improved overloaded method resolution, especially in presence of language-specific type conversions
  • Much less guards and other method handles created.
  • Relinking stack frames are eliminated by using foldArguments(exactInvoker, relink) instead of relinkAndInvoke
  • RelinkableCallSite instances are slimmed by not storing the relink MethodHandle anymore.
  • Unconditional type converters are invoked fast.
  • Many exception messages have been made much more informative.
  • Some Guards methods log warnings when the guards they create will be either always true or always false.
  • Many bugfixes