scala-commons

AVSystem commons library for Scala

MIT License

Stars
83
Committers
34
scala-commons - 2.7.6

Published by ghik almost 2 years ago

scala-commons - 2.7.5

Published by sebaciv about 2 years ago

  • added ScalaDurationExtensions
scala-commons - 2.7.4

Published by ghik about 2 years ago

  • added constantDeclarations static analyzer rule for checking syntax of Scala constants
scala-commons - 2.7.3

Published by sebaciv over 2 years ago

Dependency updates: Jetty, MongoDriver, ScalaJS, Akka

scala-commons - 2.7.2

Published by wodomierz over 2 years ago

Blocking Either as IO in BlockingUtils

scala-commons - 2.7.1

Published by ghik over 2 years ago

  • [bugfix] DefaultBlocking.ioScheduler caches the scheduler
scala-commons - 2.7.0

Published by ghik over 2 years ago

  • Transaction support in typed MongoDB API (#417)
scala-commons - 2.6.2

Published by sebaciv over 2 years ago

  • Dependency updates: Jetty, Scala, ScalaJS, slf4j
scala-commons - 2.6.1

Published by ghik over 2 years ago

  • BsonInput.readDouble() implementations accept INT32 (#413 by @pulewicz)
scala-commons - 2.6.0

Published by ghik over 2 years ago

Changes in BSON serialization (in commons-mongo module):

  • BSON serialization uses the smallest possible representation based on actual values:
    • Long is serialized to BsonInt32 if the value is small enough
    • BigInt is serialized to BsonInt64 or BsonInt32 if the value is small enough
    • BigDecimal is serialized to BsonDecimal128 where possible (#410)
  • BsonReaderInput based on BsonBinaryReader can now read document fields in any order (#411)
    • peekField was implemented
    • this doesn't work with BsonDocumentReader due to upstream bug in its implementation
scala-commons - 2.5.4

Published by ghik over 2 years ago

  • fixed numeric overflow in RetryStrategy.exponentially
scala-commons - 2.5.3

Published by ghik over 2 years ago

  • BSON inputs for GenCodec: allow interpreting BSON Int32 as Long when reading
scala-commons - 2.5.2

Published by ghik almost 3 years ago

commons-mongo:

  • added support for MongoPolyDataCompanion (Scala 2.13 only)
scala-commons - 2.5.0

Published by ghik almost 3 years ago

  • Reworked TypedMap and added support for it in Mongo API
  • Added FloatWrapperCompanion, DoubleWrapperCompanion and BooleanWrapperCompanion
scala-commons - v2.0.0

Published by ghik over 3 years ago

  • Added support for Scala 2.13 and dropped support for Scala 2.11
  • GenCodec creates a List instead of Vector when deserializing scala.collection.Seq or scala.collection.immutable.Seq #76
  • commons-annotations module removed, annotations moved to commons-core
  • removed commons-rest, commons-akka and commons-kafka
  • AnnotationAggregate redesigned to use aggregated method rather than dummy type member
  • aliases for Annotation and StaticAnnotation in CommonAliases
  • Async moved from RawRest into concurrent package
  • declareSize, sizePolicy for Outputs and knownSize for Inputs
scala-commons - v1.34.0

Published by ghik almost 6 years ago

REST framework:

  • REST framework has been superseded by udash-rest and deprecated. For backwards compatibility, it has been moved to separate, cross compiled module, commons-rest.

Changes in GenCodec (breaking)

  • Extracted SimpleOutput from Output and SimpleInput from Input - this primarily makes writing wrappers easier. For wrapping, convenience abstract classes have been implemented.
  • isNull removed from Input. Instead, readNull() returns Boolean to indicate whether there was null or not.
  • Introduced readCustom and writeCustom as a more principled way Input and Output implementations may support custom native values like ObjectId.
  • Introduced InputMetadata which may be used by Input and Output implementations to provide additional information to codecs, e.g. JsonType by JsonStringInput.
  • Introduced GenObjectCodec as a public sub-typeclass of GenCodec. It has materialize, HasGenObjectCodec etc.

Changes in RedisDriver (breaking)

  • Full support for Redis 5, including streams
  • Blocking commands can now be executed on RedisNodeClient and RedisClusterClient thanks to a separate connection pool maintained by RedisNodeClient for them
  • Simplified type parameterization of Redis API variants by introducing RedisSerialization
  • HashKey type member is renamed to Field
  • Redis APIs are now parameterized also by Record type which has a separate RedisRecordCodec serialization typeclass which can be derived from GenObjectCodec. Records are used in Redis hash and stream commands.
  • RedisDataCodec no longer uses StreamOutput/Input - simple values are serialized as plain strings while complex values are serialized to JSON before being sent to Redis. This is a major breaking change in serialization format used by Redis driver to save Scala types into Redis.
  • RetryStrategy is now more composable
  • Handling of TRYAGAIN Redis Cluster errors with configurable retry strategy
  • Changes in ClusterConfig - primarily new retry strategies
scala-commons - v1.33.2

Published by ghik about 6 years ago

  • REST framework: header parameter names are case insensitive when reading from RestRequest
  • allowed vals and vars in macro instances
  • metadata classes can now have filters of their own (e.g. @annotated) - previously it was only possible to specify them on metadata parameters
scala-commons - v1.33.1

Published by ghik about 6 years ago

  • MacroInstances no longer requires methods in Instances trait to be parameterless
  • introduced @allowIncomplete meta-annotation for metadata classes which makes it possible to materialize partial metadata for RPCs and ADTs
  • various minor convenience methods and implicits
scala-commons - v1.33.0

Published by ghik about 6 years ago

  • usage of MacroCommons from commons-macros no longer requires commons-annotations or commons-core in classpath of macro callsites (breaking for client classes extending MacroCommons)
  • introduced typeclasses for capturing annotations: AnnotationOf, AnnotationsOf, OptAnnotationOf and implicits for capturing self-annotations into super constructor arguments: SelfAnnotation, SelfAnnotations, SelfOptAnnotation
  • simplification/generalization of RpcMacroInstances into RPC-independent MacroInstances (breaking)
  • added missing example field into OpenAPI Schema in REST framework (breaking)
  • improved/fixed annotation processing by properly substituting type parameters of annotations
  • dropped RpcImplicitsProvider, instead one should rely on implicit injection through MacroInstances into companion objects (breaking)
  • GenCodecMacros now use the same implicit resolution & caching engine as RPC/ADT metadata macros
  • RestStructure refactored/simplified (breaking)
scala-commons - v1.32.0

Published by ghik about 6 years ago

Changes in RPC/ADT macro engines:

  • @reifyEncodedAnnot removed, allowed @composite parameters to be @optional instead
  • introduced @reifyDefaultValue for reifying Scala-level default values of case class fields
  • introduced overloadedOnly flag for @rpcNamePrefix which causes it to be used only for overloads of RPC methods
  • introduced ImplicitNotFound typeclass for customizing implicit-not-found compilation errors for arbitrary types

REST framework:

  • support for headers in HTTP responses (requires custom serialization to RestResponse)
  • automatic handling of HEAD and OPTIONS requests
  • operationId in generated Operation objects now defaults to RPC methods plain name, without the HTTP method prefix (e.g. soSomething instead of post_doSomething) unless the method is overloaded.
  • nicer compilation error messages for various missing REST-related implicits
  • @operationIdPrefix annotation for prefix methods
  • operation adjusters can now be specified for prefix methods - will apply to all operations under a prefix method
  • introduced new type of adjuster: PathItemAdjuster for adjusting OpenAPI PathItem objects
  • introduced new adjuster annotations: @operationId, @nullable, @tags, @bodyDescription, @responseDescription, @pathDescription, @summary, @pathSummary, @title, @schemaDescription
  • configurable async context timeout and buffer size for Jetty-based client & server
  • OpenAPI generation now accepts predefined Components
  • various minor fixes and improvements

GenCodec:

  • compilation errors raised for missing dependencies are positioned on case class parameters which cause these errors
  • GenCodec.Auto removed