CHANGELOG.md

# Changelog

## 3.1.0

### Breaking Changes

- **Unicode Support**: Unicode TLDs are now supported natively. 
  The parser no longer requires or performs implicit Punycode conversion, 
  which may affect consumers relying on the old behavior.

### Improvements

- **Performance**: Replaced macro-based compilation with a Trie-based 
  lookup system. This significantly reduces compilation time and binary size.
- **Cleanliness**: Eliminated compiler warnings about unreachable clauses 
  caused by the previous generated code.

### Fixes

- **Rule Precedence**: The longest matching suffix is now guaranteed to be 
  selected (e.g., correctly distinguishing `s3.amazonaws.com` from `com`).
- **Exception Rules**: Fixed handling of exception rules (like `!city.kawasaki.jp`) 
  and wildcard precedence, ensuring strict adherence to the Public Suffix List specification.

## 3.0.5

- FIX: when download fails use local fallback [@Sgiath](https://github.com/sgiath)
- FEAT: add update script [@Sgiath](https://github.com/sgiath)
- Update dependencies [@Sgiath](https://github.com/Sgiath)
- Add Nix flake setup [@Sgiath](https://github.com/Sgiath)
- Add LICENSE file [@Sgiath](https://github.com/Sgiath)

## 3.0.4

- Fix issue with new, even longer domains from public_suffix_list.dat [@Sgiath](https://github.com/Sgiath)

## 3.0.3

- Fix issue with new, longer domains from public_suffix_list.dat [@fabiokr](https://github.com/fabiokr)

## 3.0.1

- Resolve warnings about SSL and `Mix.Config` being deprecated.

## 3.0.0

- Breaking change: default to including private domains. `:include_private == false` is still
  respected (but defaults to false), and a new env var `:icann_only` is added and defaults to
  false.

## 2.4.0

- Support disabling compile time http request with `:fetch_latest` config (thanks @s3cur3 for
  the PR!)

## 2.3.0

- Bump deps

## 2.2.0

- Use `Logger` for logging

## 2.1.4

- Pin a version of `nimble_parsec` to fix a compilation error on `makeup` (`makeup` has fixed
  this downstream, so when `ex_doc` updates `makeup`, this will no longer be required)

## 2.1.3

- Merge a couple of minor PRs

## 2.1.2

- Improve tests and docs slightly

## 2.1.1

- Privatize `Domainatrex.match/n` and `Domainatrex.format_response/2` as they are only ever
  intended for internal use

## 2.1.0

- Better handle private domains. Private domains like `*.s3.amazonaws.com` are technically
  classed as TLDs (to my understanding?), it doesn't make a lot of sense to parse them this way.
- Fetch a new copy of the public suffix list from The Internet on compile, falling back to a
  (now updated!) local copy.

## 2.0.0

- Change the API from returning explicit results to {:ok, result} or {:error, result}. This is to
  be more uniform with other libraries I use and for better `with` usage. Sorry if this fucks up
  your day.

## 1.0.1

- Fully update the tests to reflect changes in `2.0.0` (thanks for the PR @pbonney!)