Skip to content

Releases: rsocket/rsocket-kotlin

0.16.0 - Resurrection of rsocket-kotlin

22 May 21:15
Compare
Choose a tag to compare

What's Changed

  • Fix custom MIME type serialization incompatibility (#260). Thanks to @akowal!
  • drop JS legacy and deprecated native targets
  • Update dependencies to latest versions:
    • ktor 2.3.11
    • kotlinx.coroutines 1.8.1
  • Migrate to Kotlin 2.0
  • Reduce usages of deprecated in ktor APIs
  • Preparation for migration from ktor-io to kotlinx-io (which will happen also in ktor 3.0)
    • pool: ObjectPool<ChunkBuffer> is not anymore provided from transports - ABI incompatible change, mostly source compatible, as pool was not expected to be used from outside of rsocket-kotlin
    • pool: ObjectPool<ChunkBuffer> was temporary replaced with pool: BufferPool in metadata API and will be removed later - ABI incompatible change, mostly source compatible, as pool was not expected to be used from outside of rsocket-kotlin
  • Setup binary compatibility validation
  • rsocket-transport-ktor-websocket module was renamed to rsocket-transport-ktor-websocket-internal and is not anymore exposed to public API
    • the only class it contains is WebSocketConnection which is shared between client and server implementations and should be used only there
  • a lot of changes of build logic because of Kotlin Gradle Plugin improvements and overall cleanup

New Contributors

Full Changelog: 0.15.4...0.16.0

0.15.4 - Ktor 2.0, New native memory manager, NodeJS transport

14 Apr 06:13
947d5ee
Compare
Choose a tag to compare

Breaking changes

  • Ktor is updated to 2.0, which is not compatible with previous versions
  • Only new native memory manager is supported from now
  • Changed ktor transport dependencies:
    • rsocket-ktor-client and rsocket-ktor-server - plugins for ktor client and server with RSocket support with ktor-like builders and routing (WS transport only)
      • client supported on all platforms
      • server supported on JVM and Native(except windows)
    • rsocket-transport-ktor-tcp - client and server TCP transport using ktor-network
      • supported on JVM and Native(except windows) platforms
    • rsocket-transport-ktor-websocket-client and rsocket-transport-ktor-websocket-server- client and server WS transport
      • comparing to rsocket-ktor-client and rsocket-ktor-server provides similar API to other rsocket-transport-* modules for simple usage without knowing ktor specifics
      • client supported on all platforms
      • server supported on JVM and Native(except windows)

Features:

  • Update to ktor 2.0 #208, #215
  • Support new native memory manager #208, #209
  • Support Native WS client and server transport #215
  • Experimental NodeJS TCP client and server transport #191

Bug fixes:

  • Fix limiter overflow #218 Thanks to @yuriykulikov !
  • Fix closing connection on cancelling requester #220

Other

  • Rework build configuration
  • Rework publication, to use single macos CI instance
  • Run JVM tests on java 8, 11 and 17
  • Replace jfrog snapshots publication to Github Packages
  • Improve tests stability
  • Make mulitplatform chat sample an independent project, using latest stable rsocket-kotlin version

Version updates

  • kotlin 1.6.20
  • ktor 2.0.0
  • kotlinx.coroutines 1.6.1

PR's merged

  • Nodejs TCP server and client transport by @olme04 in #191
  • Improve chat sample by @olme04 in #196
  • Version catalogs and safe project accessors by @olme04 in #197
  • Rework publication by @olme04 in #198
  • Targets configuration by @olme04 in #199
  • Jvm toolchain by @olme04 in #200
  • reworks workflows by @olme04 in #204
  • introduces local reusable workflows by @olme04 in #207
  • Migrate to ktor 2.0.0 eap and new native memory model by @olme04 in #208
  • Update code after updating to new native memory model by @olme04 in #209
  • Improve tests by @olme04 in #210
  • fix publication for empty(for now) module by @olme04 in #212
  • changed Limiter.requests to AtomicLong by @yuriykulikov in #214
  • Snapshot workflow fix by @olme04 in #218
  • update ktor by @olme04 in #215
  • Fix closing connection on cancelling requester by @olme04 in #220
  • Split ktor transports implementation by @olme04 in #219

New Contributors

Full Changelog: 0.14.3...0.15.4

0.14.3 - Fragmentation, Improved transport lifecycle

16 Dec 08:57
b11cdb4
Compare
Choose a tag to compare

Breaking changes

  • Remove Frame.release and Payload.release (use close instead) #182
  • Reworked how Client/Server transports are implemented #178

Features:

  • Fragmentation and reassembly #177
  • Improves transport API and lifecycle #178

Other

  • Use sealed and fun interfaces where appropriate
  • Metadata, PayloadBuilder and CompositeMetadataBuilder implements Closeable
  • Make logging API explicitly public and provide temporary experimental annotation for it
  • Cleanup usages of DangerousInternalIoApi (after update to ktor 1.6.0 it's not needed)
  • Enable explicitApi mode
  • Improve setup payload handling
  • Create infrastructure for client only tests and implement test for JS WS Client transport #179

Version updates

  • kotlin 1.6.10
  • ktor 1.6.7
  • kotlinx.coroutines 1.5.2-native-mt

PR's merged

  • upgrades dependencies in documentation by @rcd27 in #174
  • update gradle and minor dependencies update by @olme04 in #181
  • cleanups general code and public API by @olme04 in #175
  • Rework internals - preparation for fragmentation by @olme04 in #176
  • provides fragmentation and reassembly by @olme04 in #177
  • updates gradle action by @olme04 in #184
  • improves transport api and lifecycle by @olme04 in #178
  • сleanups of close/release inconsistency by @olme04 in #182
  • improves client side tests by @olme04 in #179
  • prepares release 0.14.0 by @olme04 in #185
  • Cleanup modules by @olme04 in #190
  • Update versions (kotlin 1.6.0, ktor 1.6.7, gradle 7.3.1) by @olme04 in #188
  • Fix publication after kotlin 1.6 by @olme04 in #194
  • kotlin 1.6.10 by @olme04 in #195

New Contributors

Full Changelog: 0.13.1...0.14.3

0.13.1 Release

05 Jul 08:51
40a08d4
Compare
Choose a tag to compare
fixes workflow file

Signed-off-by: Oleh Dokuka <oleh.dokuka@icloud.com>

0.12.0 - Streams API improvements

09 Dec 19:19
d212568
Compare
Choose a tag to compare

Breaking changes

  • RSocket.requestChannel signature changed to receive initial payload as additional parameter (#125)
  • Flow.buffer doesn't anymore control requestN semantic (#118)

Features

  • Streams with flexible requestN semantic (#118)
  • Better structured concurrency and channels handling (#126)

Bugs

  • Fix runtime checks for RSocketRequestHandlerBuilder (#119)
  • Fix leaks on reconnection (#123)

Dependencies updates

  • Kotlin 1.4.21
  • ktor 1.4.3 - improved ktor-io performance on all platforms
  • kotlinx.coroutines 1.4.2-native-mt - little reworked channel apis

0.11.5 - Fixed targets publication

06 Nov 06:24
Compare
Choose a tag to compare

Due to some publication issues 0.11.0 - 0.11.4 doesn't contain all artifacts (mainly K/N darwin targets). Please update to 0.11.5.
Current version contains all artifacts and available on JCenter!

0.11.1 - Configuration, Payload and Metadata API

05 Nov 08:27
Compare
Choose a tag to compare

First release published to JCenter!

Features

  • Configuring Connector and Server with DSL
  • Reworked Payload creation
  • Composite Metadata support
  • Extensions Metadata support (Routing, Tracing, Auth, etc)
  • Reconnectable RSocket
  • Transports API

0.10.0 - Multi-platform

22 Oct 17:33
Compare
Choose a tag to compare

The first multi-platform release of rsocket-kotlin is here!
WARNING: this release isn't published to maven-central due to publishing issues

Features

  • Based on koitlinx.coroutines
  • Multiplatform support for TCP and WebSocket using ktor
  • Support for JVM, JS (nodejs and browser) and Native targets: linux x64, windows x64, macos, ios, watchos, tvos
  • ktor JVM server/client TCP/WebSocket transports
  • ktor JS client (both browser and nodejs) WebSocket transport (it's also possible to run rsocket with TCP transport on nodejs)
  • ktor Native client TCP transport (don't support windows x64 yet)
  • Support all interactions: Fire and Forget, Request-Response, Request-Stream, Request-Channel and Metadata-Push (with backpressure on streams)
  • Uses Kotlin 1.4.10 and kotlinx.coroutines 1.3.9-native-mt-2

0.9.8

14 Sep 17:01
Compare
Choose a tag to compare
0.9.8

0.9.7

01 Sep 14:14
Compare
Choose a tag to compare
0.9.7