Skip to content

Latest commit

 

History

History
774 lines (533 loc) · 39.7 KB

CHANGELOG.md

File metadata and controls

774 lines (533 loc) · 39.7 KB

Changelog

01/03/2020 - Version 0.20.0

This release focussed on improving Protobuf support, introducing a number of new features and bug fixes but also some breaking changes.

New features/improvements/bug fixes:

  • Scala reserved words are now escaped properly in generated code, so you can safely use words such as type or private in your Protobuf definitions.

  • Type names in generated code are now fully qualified, so use of words such as Option or Either in your Protobuf definitions will not cause name clashes with other Scala types.

  • The sbt plugin no longer includes unnecessary imports in generated code. For example, if your RPC endpoints do not make use of streaming, the generated code will not include any FS2 or Monix imports.

  • Protobuf enums are now supported. They are encoded as enumeratum IntEnums in the generated code.

  • Protobuf oneof fields are now supported. They are encoded as Shapeless Coproduct types in the generated code.

  • Field numbers are now respected when encoding/decoding Protobuf messages. This is important if you want your Mu server or client to communicate correctly with 3rd parties using Protobuf.

  • Default values for Protobuf scalar fields are now supported correctly. When reading a message with a missing field, the field is correctly instantiated with the default value for its type. When writing a message, a field is skipped if it has the default value. See this table for more details about default values for various types.

  • Repeated Protobuf fields with primitive types are now encoded using the packed encoding by default, for compliance with the proto3 spec.

  • A new srcGenStreamingImplementation setting has been added to the sbt plugin, allowing you to choose which streaming implementation (FS2 or Monix) to use when generating code. Previously this was hardcoded to FS2 and not configurable. See the docs for more details.

Breaking changes:

  • We have fixed a number of bugs in Protobuf encoding/decoding, and we now have a test suite to check that Mu's Protobuf encoding matches that of protoc, the official Protobuf CLI tool. However, this means that clients and servers using Mu v0.20.0 or newer will not be able to communicate with older versions of Mu via Protobuf.

  • The Protobuf encoders and decoders for java.time classes (LocalDate, LocalDateTime and Instant) and joda-time classes (LocalDate and LocalDateTime) have been simplified. They now encode values as int32 or int64 instead of converting them to byte arrays. This is consistent with the equivalent Avro encoders/decoders.

  • If you define any Protobuf codecs for custom types, you now need to define instances of PBScalarValueReader and/or PBScalarValueWriter instead of PBReader/PBWriter. See the docs for an example.

  • Using a simple type (e.g. Boolean, String, LocalDate) as an RPC request or response is no longer supported for Protobuf services. Only proper message types (i.e. case classes) are allowed.

