On 03.11.2015 22:28, Alex Buckley wrote:
[...]
groovy-compiler will obviously have a hard dependency on groovy-base,
but you can avoid groovy-base having a hard dependency on
groovy-compiler by using services. Of course this assumes a suitable
split between the interface of your compiler and its implementation.

and of course that split does not exist ;) It is a difference of not including something and referring to it by reflection, to have it optional; and to have it as a service. The first we can do without bigger changes, the later requires the definition of a whole "new" API.

[...]
One option for the Groovy runtime is to special case its meta class
package hierarchy by arranging for g.r.m.** classes to be defined by,
and exported from, a special module that the runtime generates; the
runtime would set up readability between this module and the user
modules that "thought" they were defining and exporting g.r.m.**.

You can see a flavor of this technique in the "dynamic module" created
by Java's Core Reflection when you proxy certain interfaces -- see
"Package and Module Membership of Proxy Class" in
http://cr.openjdk.java.net/~mr/jigsaw/spec/api/java/lang/reflect/Proxy.html.

will have a look soon, thanks.

bye Jochen

Reply via email to