Skip to content

1.0.0-rc.1

Pre-release
Pre-release
Compare
Choose a tag to compare
@FlorentinDUBOIS FlorentinDUBOIS released this 19 Mar 16:08
· 113 commits to main since this release
0d7f7d6

1.0.0-rc.1 - 2024-03-19

This changelog is the first release candidate before the version 1.0.0, its goal is to allow to migrate smoothly other crates as the sozu-client to be compatible with the protobuf-everywhere part and to be able to make tests on production at Clever-Cloud by doing some A/B testing.

🌟 Features

  • This version is the first one that use protobuf-everywhere. It means that we are moving out from the old exchange model for sockets (which are data exchanges between main process and workers processes and also main process and control plane process) that use Rust structures that we serialize into json to structures described in protobuf that generate Rust source code and then communicate with binary format. Besides, this work also have some nice side-effects on fork when creating new workers (due to a self-healing or at start) which allow to reduce the time to configure a worker by around 50%. It also introduces a new way to emit access logs in a binary way, see [ dfacdb7 ], [ a6ffebe ], [ fb11245 ], [ 6daf43c ], [ 8e81a02 ], [ 24a941b ], [ 6d160b4 ], [ e382a1c ], [ 4f2d760 ], [ 6d43eb1 ] and [ 5852c6b ].
  • We have reworked emitted logs and access logs format, if you are tools that parse them, you have to take a look at the new one. Besides, it will be easier to parse. Furthermore, we have added color on logs to improve readability, see [ 0885863 ], [ d3eeddc ], [ 3bb3997 ] and [ 5f55561 ].
  • We have bump the minimum Rust supported version to v1.74.0, see [ 2c4363d ], [ 96f5329 ] and [ e6bcfe0 ].

⛑️ Fixed

  • We have fixed a bug that occurs during http request when doing streaming and tcp keep-alive which prevent to send the close-delimiter on response, see [ 59c0615 ].
  • We have fix a few bugs on certificate replacement and improve the resolution of certificates, see [ 6aa45b9 ].
  • We have fix a bug that involved timeout on frontend sockets which did not take the given value, see [ d20e759 ].

🚀 Performance

  • Thanks to the work achieved on Rustls (v0.23.0) with the help of maintainers (a huge thanks to them ❤️), we have gain between 10% and 20% performance on https requests depending of the workload, see [ 7fa680d ].

✍️ Changed

  • We have work on errors to have a better context when something happens, see [ ba8b51a ], [ 629551f ] and [ 1c90c04 ].

📚 Documentation

  • We have added some documentation about logs and access logs, see [ d44b227 ] and [ 7241c0e ].
  • We have reworked or improved examples, see [ 31bc55e ] and [ 95624e6 ].
  • We have added some documentation of using Sōzu with firewalld (thanks @obreidenich), see [ 4cba552 ].
  • We have setup a github continuous integration to provides and document a way to benchmark Sōzu (values on the ci are not reliable), see [ 8df9ba5 ].

Changelog

🚀 Performance

  • 7fa680d ] update dependencies, notably rustls [Emmanuel Bosquet] (2024-03-11)

⛑️ Fixed

  • d20e759 ] Fix some timeout edge cases [Eloi DEMOLIS] (2024-03-18)
  • 284068d ] fix: fix RUSTSEC-2024-0019 [Dimitris Apostolou] (2024-03-09)
  • 59c0615 ] Fix close propagation on close-delimited responses with front keep-alive [Eloi DEMOLIS] (2024-02-20)
  • 6aa45b9 ] fix and rewrite CertificateResolver [Emmanuel Bosquet] (2024-02-14)

📚 Documentation

  • d44b227 ] document the logs-cache feature flag [Emmanuel Bosquet] (2024-03-11)
  • 7241c0e ] document the DuplicateOwnership trait [Emmanuel Bosquet] (2024-03-11)
  • 31bc55e ] Add example in command lib to benchmark the logger [Emmanuel Bosquet] (2024-03-11)
  • 4cba552 ] A small, descriptive extension to include firewalld. Avoiding a search for those not using iptables. [obreidenich] (2024-02-21)
  • 8df9ba5 ] CI: Adding a benchmark framework [Guillaume Assier] (2024-02-07)
  • 95624e6 ] Refactor HTTP, HTTPS and TCP example code [Eloi DEMOLIS] (2024-02-02)

