CHANGELOG.md

# Changelog

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

This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [v1.1.1](https://github.com/cabol/shards/tree/v1.1.1) (2024-05-25)

[Full Changelog](https://github.com/cabol/shards/compare/v1.1.0...v1.1.1)

**Closed issues:**

- Compilation error with OTP 26
  [#63](https://github.com/cabol/shards/issues/63)
- `shards:info/1` bad argument crash
  [#60](https://github.com/cabol/shards/issues/60)

## [v1.1.0](https://github.com/cabol/shards/tree/v1.1.0) (2022-11-25)

[Full Changelog](https://github.com/cabol/shards/compare/v1.0.1...v1.1.0)

**Implemented enhancements:**

- Add helper functions for storing and retrieving custom metadata
  [814ebf1](https://github.com/cabol/shards/commit/814ebf1f12e0a9e17ee2788ad8dbe4627b5c1d9b).
- Overall fixes, updates, and improvements
  [474ca04](https://github.com/cabol/shards/commit/474ca045d26e38aa33ca19b65d9ec180eb31b0c5).
- Add rebar3_ex_doc for generating docs
  [5070f4a](https://github.com/cabol/shards/commit/5070f4a9538ae8280f28860738579b8c8678ebd5).

## [v1.0.1](https://github.com/cabol/shards/tree/v1.0.1) (2020-11-07)

[Full Changelog](https://github.com/cabol/shards/compare/v1.0.0...v1.0.1)

**Fixed bugs:**

- Paginated select/match raises `badarg` when used with large data
  [#59](https://github.com/cabol/shards/issues/59).

**Implemented enhancements:**

- Added property tests for base read/write commands.

## [v1.0.0](https://github.com/cabol/shards/tree/v1.0.0) (2020-10-28)

[Full Changelog](https://github.com/cabol/shards/compare/v0.6.2...v1.0.0)

**Implemented enhancements:**

- Make `shards` just a library to work locally and move `shards_dist` to a
  [separate project/repo](https://github.com/cabol/shards_dist)
  [#52](https://github.com/cabol/shards/issues/52).
- Use the metadata ETS table for storing the partitions TIDs, instead of
  building atoms in runtime for table names [#55](https://github.com/cabol/shards/issues/55).
- Refactor shards to use TIDs instead of names (atoms) for handling the
  partitions [#54](https://github.com/cabol/shards/issues/54).
- Support named and unnamed tables [#53](https://github.com/cabol/shards/issues/53).
- Create the module `shards_group` as dynamic supervisor for creating/deleting
  tables dynamically as part of a supervision tree [#56](https://github.com/cabol/shards/issues/56).
- Add module `shards_enum` for the enumerable-based functions.
- Add simple implementation for `shards_enum:pmap/2,3` to support parallel
  execution.
- Make configurable parallel execution for operations involving all partitions
  (like query-based functions) via `parallel` option. See `shards:new/2`.
- Make configurable the max timeout for parallel executions via
  `parallel_timeout` option. See `shards:new/2`.
- Remove module `shards_task` since it is overkill and not needed anymore.
- Fix and/or improve docs.

**Closed issues:**

- Shards `0.6.2` doesn't compile on OTP 23.0.3 on OS X 10.15
  [#48](https://github.com/cabol/shards/issues/48).
- Migrate from pg2 to pg (OTP 23) [#47](https://github.com/cabol/shards/issues/47).
- Support for `select_replace` [#45](https://github.com/cabol/shards/issues/45).
- Fix `shards_dist` and `shards` specs to consider the case when `rpc` returns
  `{badrpc, Reason}` [#43](https://github.com/cabol/shards/issues/43).

**Merged pull requests:**

- Prepare v1.0.0 [#51](https://github.com/cabol/shards/pull/51)

## [v0.6.2](https://github.com/cabol/shards/tree/v0.6.2) (2020-03-23)

[Full Changelog](https://github.com/cabol/shards/compare/v0.6.1...v0.6.2)

**Closed issues:**

- Rollback when `insert_new` fails [#46](https://github.com/cabol/shards/issues/46)

## [v0.6.1](https://github.com/cabol/shards/tree/v0.6.1) (2019-11-05)

[Full Changelog](https://github.com/cabol/shards/compare/v0.6.0...v0.6.1)

**Closed issues:**

- Missing support for keypos [#44](https://github.com/cabol/shards/issues/44)
- `update_counter` spec is not the same as ETS. [#42](https://github.com/cabol/shards/issues/42)
- Failed to start `shard_sup` [#41](https://github.com/cabol/shards/issues/41)

## [v0.6.0](https://github.com/cabol/shards/tree/v0.6.0) (2018-09-02)

[Full Changelog](https://github.com/cabol/shards/compare/v0.5.1...v0.6.0)

**Implemented enhancements:**

- Improve documentation [#39](https://github.com/cabol/shards/issues/39)

## [v0.5.1](https://github.com/cabol/shards/tree/v0.5.1) (2018-06-26)

[Full Changelog](https://github.com/cabol/shards/compare/v0.5.0...v0.5.1)

**Closed issues:**

- Issues on Erlang v21 [#40](https://github.com/cabol/shards/issues/40)
- Improve test coverage \(ideally 100%\) [#38](https://github.com/cabol/shards/issues/38)

## [v0.5.0](https://github.com/cabol/shards/tree/v0.5.0) (2017-07-11)

[Full Changelog](https://github.com/cabol/shards/compare/v0.4.2...v0.5.0)

**Implemented enhancements:**

- Improve `shards_local:info/1,2` to be compliant with ETS functions
  [#37](https://github.com/cabol/shards/issues/37)
- Improve `file2tab` and `tab2file` in `shards_local` to be compliant with ETS
  functions [#36](https://github.com/cabol/shards/issues/36)
- Improve `shards_local` fix \#4 – `ordered_set` support.
  [#25](https://github.com/cabol/shards/issues/25)

**Closed issues:**

- Allows to register `shards_sup` with custom name (given as parameter)
  [#34](https://github.com/cabol/shards/issues/34)
- `file2tab`, `tab2file` not working [#33](https://github.com/cabol/shards/issues/33)

**Merged pull requests:**

- Improve README grammar [#35](https://github.com/cabol/shards/pull/35)
  ([casidiablo](https://github.com/casidiablo))

## [v0.4.2](https://github.com/cabol/shards/tree/v0.4.2) (2017-02-22)

[Full Changelog](https://github.com/cabol/shards/compare/v0.4.1...v0.4.2)

**Closed issues:**

- Implement `ets:rename/2` [#32](https://github.com/cabol/shards/issues/32)
- Fulfil ETS API for `shards_local` [#1](https://github.com/cabol/shards/issues/1)

## [v0.4.1](https://github.com/cabol/shards/tree/v0.4.1) (2017-02-13)

[Full Changelog](https://github.com/cabol/shards/compare/v0.4.0...v0.4.1)

**Implemented enhancements:**

- Automatically distributed table setup when `shards:new/2` is called with
  opt `{nodes, \[node\(\)\]}` [#28](https://github.com/cabol/shards/issues/28)
- Implement `select/match` pagination ops for `shards_dist`
  [#16](https://github.com/cabol/shards/issues/16)

**Closed issues:**

- Implement `update_counter` and `update_element` in `shards_dist`
  [#31](https://github.com/cabol/shards/issues/31)
- LRU Feature may be [#29](https://github.com/cabol/shards/issues/29)

## [v0.4.0](https://github.com/cabol/shards/tree/v0.4.0) (2017-02-10)

[Full Changelog](https://github.com/cabol/shards/compare/v0.3.1...v0.4.0)

**Implemented enhancements:**

- Allow to create the `state` passing the rest of its attributes
  [#30](https://github.com/cabol/shards/issues/30)

**Closed issues:**

- Add performance and scalability tests [#2](https://github.com/cabol/shards/issues/2)

## [v0.3.1](https://github.com/cabol/shards/tree/v0.3.1) (2016-09-08)

[Full Changelog](https://github.com/cabol/shards/compare/v0.3.0...v0.3.1)

**Implemented enhancements:**

- Modify `shards:new/2` function to return only the table name in case of
  success [#27](https://github.com/cabol/shards/issues/27)

## [v0.3.0](https://github.com/cabol/shards/tree/v0.3.0) (2016-08-02)

[Full Changelog](https://github.com/cabol/shards/compare/v0.2.0...v0.3.0)

**Implemented enhancements:**

- Allow to call `shards_local` without the state – using a default state.
  [#23](https://github.com/cabol/shards/issues/23)
- Unify `pick_shard_fun` and `pick_node_fun` in a single spec
  [#22](https://github.com/cabol/shards/issues/22)
- Separate `shards` from specific consistent hashing implementation.
  [#21](https://github.com/cabol/shards/issues/21)

**Closed issues:**

- Remove `auto_eject_nodes` property from `state` – it isn't being used
  [#24](https://github.com/cabol/shards/issues/24)
- Fix `shards` to work well with `ordered_set` tables.
  [#4](https://github.com/cabol/shards/issues/4)

## [v0.2.0](https://github.com/cabol/shards/tree/v0.2.0) (2016-07-10)

[Full Changelog](https://github.com/cabol/shards/compare/v0.1.0...v0.2.0)

**Implemented enhancements:**

- Modify `shards_local` to avoid additional table types, handle a flag
  `sharded` instead. [#10](https://github.com/cabol/shards/issues/10)
- Make distribution function \(pick none/shard\) configurable.
  [#9](https://github.com/cabol/shards/issues/9)
- Implement sharding at global level. [#3](https://github.com/cabol/shards/issues/3)

**Closed issues:**

- OTP \< 18 not supported [#13](https://github.com/cabol/shards/issues/13)
- rebar2 compatibility [#12](https://github.com/cabol/shards/issues/12)

**Merged pull requests:**

- General fixes and refactoring. [#19](https://github.com/cabol/shards/pull/19) ([cabol](https://github.com/cabol))
- v0.2.0 [#18](https://github.com/cabol/shards/pull/18) ([cabol](https://github.com/cabol))
- Preparing v0.2.0. [#17](https://github.com/cabol/shards/pull/17) ([cabol](https://github.com/cabol))
- v0.1.1 [#15](https://github.com/cabol/shards/pull/15) ([cabol](https://github.com/cabol))
- Enhancements and fix issue \#13. [#14](https://github.com/cabol/shards/pull/14) ([cabol](https://github.com/cabol))

## [v0.1.0](https://github.com/cabol/shards/tree/v0.1.0) (2016-05-19)

[Full Changelog](https://github.com/cabol/shards/compare/765c5e9f6e350b46076d8a525ac0d18fba909e27...v0.1.0)

**Closed issues:**

- Operation of the shards:info/2 does not match [#8](https://github.com/cabol/shards/issues/8)

**Merged pull requests:**

- Fix README. [#7](https://github.com/cabol/shards/pull/7) ([cabol](https://github.com/cabol))
- Refactor shards_local to handle 'state' and avoid to call ETS control table.
  [#6](https://github.com/cabol/shards/pull/6) ([cabol](https://github.com/cabol))
- Implemented distributed shards. [#5](https://github.com/cabol/shards/pull/5)
  ([cabol](https://github.com/cabol))


\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*