# Changes

## Unreleased

## 3.0.0

- [BREAKING] Change the behavior of the `cow!` macro
- [BREAKING] Renaming `flkl` macro to `rlkl`.

## 2.0.0

- [BREAKING] Change the behavior of the `cow!` macro
- [BREAKING] Remove haskell-like and python-like comprehension syntax
- Add `rwlock!` macro to create `RwLock` types
- Re-implement comprehensions based on the `c!` macro
- Add a comprehension macro for lazy iterators: `c!`

## 1.2.0

- Add a collection macro for `BinaryHeap`: `bheap!`
- Add a collection macro for `VecDeque`: `deque!`
- Add empty pattern for collections macros already created

## 1.1.0

- Add for all comprehensions a Implicit-`for` (or Just-`in`) version
- Add new version of `lkl` and `fklk` (old `rlkl`) that works almost like array init syntax (`[$init_elem; $n_times]`)

## 1.0.0

- Remove nightly requirements.

## 0.5.0

- Add comprehension macros `cbtmap` and `cbtset` mostly for completeness
- Add macros `lkl` and `fklk` (old `rlkl`) that return a `LinkedList`, the fist pushing to back and the other to the front

## 0.4.0

- The macro `mutex` now return a tuple of `Mutex` values if 2 or more expression are passed to it
- The macro `refcell` now return a tuple of `RefCell` values if 2 or more expression are passed to it
- The macro `cell` now return a tuple of `Cell` values if 2 or more expression are passed to it
- The macro `arc` now return a tuple of `Arc` values if 2 or more expression are passed to it
- The macro `rc` now return a tuple of `Rc` values if 2 or more expression are passed to it
- The macro `boxed` now return a tuple of `Box` values if 2 or more expression are passed to it
- Consistency in the `cvec` macro between 2 and 3 nested versions
- Add `cell` macro to create a smart pointer type `Cell`
- Now `time` macro supports more than one expression and return a tuple
- Now `time` macro prints the expression that was passed to it

## 0.3.0

- Add a number of macros to create smart pointers: `rc!`, `refcell!`, `cow!`, `arc!`, `mutex!`
- Move the boxed module to pointers, related to smart pointer
- Add a new macro `hash` that gives back the hash of passed expression (of course, as long the type implements `Hash` trait)

## 0.2.0

- Implement 3 nested `cvec`
- Implement 2 nested `cvec`
- Improve of `cset` macro using `Iterators` methods (doesn't bring a lot of performance improvements, but the code is cleaner)
- Macro `time` now prints to stderr and format the time to 6 digits after the dot
- Improve of `cmap` macro using `Iterators` methods (doesn't bring a lot of performance improvements, but the code is cleaner)
- Improve performance of `cvec` macro using `Iterators` methods

## 0.1.0

- Add collections macro `hmap`, `hset`, `btmap`, `btset`
- Add times macro `time`
- Add times macro `sleep`
- Add times macro `dur` to create `Duration`
- Add macro `boxed` to create `Box`
- Add comprehension macro `cset`
- Add comprehension macro `cmap`
- Add comprehension macro `cvec`
