shine
shine copied to clipboard
Scala 3 Draft PR
This is a draft PR porting shine
and all dependent repositories to Scala 3.
At the moment of opening this PR, there exists a large performance regression that me need to address before merging.
Here are the changes made in:
I see that you have changed some lazy vals to defs, could that be part of the performance regression?
In elevate macros you are wrapping these everywhere (strategies, combinators):
try ... catch
case _: MatchError => Failure(this)
I don't think this is what we used to do?
Ideally Success
/Failure
should only be automatically wrapped around rules and not strategies/combinators (i.e. automatically lifting partial rule functions to monadic functions)?
In src/main/scala/elevate/core/strategies/debug.scala, there are rule definitions which look more like strategies to me. I think we should be careful about what is a rule and what is a strategy?