Hey Raul, could you please help me to build and ru...
# arrow-meta
t
Hey Raul, could you please help me to build and run your branch? I'd like to play around and maybe work on in later. Thanks!
šŸ‘ 2
šŸ” 1
r
./gradlew clean arrow core databuild
that is what I’m using to build, I’m pushing changes almost daily
expect the editor to not understand what’s going on since the arrow code base can’t have the arrow meta plugin yet installed
because it’s in the arrow project
and we’d need to shadow a prev version to have recursive meta meta which is something I’m not wasting time on now
The Arrow maintainers and contributors are gonna have to live with a period of darkness in the code base as meta stabilizes and we figure it all out. Heads up, this is not a fun dev experience or for the faint hearted. šŸ˜‰
I think if you want to try meta the fastest path right now is to create a new module inside Arrow that has nothing and just build that depending on the compiler plugin like in my branh I’m doing with
arrow-core-data
that will give you a single file where you can enable higherkinds or whatever
or just write a simple plugin by copying what HigherKindPlugin.kt does
There is also a DummyPlugin that injects members
the editor will not work the first time
but as you tab arround and compile it will pick up the synth descriptors
we have an initialization order issue but we are getting help and know how to fix it
Right now meta bootstrap as the user types but it needs to do it when the project opens to parse and cached the already compiled class files and run the quote system on each highlighting phase
-Dorg.gradle.debug=true -Dkotlin.compiler.execution.strategy=ā€œin-processā€
That is important to always run any gradle commands with those modifiers as the compiler plugin needs to be embeded alongside the compiler
and we need to make sure the compiler daemon elsewhere is not acting over the codebase at the same time without our plugin
additionally you may want to publish local the compiler plguin, gradle plugin and you need to add to the kotlinCompile task the compiler free arguments for the jar since we have a bug in our GradlePlugin where it does not does this automatically for you
everything is very unstable at the moment so just setting reasonable expectations šŸ™‚
t
thanks for very long instruction. I'll try to build it later today.
hello, I tried to build follow your command, it failed. But then I found this
Copy code
compileKotlin {
    kotlinOptions.freeCompilerArgs = ["-Xplugin=/Users/raulraja/workspace/arrow/arrow/modules/meta/arrow-meta-prototype/compiler-plugin/build/libs/compiler-plugin.jar"]
}
So I corrected it with my local path, then build again. It still failed but it generated a file named
AndThen.kt.meta
in the
arrow.core
package. Is that what you have in your machine as well?
r
yes
you can see the generation if you add this comment anywhere on any file
//metadebug
I’m fixing a bug currently with the generation that affects AndThen because meta is not retaining the
sealed
modifier
@simon.vergauwen is also fiddling with it
t
nice, do you have anything that I can try, like fixing some bug?
r
There are several areas we may need help: - We have no testing strategy to test a plugin but this can help https://github.com/tschuchortdev/kotlin-compile-testing We need to provide a dsl for users to easily test their plugin about expected compilation errors or successes. - We need to figure out a way to install the IDEA plugin so when the gradle importer kicks in it automatically install the plugin by copying it to the user plugins folder which loads anything in there automatically.
- We need examples for simple plugins like printing statements and hello world style contributions for the tutorials and docs
I’m exploring the Quote system to see if I can describe entirely polymorphically for all KtElement, if I’m not able to accomplish it we would need to declare all Quote implementations for all KtElement so you can filter and transform more than just classes and functions
Also what you had to do with the freeCompilerArgs that is responsibility of the gradle plugin and it’s failing to do so
I have not taken the time to create issues yet for this because this is the early stages of Meta so we are prioritizing as we find the need but this and others are the issues we still have
t
I'll follow you for now, If I figure out I can do any of those things, I'll work on that.
šŸ‘ 1