arrow-kt / arrow-meta

Functional companion to Kotlin's Compiler
https://meta.arrow-kt.io
Apache License 2.0
396 stars 42 forks source link

[BUG] arrow-meta 1.0.0 jar misses many required classes #869

Open peterpaul opened 3 years ago

peterpaul commented 3 years ago

Describe the bug The arrow-meta-1.0.0.'jar file is missing many classes that can be found in the 1.5.0-SNAPSHOT version from https://oss.sonatype.org/content/repositories/snapshots/.

To Reproduce Steps to reproduce the behavior:

  1. Clone https://github.com/arrow-kt/arrow-meta-examples
  2. Run ./gradlew build to validate it still works
  3. Set ARROW_META_VERSION=1.0.0 in gradle.properties
  4. Run ./gradlew build
  5. Observe that compilation fails with many unresolved reference errors

Alternative steps

  1. Download arrow-meta-1.0.jar from https://search.maven.org/artifact/io.arrow-kt/arrow-meta/1.0.0/jar
  2. Inspect the jar file, and observe that many classes, like arrow/meta/Meta.class are missing.

Expected behavior Compilation should work successfully. The arrow-meta.jar file should contain the arrow/meta/Meta.class.

raulraja commented 3 years ago

@peterpaul that version of arrow-meta is the kapt based version for the optics processor which is currently JVM only and is unrelated to the future of Arrow Meta, a framework based on compiler plugins and that works in MPP, what you see in this repo. In the next few months, we will be releasing versions of Arrow meta following the Kotlin compiler releases and discontinuing the old kapt version. There are currently no stable versions of Arrow meta for compiler plugins which is what it is on this repo but you can depend on the latest snapshot until we have a stable release.

peterpaul commented 3 years ago

@raulraja Thank you for your answer. For now we'll continue depending on the SNAPSHOT version.

I do have two more questions if I may:

  1. Are there any plans to avoid the confusion between these two artifacts?
  2. Is there an indication of the timeline for a stable release of arrow-meta?
raulraja commented 3 years ago

@peterpaul The stable release of Arrow meta and the optics compiler plugin for mpp is linked to the stability of FIR in the compiler. We expect to have a first stable release at the end of the year or around 1.6.x - 1.7 once FIR lands in Kotlin as the default frontend. The quote and code generation API's in meta currently depend on PSI + Descriptors which will become legacy once FIR is stable.