| 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@javaCompatibleProcessorCreator
The intellij plugin named
Scala-Macro-Toolsin 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.
