# Changelog

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

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

## [Unreleased]

## [0.4.3] - 2020-11-02

* [`const_fn` no longer fails to compile if unable to determine rustc version. Instead, it now displays a warning.](https://github.com/taiki-e/const_fn/pull/31)

* [`const_fn` no longer relies on debug print format.](https://github.com/taiki-e/const_fn/pull/30)

## [0.4.2] - 2020-08-31

* [Improve error messages when failed to parse version information.](https://github.com/taiki-e/const_fn/pull/26)

* [Fix compile failure with cargo installed by yum.](https://github.com/taiki-e/const_fn/pull/26)

## [0.4.1] - 2020-08-25

* [Fix compile failure with non-cargo build systems.](https://github.com/taiki-e/const_fn/pull/23)

## [0.4.0] - 2020-08-25

* [Add support for version-based code generation.](https://github.com/taiki-e/const_fn/pull/17) The following conditions are available:

  ```rust
  use const_fn::const_fn;

  // function is `const` on specified version and later compiler (including beta and nightly)
  #[const_fn("1.36")]
  pub const fn version() {
      /* ... */
  }

  // function is `const` on nightly compiler (including dev build)
  #[const_fn(nightly)]
  pub const fn nightly() {
      /* ... */
  }

  // function is `const` if `cfg(...)` is true
  #[const_fn(cfg(...))]
  pub const fn cfg() {
      /* ... */
  }

  // function is `const` if `cfg(feature = "...")` is true
  #[const_fn(feature = "...")]
  pub const fn feature() {
      /* ... */
  }
  ```

* Improve compile time by removing proc-macro related dependencies ([#18](https://github.com/taiki-e/const_fn/pull/18), [#20](https://github.com/taiki-e/const_fn/pull/20)).

## [0.3.1] - 2019-12-09

* Updated `syn-mid` to 0.5.

## [0.3.0] - 2019-10-20

* `#[const_fn]` attribute may only be used on const functions.

## [0.2.1] - 2019-08-15

* Updated `proc-macro2`, `syn`, and `quote` to 1.0.

* Updated `syn-mid` to 0.4.

## [0.2.0] - 2019-06-16

* Transition to Rust 2018. With this change, the minimum required version will go up to Rust 1.31.

## [0.1.7] - 2019-02-18

* Update syn-mid version to 0.3

## [0.1.6] - 2019-02-15

* Reduce compilation time

## [0.1.5] - 2019-02-15

* Revert 0.1.4

## [0.1.4] - 2019-02-15 - YANKED

* Reduce compilation time

## [0.1.3] - 2019-01-06

* Fix dependencies

## [0.1.2] - 2018-12-27

* Improve error messages

## [0.1.1] - 2018-12-27

* Improve an error message

## [0.1.0] - 2018-12-25

Initial release

[Unreleased]: https://github.com/taiki-e/const_fn/compare/v0.4.3...HEAD
[0.4.3]: https://github.com/taiki-e/const_fn/compare/v0.4.2...v0.4.3
[0.4.2]: https://github.com/taiki-e/const_fn/compare/v0.4.1...v0.4.2
[0.4.1]: https://github.com/taiki-e/const_fn/compare/v0.4.0...v0.4.1
[0.4.0]: https://github.com/taiki-e/const_fn/compare/v0.3.1...v0.4.0
[0.3.1]: https://github.com/taiki-e/const_fn/compare/v0.3.0...v0.3.1
[0.3.0]: https://github.com/taiki-e/const_fn/compare/v0.2.1...v0.3.0
[0.2.1]: https://github.com/taiki-e/const_fn/compare/v0.2.0...v0.2.1
[0.2.0]: https://github.com/taiki-e/const_fn/compare/v0.1.7...v0.2.0
[0.1.7]: https://github.com/taiki-e/const_fn/compare/v0.1.6...v0.1.7
[0.1.6]: https://github.com/taiki-e/const_fn/compare/v0.1.5...v0.1.6
[0.1.5]: https://github.com/taiki-e/const_fn/compare/v0.1.4...v0.1.5
[0.1.4]: https://github.com/taiki-e/const_fn/compare/v0.1.3...v0.1.4
[0.1.3]: https://github.com/taiki-e/const_fn/compare/v0.1.2...v0.1.3
[0.1.2]: https://github.com/taiki-e/const_fn/compare/v0.1.1...v0.1.2
[0.1.1]: https://github.com/taiki-e/const_fn/compare/v0.1.0...v0.1.1
[0.1.0]: https://github.com/taiki-e/const_fn/releases/tag/v0.1.0
