Skip to content

Latest commit

 

History

History
512 lines (331 loc) · 28.9 KB

CHANGELOG.md

File metadata and controls

512 lines (331 loc) · 28.9 KB

Changelog

The format is based on Keep a Changelog.

[v0.16.0] - 2022-11-09

v0.16.0 is a breaking release and the major changes are:

  • The server now support WS and HTTP on the same socket and the jsonrpsee-http-server and jsonrpsee-ws-server crates are moved to the jsonrpsee-server crate instead.
  • The client batch request API is improved such as the errors and valid responses can be iterated over.
  • The server has tower middleware support.
  • The server now adds a tracing span for each connection to distinguish logs per connection.
  • CORS has been moved to tower middleware.

[Fixed]

  • server: read accepted conns properly (#929)
  • server: proper handling of batch errors and mixed calls (#917)
  • jsonrpsee: add types to server feature (#891)
  • http client: more user-friendly error messages when decoding fails (#853)
  • http_server: handle http2 requests host filtering correctly (#866)
  • server: RpcModule::call decode response correctly (#839)

[Added]

  • proc macro: support camelCase & snake_case for object params (#921)
  • server: add connection span (#922)
  • server: Expose the subscription ID (#900)
  • jsonrpsee wrapper crate: add feature async_wasm_client (#893)
  • server: add transport protocol details to the logger trait (#886)
  • middleware: Implement proxy URI paths to RPC methods (#859)
  • client: Implement notify_on_disconnect (#837)
  • Add bytes_len() to Params (#848)
  • Benchmarks for different HTTP header sizes (#824)

[Changed]

  • replace WS and HTTP servers with a server that supports both WS and HTTP (#863)
  • Optimize serialization for client parameters (#864)
  • Uniform log messages (#855)
  • Move CORS logic to tower middleware CorsLayer (#851)
  • server: add log for the http request (#854)
  • server: add tower support (#831)
  • jsonrpsee: less deps when defining RPC API. (#849)
  • server: rename Middleware to Logger (#845)
  • client: adjust TransportSenderT (#852)
  • client: improve batch request API (#910)
  • server: Optimize sending for SubscriptionSink::pipe_from_stream (#901)
  • ws-client: downgrade connection log to debug (#865)
  • use tracing instrument macro (#846)

[v0.15.1] - 2022-07-29

This release fixes some incorrect tracing spans.

[Fixed]

  • [Bug Fix] - Incorrect trace caused by use of Span::enter in asynchronous code #835

[v0.15.0] - 2022-07-20

v0.15.0 is a breaking release. The main changes are:

  • It's now possible to apply resource limits to subscriptions as well as regular calls.
  • We now allow trait bounds to be overridden in the proc macros. See examples/examples/proc_macro_bounds.rs for examples.
  • We've tidied up the subscription API, removing the PendingSink concept (you can still manually accept or reject a sink, but otherwise it'll be accepted automatically if you send a message down it) (#799).
  • Our logging Middleware trait has been split into HttpMiddleware and WsMiddleware to better capture the differences between the two. if you use custom middleware, you'll need to implement one or the other trait on it depending on your used transport method (#793). We also provide params and the method type to middleware calls now, too (#820).
  • We've consistified the API for setting headers across HTTP and WS clients (#799).

Here's the full list of changes:

[Fixed]

  • Fix client generation with param_kind = map #805
  • ws-server: Handle soketto::Incoming::Closed frames #815
  • fix(ws server): reply HTTP 403 on all failed conns #819
  • fix clippy #817

[Added]

  • Add resource limiting for Subscriptions #786
  • feat(logging): add tracing span per JSON-RPC call #722
  • feat(clients): add explicit unsubscribe API #789
  • Allow trait bounds to be overridden in macro #808

[Changed]

  • Point to a new v1.0 milestone in the README.md #801
  • chore(deps): upgrade tracing v0.1.34 #800
  • Replace cargo-nextest with cargo-test for running tests #802
  • Remove deny_unknown_fields from Request and Response #803
  • substrate-subxt -> subxt #807
  • chore(deps): update pprof requirement from 0.9 to 0.10 #810
  • Return error from subscription callbacks #799
  • middleware refactoring #793
  • feat(middleware): expose type of the method call #820
  • Uniform API for custom headers between clients #814
  • Update links to client directories. #822

[v0.14.0] - 2022-06-14

v0.14.0 is breaking release which changes the health and access control APIs and a bunch of bug fixes.

[Fixed]

  • fix(servers): more descriptive errors when calls fail #790
  • fix(ws server): support * in host and origin filtering #781
  • fix(rpc module): register failed unsubscribe calls in middleware #792
  • fix(http server): omit jsonrpc details in health API #785
  • fix(servers): skip leading whitespace in JSON deserialization #783
  • fix(ws-server): Submit ping regardless of WS messages #788
  • fix(rpc_module): remove expect in fn call #774

[Added]

  • feat(ws-client): ping-pong for WebSocket clients #772
  • feat(ws-server): Implement ping-pong for WebSocket server #782

[Changed]

  • chore(deps): bump Swatinem/rust-cache from 1.3.0 to 1.4.0 #778
  • chore(deps): bump actions/checkout from 2.4.0 to 3.0.2 #779
  • chore(ci): bring back daily benchmarks #777
  • chore(examples): Move examples under dedicated folder to simplify Cargo.toml #769

[v0.13.1] - 2022-05-13

v0.13.1 is a release that fixes the documentation for feature-gated items on docs.rs.

[Fixed]

  • fix: generate docs for all features on docs.rs #767

[Changed]

  • chore(deps): update pprof requirement from 0.8 to 0.9 #761

[v0.13.0] - 2022-05-11

v0.13.0 is release that adds health API support for the HTTP server and a few bug fixes.

[Added]

feat: add http health API #763

[Fixed]

  • hide internal macros from public interface #755
  • fix: add core behind http-server feature #760

[v0.12.0] - 2022-05-06

v0.12.0 is mainly a patch release with some minor features added.

[Added]

  • Make it possible to disable batch requests support #744
  • feat: add a way to limit the number of subscriptions per connection #739

[Fixed]

  • fix(http client): use https connector for https #750
  • fix(rpc module): close subscription task when a subscription is unsubscribed via the unsubscribe call #743
  • fix(jsonrpsee): generate docs behind features #741

[Changed]

  • remove vault from ci #745
  • chore(deps): update pprof requirement from 0.7 to 0.8 #732
  • chore(deps): update gloo-net requirement from 0.1.0 to 0.2.0 #733

[v0.11.0] - 2022-04-21

v0.11.0 is a breaking release that reworks how subscriptions are handled by the servers where the users have to explicitly reject or accept each subscription. The reason for this is that the actual params in the subscription is passed to the callback and if the application decides the params are invalid and the server can't know if the call is going to fail or pass when dispatching the call. Thus, the actual subscription method call is only answered when the subscription is accepted or rejected.

Additionally, the servers before sent a SubscriptionClosed message which is now disabled by default because it might break other implementations. It is still possible to respond with a SubscriptionClosed message but one has to match on the result from SubscriptionSink::pipe_from_stream.

This release also adds support for JSON-RPC WASM client using web-sys bindings.

[Added]

  • feat: WASM client via web-sys transport #648

[Changed]

  • CI: bump Swatinem/rust-cache from 1.3.0 to 1.4.0 #730

[Fixed]

  • fix(rpc module): fail subscription calls with bad params #728

[v0.10.1] - 2022-04-05

v0.10.1 is a release that fixes a regression in the HTTP server where the backlog was hardcoded to 128 (this is now set to 1024 by default but also configurable), introduces a couple of new APIs and a few minor bug fixes.

If your usage expects a high rate of new HTTP connections you are encouraged to update or manually configure the socket based on the traffic characteristics.

[Changed]

  • [proc macros]: only generate unsub method if not provided #702
  • [examples]: update pubsub examples #705
  • core: remove Error::Request variant #717
  • Replace async-channel #708
  • chore(deps): bump actions/checkout from 2.4.0 to 3 #710
  • CI: cache cargo hack installation #706
  • CI: try nextest #701
  • chore(deps): update tokio-util requirement from 0.6 to 0.7 #695
  • CI: Move CI script to new location #694
  • refactor(log): downgrade send errors to warn #726

[Fixed]

  • fix(client): close subscription when server sent SubscriptionClosed notification #721
  • fix(http client): set reuseaddr and nodelay. #687
  • fix(rpc module): unsubscribe according ethereum pubsub spec #693
  • http server: fix regression set backlog to 1024 #718
  • README.MD: fix link to ws server #703
  • fix(ws server): close all subscription when the connection is closed #725
  • perf: don't send messages when client is gone #724

[Added]

  • feat(http server): add new builder APIs build_from_tcp and build_from_hyper #719
  • feat(servers): add SubscriptionSink::pipe_from_try_stream to support streams that returns Result #720
  • feat(servers): add max_response_size #711

[v0.10.0] - 2022-04-04 [YANKED]

Yanked due to a leak when closing subscriptions in WebSocket server.

[v0.9.0] - 2022-02-03

v0.9.0 is technically a breaking release because of the Debug bound of the IdProvider trait changed which is used by WebSocket server. In practise it should be a non-breaking upgrade for most users.

[Changed]

refactor(ws server): impl IdProvider for Box #684 chore(deps): update parking_lot requirement from 0.11 to 0.12 #682

[v0.8.0] - 2022-01-21

v0.8.0 is a breaking release for the way subscription closing is handled, along with a few other minor tweaks and fixes.

[Added]

  • feat(client): support request id as Strings. #659
  • feat(rpc module) Add a method to RpcModule that transforms the module into a RpcModule<()>, i.e. removes the context. #660
  • feat(rpc module): stream API for SubscriptionSink #639

[Fixed]

  • fix: nit in WsError #662
  • fix(jsonrpsee): feature macros include client types #656
  • fix(ws client): export WsClient #646
  • fix(ws client): improve error message bad URL #642
  • fix(ws client): expose tls feature. #640
  • fix(http server): handle post and option HTTP requests properly. #637

[v0.7.0] - 2021-12-22

v0.7.0 is a breaking release that contains a big refactoring of the crate structure. The types and utils crates are split up as types and core to clarify the difference between the two.

core: common types used in various places. types: includes JSON-RPC specification related types.

[Added]

  • servers: configurable subscriptionID #604
  • client: impl Stream on Subscription and tweak built-in next() method #601
  • ci: Create gitlab pipeline #534

[Changed]

  • chore: migrate to rust 2021 #618
  • extract async client abstraction. #580
  • Crate restructuring #590
  • servers: refactor SubscriptionClosed #612
  • ci: Add job to publish benchmark results to github pages #603
  • rpc module: refactor calls/subs without a server #591
  • types: make subscription ID a CoW String. #594
  • ci: remove GHA daily benchmark #598
  • examples: Remove usage of the palaver crate in an example #597
  • clients: use FxHashMap instead FnvHashMap #592
  • clients: feature gate tls #545

[Fixed]

  • benches: fix image in check-bench job #621
  • benches: update publish script #619
  • chore(http client): remove needless clone #620
  • jsonrpsee wrapper: make ws tls configurable #616
  • deps: Upgrade tracing-subscriber #615
  • proc macros: Fix span for underscore_token for tests to be equivalent on stable and nightly #614
  • proc macros: Better error messages for method arguments ignored with a _ #611
  • http client: re-export transport types. #607
  • benches: Fix job to publish benchmark results to gh-pages #608
  • benches: make jsonrpc crates optional #596
  • deps: duplicate env logger deps #595

[v0.6.1] – 2021-12-07

[Added]

  • rpc module: add call_and_subscribe #588

[v0.6.0] – 2021-12-01

v0.6 is a breaking release

[Added]

  • Servers: Middleware for metrics #576
  • http client: impl Clone #583

[Fixed]

  • types: use Cow for deserializing str #584
  • deps: require tokio ^1.8 #586

[v0.5.1] – 2021-11-26

The v0.5.1 release is a bug fix.

[Fixed]

  • rpc error: support escaped strings #578

[v0.5.0] – 2021-11-23

v0.5 is a breaking release

[Added]

  • Add register_blocking_method #523
  • Re-introduce object param parsing #526
  • clients: add support for webpki and native certificate stores #533
  • feat(ws client): support custom headers. #535
  • Proc macro support for map param #544
  • feat: make it possible to try several sockaddrs when starting server #567
  • feat: make it possible to override method name in subscriptions #568
  • proc-macros: Support deprecated methods for rpc client #570

[Change]

  • DRY error handling for methods #515
  • deps: replace log with tracing #525
  • benches: add option to run benchmarks against jsonrpc crate servers #527
  • clients: request ID as RAII guard #543
  • Allow awaiting on server handles #550
  • ws server: reject too big response #553
  • Array syntax aliases #557
  • rpc module: report error on invalid subscription #561
  • [rpc module]: improve TestSubscription to return None when closed #566

[Fixed]

  • ws server: respect max limit for received messages #537
  • fix(ws server): batch wait until all methods has been executed. #542
  • Re-export tracing for macros #555
  • Periodically wake DriverSelect so we can poll whether or not stop had been called. #556
  • Implement SubscriptionClient for HttpClient #563
  • fix: better log for failed unsubscription call #575

[v0.4.1] – 2021-10-12

The v0.4.1 release is a bug fix.

[Fixed]

  • fix: nit in ServerBuilder::custom_tokio_runtime #512

[v0.4.0] – 2021-10-12

The v0.4 release is a breaking change.

[Added]

  • Document resource limiting #510

  • Resource limiting #500

  • Support http redirects when doing the ws handshake #397

  • Add convenience rpc_params macro to build params in http and ws clients #498

  • Method alias attribute for proc macros #442

  • Add benchmarks for concurrent connections #430

  • Support generic type params in the proc macro #436

[Changed]

  • use tokio::spawn internally in HttpServer::start and return StopHandle #402

  • remove ParamsSer::NoParams #501

  • http server uses similar API for host and origin filtering as WS #473

  • SubscriptionClosed errors carry more information #504

  • Improve feature configuration for faster builds and leaner build artifacts #494

  • Unbox async futures #495

  • WS clients default subscription buffer set to 1024 items #475

  • Re-export v2 submodules #469

  • Replace internal array_impl macro with const generics #470

  • Rename and reorganize many public types #462

  • Export acl types #466

  • Propagate cause of InvalidParams #463

  • Reject overflowing connection with status code 429 #456

  • Test helper for calling and converting types to JSON-RPC params #458

  • Make it possible to treat empty JSON response as no params #446

  • Methods generated by the proc macro return Result #435

  • Concurrent polling on async methods #424

  • Sniff the first byte to glean if the incoming request is a single or batch request #419

  • Upgrade hyper to ^0.14.10 #427

  • Proc macro params optimizations and tests. #421

[Fixed]

  • Proc macro Argument parsing should permit commas inside angle brackets #509

  • Fix http client bench with request limit #506

  • Fixed flaky test on windows #491

  • Share the request id code between the http and websocket clients #490

  • WS server terminates subscriptions when connection is closed by the client. #483

  • Subscription code generated by the proc macro generated returns Result #455

  • Proc macro generates documentation for trait methods. #453

  • Fix errors with generics when using the proc macro #433

  • WS client uses query part of the URL #429

[Removed]

  • Remove rustls #502

  • Remove cors_max_age #466

  • Remove support for tokio 0.2 runtimes #432

[v0.3.0] – 2021-07-12

[changed] Module API refactor #412

[changed] Pass owned RpcParams to async methods #410

[changed] Re-work re-exported types for clarity and consistency #409

[changed] All requests time out #406

[changed] Streaming RpcParams parsing for optional arguments #401

[changed] Set allowed Host header values #399

[changed] Terminate already established ws connection(s) when the server is stopped #396

[added] Customizable JSON-RPC error codes via new enum variant on CallErrror #394

[changed] Unify a few types and more tests #389

[changed] Synchronization-less async connections in ws-server #388

[added] Server proc macros #387

[added] Add a way to stop servers #386

[changed] Refactor benchmarks to use Criterion's async bencher [#385]#385)

[added] Support RPC method aliases and make RpcModule be Clone [#383]#383)

[added] CORS support and use soketto v0.6 #375

[changed] Ws switch from sending TEXT instead of BINARY #374

[added] Benchmarks for async methods and subscriptions #372

[v0.2.0] – 2021-06-04

[changed] The crate structure changed to several smaller crates, enabling users to pick and choose. The jsonrpsee crate works as a façade crate for users to pick&chose what components they wish to use.

[changed] Starting with this release, the project is assuming tokio is the async executor.

[changed] Revamped RPC subscription/method definition: users now provide closures when initializing the server and it is no longer possible to register new methods after the server started.

[changed] Refactored the internals from the ground up.

[added] Support for async methods

[added] Support for batch requests (http/ws)

[changed] the proc macros are currently limited to client side.

[added] crate publication script

[v0.1.0] - 2020-02-28