Skip to content

Latest commit

 

History

History
132 lines (76 loc) · 3.87 KB

File metadata and controls

132 lines (76 loc) · 3.87 KB

Changelog

Below is a non-exhaustive list of changes between gen_rpc versions.

3.6.0

  • Support compression when serializing Erlang term to binary.
  • Add gen_rpc:check_server_ports_available/0 to help checking if Address:Port is in use.

3.5.1

  • Fix log 'domain' metadata.

3.5.0

  • Improve logging
    • Switched to structured logging.
    • Support user provided logger module.
  • Refactor client initialization to use async connection setup via handle_continue/2, preventing dispatcher blocking during client startup
  • Fix supervisor crash reports by using {shutdown, Reason} for graceful client termination instead of abnormal reasons
  • Improve error handling and logging for connection failures

3.4.3

  • Performance: Use lazy tracepoints in hot code paths to reduce overhead

3.4.2

  • Chore: Reduce debug level logging
  • CI: Update GitHub action versions

3.4.1

  • Fix: Don't crash the server due to client problems

3.4.0

  • Back-pressure towards sender by {active, 100} socket option in acceptor side.

3.2.2

  • Improve logging. Sever listener error reports port number.

3.2.1

  • Deleted some hardcoded TLS options

3.2.0

  • Add config 'ipv6_only' to support IPv6 only network.
  • Fix peer address format crash when IPv6 is configred for 'socket_ip'.

3.1.1

  • Support ssl ciphers config.

3.1.0

  • Add node name to the auth challenge message

3.0.0

  • Security: implement challenge-response authentication; avoid sending cookie over the network

2.1.0

  • Support multiple connections per node using aribtrary keys.

  • Add support for Linux and Darwin/macOS custom keepalive settings to detect socket issues faster.

2.0.1

  • Support external node driver/port discovery.

2.0.0

This release boasts a major rengineer/refactor of gen_rpc that includes quite a few new features:

  • The server and acceptor FSMs have been converted to gen_statem to follow Erlang's best practices and development. As a result, support for Erlang releases older than 19.1 has been dropped.

  • Specific options, leveraging Erlang 19, have been enabled such as off-heap mailboxes for client and acceptor, and higher priorities for all gen_rpc processes.

  • Ports are not dynamically assigned anymore as it shows that, after some research, offers no additional benefits to having a static port listener. That means less processes to supervise and less moving parts where something can go wrong.

  • Support for SSL has been added. Please refer to the README for more information on how to use it.

  • Module version control support has been added, effectively allowing you to only make RPC calls to nodes that run specific versions of modules.

  • lager support has been dropped in favor of the logging backend-agnostic library hut, in order to better support Elixir installations. The test suite and development profiles still use lager but this doesn't interfere with production deployments of gen_rpc.

  • Tests have been updated to test more edge cases, including new SSL functionality.

  • Some options in gen_rpc.app.src have changed names to better describe what they do. Again, please refer to the README to verify your preexisting settings are consistent with their new names.

  • Various smaller bugs have been fixed and various responses have been massaged for consistency.

1.0.2

  • Implemented blacklisting/whitelisting of modules available for RPC.

  • Implemented abcast and sbcast support.

1.0.1

  • Updated documentation

  • Updated/optimized various TCP options

  • Updated tests to include more edge cases

  • Support client-configurable listener port per remote node

  • Small code refactoring and cleanup

1.0.0

This release drops the hybrid RPC/TCP approach and uses a separate TCP listener to emulate initial RPC communication. In addition, this release includes:

  • Updated documentation

  • Added integration tests using Docker