Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning from the version that will follow 2.1.0.

[3.0.1] - 2022-04-19

Added

  • rebar3_ex_doc + make ex_doc-dry [Paulo Oliveira]

Changed

  • edoc-based doc. to ex_doc-based doc. [Paulo Oliveira]

[3.0.0] - 2021-07-27

Added

  • .github/workflows/ci.yml for GitHub Actions -based CI
  • note to CHANGELOG regarding semver
  • possibility to add EDoc-based doc.s in the future
  • rebar3_lint-based static analysis
  • rebar.lock (as generated by rebar3 do unlock,upgrade)
  • full compatibility with support branch support/2.1.x
  • copyright notices (Miniclip) to all changed elements
  • tlsv1.3 support, with the ciphers recommended by Mozilla

Changed

  • .gitignore to a trimmed version of what we actually need there
  • test/integration/.dockerignore to a trimmed version of what we actually need there
  • Makefile to a more modern version of itself (added a couple of new targets, too)
  • rebar.config to a more modern version of itself
  • minimum_otp_vsn to 22 (from 19.1)
  • test/integration/Dockerfile to a more modern version of itself
  • test/integration/integration-tests.sh in order to repeat ourselves less
  • tests, in order to ignore failing ones (1 only)

Fixed

  • minor .yml elements for readability
  • minor .md elements for readability and to signal a maintenance shift to Miniclip
  • all static analysis issues that were found by the addition of new tools to CI

Removed

  • .travis.yml, as replaced by GitHub Actions
  • include/*.hrl (as now moved to src/*.hrl)
  • otp-release.escript
  • miscelaneous rebar.config entries where they concerned defaults
  • coveralls -related stuff
  • rebar.config.script
  • test/gen_rpc.coverspec as unsupported by recent versions of rebar3
  • uninteresting TODO.md
  • list of contributors
  • package.exs
  • tlv1.1 support
  • tlv1.2 ciphers, where not recommended

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, pleaserefer 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