CHANGELOG.md

# Changelog

## v6.0.3

### Enhancements

  * Updated dependencies.
  * Improved how adapters disconnect from an unexistent manager.

## v6.0.2

### Enhancements

  * Updated dependencies.
  * Improved how supervisors stop their children.

## v6.0.1

### Enhancements

  * Updated `Yggdrasil.Subscriber.Manager` so it starts faster.

## v6.0.0

### Enhancements

  * Updated the dependencies including `Phoenix.PubSub`.
  * Upgraded `Yggdrasil.Registry`:
    - Using `:pg` instead of `:pg2`.
    - Using `:persistent_term` instead of `:ets`.
  * Upgraded `Yggdrasil.Subscriber.Manager` to use `:pg` instead of `:pg2`.

## v5.0.2

### Enhancements

  * Updated dependencies.
  * Added dialyzer.

### Bug fixes

  * Fixed dialyzer warnings.

## v5.0.0

### Enhancements

  * [`Yggdrasil`] Added `Yggdrasil` behaviour which is a `GenServer` wrapper for
    receiving `Yggdrasil` messages.
  * [`Yggdrasil.Adapter.Bridge`] Added `:bridge` adapter for adding multi-node
    support to every adapter.
  * Updated dependencies.
  * Support for Elixir 1.8 and Erlang 21

## v4.1.2

### Enhancements

  * Updated Skogsra.
  * Added formatter.

## v4.1.1

### Bug fixes

  * Fixed channel defaults

### Enhancements

  * [`Yggdrasil`] Now `subscribe/1`, `unsubscribe/1` and `publish/3` can
  receive a map or a `Keyword` list as channel as well as the
  `Yggdrasil.Channel` struct.
  * Added Yggdrasil logo to documentation.
  * Added Yggdrasil Ethereum adapter to documentation.
  * Added Yggdrasil GraphQL adapter to documentation.

## v4.1.0

### Bug fixes

  * Fixed connection messages. They weren't reliable.

### Enhancements

  * [`Yggdrasil.Subscriber.Adapter`] Simplified the subscriber adapter
  behaviour.
  * [`Yggdrasil.Subscriber.Manager`] Improved subscriber manager to distribute
  connection and disconnection messages from the adapters.

## v4.0.0

### Enhancements

  * [`Yggdrasil.Adapter`] Added behaviour to add adapters easily.
  * [`Yggdrasil.Backend`] Added behaviour to add backends easily.
  * [`Yggdrasil.Transformer`] Improved the transformer behaviour.
  * [`:yggdrasil_redis`, `:yggdrasil_rabbitmq`, `:yggdrasil_postgres`]
  Separated Redis, RabbitMQ and PostgreSQL adapters to three other
  repositories. This makes Yggdrasil really agnostic.
  * Updated the code to follow the new Supervisor child specs.

## v3.3.4

### Bug fixes

  * Fixed bug in Redis and Postgres adapters that didn't publish the
    disconnection message correctly. Closes #6 and #7.
  * Improved disconnection handling.

### Enhancements

  * [`Yggdrasil.Subscriber.Adapter.Postgres`] Exponential backoff on connection
  retries.

## v3.3.3

### Enhancements

  * [`Yggdrasil.Subscriber.Adapter.RabbitMQ`] Exponential backoff on connection
  retries.
  * Improved disconnection handling.

## v3.3.0

### Bug fixes

  * [`Yggdrasil.Subscriber.Adapter.RabbitMQ`] Now properly closes the open
    channels when the client unsubscribes.

### Enhancements

  * [`Yggdrasil.Distributor`] Now the subscriptions to channels are managed by
  the subscription process tree instead of a process outside of this tree.
  * [`Yggdrasil`] On unsubscription or disconnection, a new message is sent to
  subscribers: `{:Y_DISCONNECTED, Yggdrasil.Channel.t()}`.
  * Improved documentation.
  * Updated dependencies.

### Changes

  * Added `docker-compose.yml` file that starts a PostgreSQL database, a
  RabbitMQ server and a Redis server (useful for testing).

## v3.2.1

### Bug fixes

  * Consistency between versions in the documentation and the code.

### Enhancements

  * [`Yggdrasil.Subscriber.Adapter.RabbitMQ`] For the adapter configuration,
  the `host` is now set as `hostname`.
  * [`Yggdrasil.Subscriber.Adapter.Redis`] For the adapter configuration, the
  `host` is now set as `hostname`.
  * [`Yggdrasil.Settings`] Added this module to handle the application
  configuration using `Skogsra`. This allows Yggdrasil to be configured by
  using OS environment variables. Also, this module has all the configuration
  settings properly documented.

### Changes

  * `.travis.yml` was simplified by just setting an environment variable during
  the tests.