Project Stage | CI | Codecov |
---|---|---|
Scaladex | Jetbrains Plugin | Nexus Snapshots |
---|---|---|
Learn Scala macro and abstract syntax tree.
The project is currently experimental
- Compile passed in Java 8、11
- Compile passed in Scala 2.11.12、2.12.14、2.13.6
@toString
@json
@builder
@log
@apply
@constructor
@equalsAndHashCode
@jacksonEnum
@elapsed
@javaCompatible
ProcessorCreator
The intellij plugin named
Scala-Macro-Tools
in marketplace.
A cache like Spring @Cacheable
and @cacheEvict
based on zio. It has no implementation of storage media.
@cacheable
/Cache.apply
@cacheEvict
/Cache.evict
A memory cache based on zio and caffeine. It needs cacheable-core
module.
A distributed cache based on zio and zio-redis. It needs cacheable-core
module.
Add library dependency
Use smt-tools
"org.bitlap" %% "smt-tools" % "<VERSION>" // named smt-tools since 0.4.0
Only Usesmt-cacheable-core
// cache API, include dependencies: zio, zio-streams, zio-logging
"org.bitlap" %% "smt-cacheable-core" % "<VERSION>"
Use smt-cacheable-redis
TODO Not unavailable, no distributed lock
// distributed cache, include dependencies: zio-redis, config, zio-schema, zio-schema-json, optional (zio-schema-derivation for case class)
// dependsOn `smt-cacheable-core`(not support Scala2.11.x)
"org.bitlap" %% "smt-cacheable-redis" % "<VERSION>"
Use smt-cacheable-caffeine
// local cache, include dependencies: config, caffeine
// dependsOn `smt-cacheable-core`
"org.bitlap" %% "smt-cacheable-caffeine" % "<VERSION>"
The artefacts have been uploaded to Maven Central. Importing the library into your build system (e.g gradle, sbt), is not enough. You need to follow an extra step.
Scala 2.11 | Scala 2.12 | Scala 2.13 |
---|---|---|
Import macro paradise plugin | Import macro paradise plugin | Enable compiler flag -Ymacro-annotations required |
addCompilerPlugin("org.scalamacros" % "paradise_<your-scala-version>" % "<plugin-version>")
Where <your-scala-version>
must be the full scala version. For example 2.12.13, and not 2.12.
If that doesn't work, google for alternatives.
In version scala2.13.x
, the functionality of macro paradise has been included in the scala compiler directly. However,
you must still enable the compiler flag -Ymacro-annotations
.