Release changes:

  • Update skeuomorph to 0.0.17 (#713)
  • Update metrics-core to 4.1.2 (#715)
  • Various documentation fixes (#714)
  • Avoid adding unnecessary imports to generated source files (#717)
  • Bumps avrohugger to 1.0.0-RC22 (#718)
  • Add a dependency on Enumeratum (#719)
  • Micro-optimisation: use IOUtils to copy InputStream to byte array (#720)
  • Update sbt, scripted-plugin to 1.3.5 (#721)
  • Update scalacheck to 1.14.3 (#722)
  • Update slf4j-nop to 1.7.30 (#725)
  • Update embedded-kafka to 2.4.0 (#724)
  • Update enumeratum to 1.5.14 (#723)
  • Update microsite using sbt-microsites 1.0.2 (#728)
  • Update pureconfig to 0.12.2 (#729)
  • Make the streaming implementation configurable (#731)
  • Update sbt to 1.3.6 (#732)
  • Update enumeratum to 1.5.15 (#733)
  • Happy new year! (#734)
  • Upgrade to pbdirect 0.4.0 and skeuomorph 0.0.19 (#735)
  • Release v0.20.0 (#736)
  • Fixes project name (#737)
  • Name the scripts in Travis (#738)

10/29/2019 - Version 0.19.1

Release changes:

  • Allow specifying custom serialization mechanism (#683)
  • Update metrics-core to 4.1.1 (#684)
  • Update circe-core, circe-generic, ... to 0.12.3 (#685)
  • Update grpc-netty, grpc-okhttp, grpc-stub, ... to 1.24.1 (#686)
  • Update joda-time to 2.10.5 (#688)
  • Update embedded-kafka to 2.3.1 (#689)
  • Update simpleclient to 0.8.0 (#687)
  • Releases 0.19.1 (#690)

10/17/2019 - Version 0.19.0

Release changes:

  • Upgrades Project (#642)
  • Update fs2-core to 2.0.1 (#660)
  • Update monocle-core to 1.6.0 (#661)
  • Update monocle-core to 2.0.0 (#663)
  • Add import root to protobuf source generator (#627)
  • Update simpleclient to 0.7.0 (#667)
  • Mmm/605 docs (#625)
  • Update scalacheck to 1.14.2 (#670)
  • Update sbt-microsites to 0.9.6 (#668)
  • Open api generation (#659)
  • Update pureconfig to 0.12.1 (#671)
  • Update grpc-netty, grpc-okhttp, grpc-stub, ... to 1.24.0 (#669)
  • Update sbt-microsites to 0.9.7 (#672)
  • Mu kafka management service (#638)
  • Update sbt-updates to 0.4.3 (#675)
  • Update circe-core, circe-generic, ... to 0.12.2 (#676)
  • Update sbt-updates to 0.5.0 (#679)
  • Update log4cats-core, log4cats-slf4j to 1.0.1 (#681)
  • Releases 0.19.0 (#680)
  • Update sbt, scripted-plugin to 1.3.3 (#678)

07/08/2019 - Version 0.18.4

Release changes:

  • Issue 563: Client cache should receive a ManagedChannel (#617)
  • Mu documentation changed - New section "Generate sources from IDL" (#621)
  • Allows generating idiomatic gRPC urls for avro (#622)
  • Support for idiomatic endpoints in protobuf (#623)

05/30/2019 - Version 0.18.3

Release changes:

  • Fixes schema-evolution links (#595)
  • Bumps sbt-org-policies and sbt-jmh (#596)
  • Add seed sample (#598)
  • Allows specifying the namespace and the capitalize params (#601)
  • Improves how the params are received in the annotation (#602)
  • Improves rpc metrics naming (#607)
  • Update docs (#600)
  • Fixes metric prefix (#609)
  • Fixes plugin release (#610)
  • Use updated Skeuomorph version for non-primitive protobuf fields (#614)
  • Fix compile errors with the generated source code (#615)

05/30/2019 - Version 0.18.3

Release changes:

  • Fixes schema-evolution links (#595)
  • Bumps sbt-org-policies and sbt-jmh (#596)
  • Add seed sample (#598)
  • Allows specifying the namespace and the capitalize params (#601)
  • Improves how the params are received in the annotation (#602)
  • Improves rpc metrics naming (#607)
  • Update docs (#600)
  • Fixes metric prefix (#609)
  • Fixes plugin release (#610)
  • Use updated Skeuomorph version for non-primitive protobuf fields (#614)
  • Fix compile errors with the generated source code (#615)

05/07/2019 - Version 0.18.1

Release changes:

  • Fixes schema-evolution links (#595)
  • Bumps sbt-org-policies and sbt-jmh (#596)
  • Add seed sample (#598)
  • Allows specifying the namespace and the capitalize params (#601)
  • Improves how the params are received in the annotation (#602)
  • Improves rpc metrics naming (#607)
  • Update docs (#600)
  • Fixes metric prefix (#609)
  • Fixes plugin release (#610)

04/11/2019 - Version 0.18.0

Release changes:

  • Fixes some package names and some refactors (#565)
  • Upgrades Build (#567)
  • Enables benchmarks for the previous Mu version (#570)
  • Fixes typo in docs (#571)
  • Sample http4s REST client/server with client macro derivation (#552)
  • Removes deprecated Sbt Settings (#573)
  • RPC Server Start with Brackets (#566)
  • Prometheus MetricsOps implementation (#572)
  • Update docs and reorganizes modules (#560)
  • Adapts latest changes in the code generation by Skeuomorph (#579)
  • Skipping binary dependencies when is not necessary (#581)
  • Remove the ExecutionContext implicit when not necessary (#584)
  • CommonRuntime - Converts tut:invisible by tut:silent (#585)
  • Removes the compatibility of Monix.Observable in the HTTP layer (#587)
  • Minor fixes (#588)
  • [Docs] Schema Evolution (#481)
  • Releases 0.18.0 (#590)
  • Fix decimal protocol (#591)
  • Macro Fix - Uses the F param in macro (#569)
  • Skeuomorph integration and Proto Source Generation Support (#577)
  • Fixes travis snapshot release (#594)

02/05/2019 - Version 0.17.2

Release changes:

  • Removes duplicated doc from README (#543)
  • Channel Interceptor Metrics (#522)
  • Adds a fake clock for testing the time meassure (#545)
  • 514 - Dropwizards implementation (#546)
  • Updates doc index (#547)
  • Fixes typo in the documentation of Dropwizard metrics (#548)
  • Server metrics implementation based on MetricOps (#550)
  • Downgrades avro4s (#553)
  • Release 0.17.1 (#554)
  • Fixes deployment (#555)
  • Restores the sbt plugin release and fixes ci release (#556)
  • Client cache resource and bumps resources (#558)
  • Releases 0.17.2 version (#559)

01/31/2019 - Version 0.17.1

Release changes:

  • Removes duplicated doc from README (#543)
  • Channel Interceptor Metrics (#522)
  • Adds a fake clock for testing the time meassure (#545)
  • 514 - Dropwizards implementation (#546)
  • Updates doc index (#547)
  • Fixes typo in the documentation of Dropwizard metrics (#548)
  • Server metrics implementation based on MetricOps (#550)
  • Downgrades avro4s (#553)
  • Release 0.17.1 (#554)
  • Fixes deployment (#555)

01/21/2019 - Version 0.17.0

Release changes:

  • Code Coverage and Codecov support (#478)
  • Bumps avrohugger (#483)
  • Defaults to ScalaBigDecimalTaggedGen in the idl-plugin (#485)
  • Downgrades sbt-org-policies and fixes codecov badge (#486)
  • Bump up gRPC version (#487)
  • Referential Transparency for RPC client (#484)
  • Removes some warnings (#488)
  • Makes the client extends the service (#493)
  • Improve managed channel interpreter (#494)
  • Package renaming (#495)
  • Ignores Metals files (#497)
  • New Mu Microsite (#498)
  • Fixes mu microsite base url (#499)
  • Removes outdated references to freestyle (#503)
  • Split streaming modules (#505)
  • Fixes the avro decimal compat protocol namespace (#506)
  • Updates license headers (#507)
  • Updates pbdirect (#508)
  • bindService as an Effect (#509)
  • Bumps fs2-grpc (#510)
  • Build Reorganization (#518)
  • Update gRPC and Others (#520)
  • Defines the MetricsOps algebra (#519)
  • Passes the method info to the MetricsOps defs (#521)
  • Release "0.17.0" (#501)
  • Fixes scripted tests (#523)
  • Disables dependencies plugin (#534)

10/20/2018 - Version 0.16.0

Release changes:

  • Renames Project (#444)
  • Adds New Publish Settings to Travis (#445)
  • Releases 0.16.0 (#446)

10/12/2018 - Version 0.15.1

Release changes:

  • First micro-site approach (#407)
  • Adds support for BigDecimal tagged types (#409)
  • Bumps Scala up to 2.12.7 (#408)
  • Running Benchmarks - Scripts (#406)
  • Migration guide for decimals (#412)
  • Fixes the tagged decimal code generation (#410)
  • Releases version 0.15.1 (#413)
  • Decoupling sbt-freestyle (#414)

09/26/2018 - Version 0.15.0

Release changes:

  • Marshallers for serializing and deserializing joda.time dates (#341)
  • BigDecimal and java.time encoders/decoders implicit instances are now optional (#373)
  • Customize the codecs used in services through sbt (#374)
  • Bumps io.grpc dependency (#375)
  • Updates docs with the custom codecs section (#377)
  • document mandatory compiler plugin (#378)
  • Benchmarks - AvroWithSchema (unary services) (#384)
  • Allows Custom namespace for server/client metrics (#385)
  • Depending on Execution Context instead of Monix Scheduler (#386)
  • Upgrades Build Dependencies (#387)
  • Adds the avro and protobuffer serializers for java.time.Instant (#388)
  • Auto spin-up RPC server when running benchmark (#389)
  • Benchmarks - Avro and Proto Unary Services (#383)
  • Releases 0.15.0 frees-rpc Version (#390)

07/17/2018 - Version 0.14.1

Release changes:

  • Avro Schema Backward and Forward Compatibility (#334)
  • Update 0.14.0 CHANGELOG (#340)
  • Utility method for encode joda time instances (#276)
  • Fixes options and lists serialization in proto (#342)

07/09/2018 - Version 0.14.0

Release changes:

Mainly, it completes the milestone higherkindness#290:

Additionally, this new release brings new features and bug fixes:

Caveat: This version is not binary compatible with the previous ones.

06/07/2018 - Version 0.13.7

Release changes:

  • Decouples frees-async-cats-effect (#302)
  • Upgrades Scala and Sbt versions (#304)
  • Update Scala to 2.12.6 in TravisCI (#306)
  • Releases 0.13.7 (#308)

06/06/2018 - Version 0.13.6

Release changes:

  • Ignoring new bidirectional FS2 tests on Travis (#281)
  • Re-ignoring failing tests, with reference to new issue (#283)
  • replace all occurrences of @tagless annotation with the manual impl (#296)
  • Decouple frees config (#300)
  • decouple from frees-async (#297)
  • Downgrade avro4s to 1.8.3 (#301)

05/29/2018 - Version 0.13.5

Release changes:

  • noPublishSettings for RPC examples (#264)
  • Fix #192 (crash with some server stream transformations) (#266)
  • Exposing ServerChannel (#268)
  • BigDecimal serialization in protobuf and avro (#271)
  • Adds a java time util for serializing dates (#272)
  • Support for serializing LocalDate and LocalDateTime values (#273)
  • Bump avrohugger to 1.0.0-RC9 (#274)
  • Update avro4s and avrohugger (#280)
  • Rename srcJarNames to srcGenJarNames and fix deprecations (#277)
  • Release 0.13.5 (#275)

05/02/2018 - Version 0.13.4

Release changes:

  • Added tests for RPC error handling, and a fix for StatusRuntimeException (#252)
  • Removes the IDL core Dependency (#254)
  • Check if file exists before unzipping in idlgen plugin (#259)
  • New example: TodoList application (#256)
  • Releases 0.13.4 (#260)

04/18/2018 - Version 0.13.3

Release changes:

  • Add route guide example (#236)
  • fixing shutdown hook to run shutdown of server (#238)
  • Adds support for Marshalling/Unmarshalling BigDecimals (#244)
  • Allow a sequence of source generated directories (#243)
  • Code Generation from IDL definitions placed in different sources (#248)
  • Fixes Server Helper. Releases 0.13.3. (#249)

04/10/2018 - Version 0.13.2

Release changes:

  • Avro Messages Serialized With Schemas (#215)
  • Spins up gRPC Servers forName (#230)
  • SBT - Adds AvroWithSchema Support (#233)
  • Releases Freestyle RPC 0.13.2 (#234)

04/08/2018 - Version 0.13.1

Release changes:

  • Releases the plugin first, then the core (#214)
  • Enable conditionally disabling certain tests in Travis (#216)
  • Support for packaged Avdl into jar dependencies (#224)

04/02/2018 - Version 0.13.0

Release changes:

  • Fixes title formatting in SSL/TLS (#202)
  • Fixes idlgen-sbt release Process in Travis (#204)
  • Solves encoding issues in docs (#207)
  • Fixes in idlGen header, docs and tests (#208)
  • Ignore intermittently-failing tests on Travis (#209)
  • Scala source generation from Avro IDL (#210)
  • Dependency updates (#211)
  • Release 0.13.0 (#212)

03/19/2018 - Version 0.12.0

Release changes:

  • Merge sbt-mu-protogen into mu-rpc codebase, and update @rpc processing to handle latest `mu-rpc syntax (#184)
  • IdlGen refactoring to prepare for eventual Avro support, with Proto generation style fixes (#186)
  • Project Upgrade (#187)
  • Fixed stacktraces in tests caused by unclosed channels (#189)
  • sbt build config refactoring, with dependency updates (#188)
  • Upgrades to Freestyle 0.8.0 (#193)
  • Fixes Snapshot Publish (#194)
  • [Docs] Split into different sections (#190)
  • Avro IDL Support (#195)
  • Releases frees-rpc 0.12.0 (#198)

02/14/2018 - Version 0.11.1

Release changes:

  • Readd support for companion objects (#172)
  • Update fs2-reactive-streams and release 0.11.1 (#173)

02/13/2018 - Version 0.11.0

Release changes:

  • Now the service requires an Effect instead of AsyncContext and Task ~> M (#150)
  • fs2.Stream Support (#152)
  • Updates build by using sbt-mu 0.13.16 (#154)
  • Upgrades fs2-reactive-streams lib (#155)
  • Change implicit StreamObserver conversions to syntax (#157)
  • Upgrades to fs2-reactive-streams 0.4.0 (#158)
  • Update fs2-reactive-streams (#160)
  • Refactor service macro (#159)
  • Build Upgrade (#163)
  • Allows adding compression at method level (#161)
  • Add non request statements to Client (#165)
  • SSL/TLS Encryption Support (Netty) (#162)
  • Update grpc to 1.9.1 (#166)
  • Releases frees-rpc 0.11.0 (#167)

01/18/2018 - Version 0.10.0

Release changes:

  • gRPC Services Metrics using Prometheus (#138)
  • gRPC Client Metrics using Prometheus (#139)
  • Metrics DSL (#140)
  • Adds Dropwizard Metrics Support (#141)
  • Adds frees-rpc-testing including grpc-testing dependency (#142)
  • Adds some GRPC testing utilities (#143)
  • Monadic Server Start/RPC Calls/Stop in Tests (#144)
  • Fixes random test failure (#147)
  • Updates Docs regarding Metrics Reporting (#145)
  • Releases frees-rpc 0.10.0 (#146)

01/12/2018 - Version 0.9.0

Release changes:

  • Mini cleanup after move to finally tagless (#118)
  • Mini refactoring of @service (#128)
  • Upgrades to Freestyle 0.6.1. Releases 0.9.0. (#129)

01/11/2018 - Version 0.8.0

Release changes:

  • Adds the job in Travis for the after CI SBT task (#116)
  • frees-rpc Tagless-final Migration - Release 0.8.0 (#117)

01/10/2018 - Version 0.7.0

Release changes:

  • Update build (#108)
  • Splits core module in [core, config] (#109)
  • Organizes all sbt modules under modules folder (#112)
  • Splits core into Server and Client submodules (#113)
  • Moves non-server tests to the root (#114)
  • Updates build and Releases 0.7.0 (#115)

01/04/2018 - Version 0.6.1

Release changes:

  • Docs - Empty.type Request/Response (#105)
  • Upgrade to Freestyle 0.5.1 (#107)

12/21/2017 - Version 0.6.0

Release changes:

  • Use Effect instance instead of Comonad#extract (#103)
  • Compiled docs in frees-rpc repo (#104)

12/19/2017 - Version 0.5.2

Release changes:

  • Excludes Guava from frees-async-guava (#102)

12/19/2017 - Version 0.5.1

Release changes:

  • Supports inner imports within @service macro. (#101)

12/18/2017 - Version 0.5.0

Release changes:

  • Upgrades to Freestyle 0.5.0 (#99)
  • Adds additional SuppressWarnings built-in warts (#100)

12/18/2017 - Version 0.4.2

Release changes:

  • Reduces boilerplate when creating client instances (#97)
  • Reduces Boilerplate in Server creation (#98)

12/05/2017 - Version 0.4.1

Release changes:

  • Server Endpoints and Effect Monad (#95)

12/01/2017 - Version 0.4.0

Release changes:

  • Replace @free with @tagless, and drop the requirement of an annotation (#92)
  • Upgrades frees-rpc to Freestyle 0.4.6 (#94)

11/23/2017 - Version 0.3.4

Release changes:

  • Adds monix.eval.Task Comonad Implicit Evidence (#89)

11/22/2017 - Version 0.3.3

Release changes:

  • Case class Empty is valid for Avro as well (#87)
  • Fixes missing FQFN (#88)

11/17/2017 - Version 0.3.2

Release changes:

  • Suppress wart warnings (#85)

11/16/2017 - Version 0.3.1

Release changes:

  • Removes global imports (#84)

11/14/2017 - Version 0.3.0

Release changes:

  • Support for Avro Serialization (#78)
  • Async Implicits provided by frees-rpc Implicits (#80)
  • Releases 0.3.0 (#82)

11/06/2017 - Version 0.2.0

Release changes:

  • Upgrades to gRPC 1.7.0 (#74)
  • Provides Empty Message (#75)
  • Updates macros to avoid deprecation warnings (#76)
  • Releases 0.2.0 (#77)

10/30/2017 - Version 0.1.2

Release changes:

  • Provides an evidence where #67 shows up (#68)
  • Groups async implicits into AsyncInstances trait (#71)

10/24/2017 - Version 0.1.1

Release changes:

  • Removes Scalajs badge (#62)
  • Upgrades to the latest version of sbt-freestyle (#64)

10/20/2017 - Version 0.1.0

Release changes:

  • Test Coverage for some client definitions (#57)
  • Test Coverage for client defs (Second Round) (#58)
  • Test Coverage Server Definitions (#60)
  • Releases 0.1.0 (#61)

10/17/2017 - Version 0.0.8

Release changes:

  • Freestyle 0.4.0 Upgrade (#56)

10/10/2017 - Version 0.0.7

Release changes:

  • Feature/common code in isolated artifact (#55)

10/09/2017 - Version 0.0.6

Release changes:

  • Upgrades to sbt 1.0.1 and Scala 2.12.3 (#48)
  • Brings sbt-frees-protogen as a separate Artifact (#49)
  • Adds warning about generated proto files (#50)
  • Fixes Travis Builds (#52)
  • Fixes RPC build and Publishing Issues (#53)
  • Removes protogen (#54)

10/09/2017 - Version 0.0.5

Release changes:

  • Upgrades to sbt 1.0.1 and Scala 2.12.3 (#48)
  • Brings sbt-frees-protogen as a separate Artifact (#49)
  • Adds warning about generated proto files (#50)
  • Fixes Travis Builds (#52)
  • Fixes RPC build and Publishing Issues (#53)

10/09/2017 - Version 0.0.5

Release changes:

  • Upgrades to sbt 1.0.1 and Scala 2.12.3 (#48)
  • Brings sbt-frees-protogen as a separate Artifact (#49)
  • Adds warning about generated proto files (#50)
  • Fixes Travis Builds (#52)
  • Fixes RPC build and Publishing Issues (#53)

10/03/2017 - Version 0.0.3

Release changes:

  • Makes the ChannelBuilder build a public method (#45)
  • Fixes Client Streaming rpc server (#46)

09/08/2017 - Version 0.0.2

Release changes:

  • Bug Fix Proto Code Generator for Custom Types (#42)
  • Fixes proto code generator for repeated types (#43)
  • Adds LoggingM as a part of GrpcServerApp module (#44)

09/05/2017 - Version 0.0.1

Release changes:

  • Migrates from mezzo to mu-rpc style, license, etc. (#4)
  • Adds a dummy grpc demo for testing purposes (#5)
  • gRPC extended Demos (#6)
  • grpc-gateway Demo (#7)
  • Divides demo projects in two different sbt modules (#8)
  • Provides grpc configuration DSL and GrpcServer algebras (#13)
  • Provides a Demo Extension (#14)
  • Client Definitions based on free algebras - Unary Services (#16)
  • Migrates to sbt-freestyle 0.1.0 (#19)
  • Server/Channel Configuration (#20)
  • Server Definitions - Test Coverage (#22)
  • Adds additional server definitions tests (#23)
  • Generate .proto files from Freestyle service protocols (#12)
  • Adds tests for some client handlers (#27)
  • @service Macro (#31)
  • RPC Client macro definitions (#32)
  • monix.reactive.Observable for Streaming Services API (#33)
  • Completes the basic Example (#36)
  • Minor fix (#35)
  • Renaming to frees-rpc. Moves examples to its own repository (#40)
  • Upgrades gRPC. Releases frees-rpc 0.0.1. (#41)