Guice: ASMのシェーディングを停止しますか?

作成日 2018年07月13日  ·  12コメント  ·  ソース: google/guice

https://github.com/google/guice/pull/1169#issuecomment -395095124によると、ASMのシェーディングを停止するときが来たのではないでしょうか。

これにより、必要に応じてASMの独自のコピーを持参できるようになり、JDKの新しいバージョンがリリースされ、Guiceがまだ更新されていない場合は、ブロックが解除されます。 ゲームの先を行っていない人のために、MavenPomにデフォルトを提供することは明らかです。 これは、JDKが6か月のリリースリズムを継続するので役立つ可能性があります。

最も参考になるコメント

asm7がリリースされた日にこのスレッドにpingを実行すると、同じ日または翌日に新しいcglibとguiceをリリースしようとします(予期しない問題が発生しないことを前提としています)。

全てのコメント12件

sgtm、影付きの理由は、歴史的にasmが以前のリリースと非常にバイナリ互換性がなかったためだと思います...しかし、最近のリリースではそれが変更されたと思います。

@mccullsからのそのコメントは、ここでも関連している可能性があります。

ビルドは、asmまたはcglibをバンドルしないバージョンのGuiceをすでに生成していることに注意してください。

http://repo1.maven.org/maven2/com/google/inject/guice/4.2.0/guice-4.2.0-classes.jar

これは、JarJar'ingの前のGuiceクラスのjarファイルです。

また、AOPが必要ない場合は、asm/cglibをまったく使用しない「no_aop」jarがあります。

http://repo1.maven.org/maven2/com/google/inject/guice/4.2.0/guice-4.2.0-no_aop.jar

JDKの新しいバージョンがリリースされ、Guiceがまだ更新されていない場合は、ブロックを解除します。

新しいクラスファイルバージョンをサポートするにはAPIレベルも更新する必要があるため、ASMをシェーディングしないだけでは十分ではないと思います。

https://github.com/google/guice/blob/35caaec1b4af0f20ab8b3fae8a1fc98afc0fd13e/core/src/com/google/inject/internal/util/LineNumbers.java#L144

新しいクラスファイルバージョンをサポートするにはAPIレベルも更新する必要があるため、ASMをシェーディングしないだけでは十分ではないと思います。[...]

また、GuiceでのJDK11の実験的なサポートには、実験的なOpcodes.ASM7_EXPERIMENTALのみを使用できます:[1]。

https://gitlab.ow2.org/asm/asm/blob/master/asm/src/main/java/org/objectweb/asm/Opcodes.java#L55

また、GuiceでのJDK11の実験的なサポートには、実験的なOpcodes.ASM7_EXPERIMENTALのみを使用できました:[1]。

このPR#1203で行われます。 このdiffを使用すると、GerritをJDK11、Bazel、VanillaJavaBuilder(https://gerrit-review.googlesource.com/c/gerrit/+/194040)で構築できます。

$ bazel build --host_javabase=:jdk11 --host_java_toolchain=//:toolchain_vanilla --java_toolchain=//:toolchain_vanilla //:release
[...]
INFO: Analysed target //:release (0 packages loaded).
INFO: Found 1 target...
Target //:release up-to-date:
  bazel-bin/release.war
INFO: Elapsed time: 0.431s, Critical Path: 0.19s

ところで:asm6.2.1が利用可能です

他の人が述べているように、新しいJDK機能をサポートするには、コードを(guiceとcglibの両方で)変更する必要があるため、asmをシェーディングしないと実際には解決されません。

@samebあなたがここにいるので:
Java 11が来週リリースされ、数日後にASM 7.0もリリースされることを考えると、ASM7にアップグレードしてから新しいGuiceバージョンをリリースする可能性はどのくらいありますか。
私はPlayFrameworkに取り組んでおり、数週間以内に新しいリリースが計画されています。 ただし、新しいリリースがJava 11でも実行されるように、AMS7を備えた新しいGuiceバージョンが必要になります。

ETAはありますか?

asm7がリリースされた日にこのスレッドにpingを実行すると、同じ日または翌日に新しいcglibとguiceをリリースしようとします(予期しない問題が発生しないことを前提としています)。

@sameb素晴らしい、ありがとう! 私は確かにあなたにpingします:smile:

Ping @sameb -ASM 7がリリースされました! https://github.com/google/guice/issues/1205#issuecomment-433649551を参照してください

このページは役に立ちましたか?
0 / 5 - 0 評価