Skip to content

Releases: AVSystem/scala-commons

v1.25.0

06 Dec 07:09
Compare
Choose a tag to compare

commons-core full cross project

  • Modules commons-shared (previously cross compiled to JVM and JS) and commons-core (previously JVM only) have been merged into a single cross compiled module commons-core. Therefore you must replace your dependencies to commons-shared with commons-core.
  • Removed BasicJavaInterop, implemented JavaInterop separately for JS (without Java 8 stuff which is unavailable in ScalaJS)

v1.24.1

06 Dec 08:14
Compare
Choose a tag to compare

ValueEnum

ValueEnum is a new way for defining Scala enums, representing enum constants as final vals in companion object of enum class.

Advantages:

  • feature parity with Java enums (although ValueEnum does not extend java.lang.Enum)
  • every enum constant has name (name of the final val that declares the constant) and ordinal (zero based index of enum constant, consistent with declaration order).
  • less boilerplate than sealed hierarchy based enums
  • it's possible to declare many enum constants in a single line of code
  • much less generated classes, which is advantageous primarily for JS size reduction

Disadvantages:

  • scalac exhaustive pattern match checking does not understand ValueEnum which may result in both lack of correct warnings and incorrect warnings
  • each enum constant can't have its own API (unless through implicit classes)

v1.24.0

06 Dec 07:53
Compare
Choose a tag to compare

Optimizations for JS size reduction

Serialization framework:

  • completely refactored macro-generated GenCodecs for much less generated code by moving as much code as possible to base classes: ApplyUnapplyCodec, ProductCodec, SealedHierarchyCodec etc.
  • performance optimizations based on benchmarks in comparison with Circe

RPC framework:

  • reduced amount of code generated for macro-materialized instances of AsRawRPC, AsRealRPC
  • dropped RPCTypeClasses in favor of newly introduced RPCFramework#RPCCompanion which is designed so that DCE removes unused TC instances

RPC generalization

30 May 13:08
Compare
Choose a tag to compare

RPC framework has been generalized to allow other types of remote methods than getters, functions and procedures. Old functionality of RPCFramework is retained as StandardRPCFramework, which is now a special case of new, generalized RPCFramework. RPCMetadata has also been adjusted to reflect the generalization.

These changes are not backwards compatible.

v1.13.1

04 May 12:54
Compare
Choose a tag to compare

v1.13.0

04 May 12:55
Compare
Choose a tag to compare
  • RPCMetadata typeclass

v1.12.0

04 May 12:55
Compare
Choose a tag to compare
  • first public release