➕ Added

  • a6fde1e ] distinct PEM and X509 variants for CertificateError [Emmanuel Bosquet] (2024-03-15)
  • e793ec6 ] Edit access logs ASCII format, put logs-cache under feature [Eloi DEMOLIS] (2024-03-11)
  • 85e2653 ] implement From for Ulid [Emmanuel Bosquet] (2024-03-11)
  • 756b78b ] create type WebSocketContext [Emmanuel Bosquet] (2024-03-11)
  • 0885863 ] Logger refactor: better structured logs and colored logs [Eloi DEMOLIS] (2024-03-11)
  • dfacdb7 ] protobuf access logs [Emmanuel Bosquet] (2024-03-11)
  • 7c25133 ] create helper function server::worker_response_error [Emmanuel Bosquet] (2024-02-23)
  • a6ffebe ] binary and delimited serialization of prost messages in channels [Emmanuel Bosquet] (2024-02-02)
  • 62f3db3 ] add fields and defaults to ServerConfig [Emmanuel Bosquet] (2024-02-02)
  • fb11245 ] create protobuf type SocketAddress, use everywhere [Emmanuel Bosquet] (2024-02-02)
  • f9ac920 ] add size to ChannelError::BufferFull [Emmanuel Bosquet] (2024-02-02)

✍️ Changed

  • 0d7f7d6 ] Release v1.0.0-rc.1 [Florentin Dubois] (2024-03-19)
  • bcef3b8 ] chore: update dependencies [Florentin Dubois] (2024-03-14)
  • a806fb6 ] sort cluster information alphabetically when displaying [Emmanuel Bosquet] (2024-03-12)
  • 6daf43c ] write two empty bytes after each protobuf access log [Emmanuel Bosquet] (2024-03-11)
  • 8e81a02 ] rename ProtobufAccessLog::error to 'message' [Emmanuel Bosquet] (2024-03-11)
  • b6ca85b ] apply clippy suggestions for nightly [Emmanuel Bosquet] (2024-03-11)
  • 618bed0 ] apply review: cosmetic changes [Emmanuel Bosquet] (2024-03-11)
  • 182b291 ] Use error_access in lib, add log_access to make it easier [Eloi DEMOLIS] (2024-03-11)
  • 5f55561 ] rename log_access_* variables to access_logs_* [Emmanuel Bosquet] (2024-03-11)
  • d3eeddc ] Small changes mainly relative to logging [Eloi DEMOLIS] (2024-03-11)
  • 3bb3997 ] Move all logging primitives in their own module [Eloi DEMOLIS] (2024-03-11)
  • e6bcfe0 ] set dependency resolver to 2 [Emmanuel Bosquet] (2024-03-11)
  • 96f5329 ] set rust-version to 1.74.0, update Cargo.lock [Emmanuel Bosquet] (2024-03-11)
  • 2c4363d ] bump rust-toolchain to 1.74.0 [Emmanuel Bosquet] (2024-03-11)
  • c6ee01b ] move TCP pool from TcpListener to TcpProxy [Emmanuel Bosquet] (2024-02-26)
  • 1c90c04 ] propagate errors in HttpProxy and HttpsProxy [Emmanuel Bosquet] (2024-02-23)
  • 629551f ] propagate errors in TcpProxy [Emmanuel Bosquet] (2024-02-23)
  • ba8b51a ] HttpsProxy::add_listener returns Result [Emmanuel Bosquet] (2024-02-23)
  • 630b1a7 ] define buffer sizes in u64 [Emmanuel Bosquet] (2024-02-02)
  • 24a941b ] pass ServerConfig to new worker [Emmanuel Bosquet] (2024-02-02)
  • 6d160b4 ] move ServerConfig to sozu_command_lib::config [Emmanuel Bosquet] (2024-02-02)
  • f0ecc54 ] rewrite CommandServer with MIO [Eloi DEMOLIS] (2024-01-30)
  • e382a1c ] translate WorkerRequest and WorkerResponse to protobuf [Emmanuel Bosquet] (2024-02-02)
  • 4f2d760 ] translate ServerConfig in protobuf [Emmanuel Bosquet] (2024-02-02)
  • 6d43eb1 ] SCM sockets transmit listeners in binary format [Emmanuel Bosquet] (2024-02-02)
  • 5852c6b ] pass initial state to workers in protobuf [Emmanuel Bosquet] (2024-02-02)
  • cc0a221 ] apply clippy suggestions, remove unwraps [Emmanuel Bosquet] (2024-02-02)

➖ Removed

  • c677b10 ] remove duplicate code of HttpsProxy creation [Emmanuel Bosquet] (2024-02-26)
  • 39af839 ] remove useless Serde error in channel module [Emmanuel Bosquet] (2024-02-02)

🥹 Contributors

Full Changelog: https://github.com/sozu-proxy/sozu/compare/0.15.19..1.0.0-rc.1