Skip to content

Latest commit

 

History

History
154 lines (129 loc) · 8.42 KB

CHANGELOG.md

File metadata and controls

154 lines (129 loc) · 8.42 KB

Changelog

All notable changes to frunk and its subcrates will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.4.3]:

  • avoid clippy::unneeded_field_pattern (#216)
  • rework #![no_std] support, switch on alloc (#236)

[0.4.2]:

  • Removed proc-macro-hack machinery (proc-macros-impl) (#214)
  • Add function for explicitly extending an hlist (#209)

[0.4.1]:

  • Documentation fix for Hcons::sculpt (#194)
  • Optimise Semigroup for HashSet and HashMap (#196)
  • Update to 2021 edition (#200)
  • Add extract to get value out of 1-type coproduct (#201)
  • Fix needless borrow (#202)
  • Add Coproduct::map (#204)

[0.4.0]:

  • [Breaking change] Rename Hlist! type macro to HList! (#132)
  • [Breaking change] Remove deprecated HList.length() (#125)
  • [Breaking change] HFoldRightable rework: now HFoldRightable::foldr does not differ from HFoldLeftable::foldl in calling, like std::iter::DoubleEndedIterator::rfold does not differ from std::iter::Iterator::fold. Note: though foldr behavior wasn't changed, all old foldr calls would either stop compiling or produce wrong results (#171)
  • [Breaking change] Bump quote, syn and proc-macro2 to 1 (#183)
  • Fix unicode identifiers support #186

[0.3.2] - 2021-04-16

  • Allow folding hlist with a single Poly (#170)

[0.3.1] - 2019-12-21

  • Refactoring derives (#157)
  • Add support for deriving LabelledGeneric on enums (#158)
  • Added HZippable (#160)
  • Add a type macro for paths (#161)

[0.3.0] - 2019-03-23

Added

  • More transmogrifications supported out of the box (#152)
    • Box, Option, Vec and more.
  • More idiomatic Debug impl for Field Debug impls should use DebugStruct #153
  • [no-std] support #148
    • Note: this is a breaking change, see the PR for details

[0.2.4] - 2019-02-10

Added

  • Added ToMut trait, which allows borrowing mutably from a Coproduct or HList.
  • Added support for #[derive(LabelledGeneric)] on tuple structs
  • Added Path model and PathTraverser trait, which allows for composable lens-like-usage

Changed

  • Make macros call themselves recursively with $crate::

[0.2.3]

[0.2.2] - 2018-10-21

[0.2.1] - 2018-09-29

  • Upgraded to syn 0.15 and quote to 0.6

0.2.0 - 2018-04-20

Added

  • 🎊 Forces joined with new collaborators @Centril and @ExpHP!
  • frunk now adheres to semantic versioning!
  • Inherent method wrappers for many trait methods on HList and Coproduct.
  • Re-exports for a variety of essential items at the root level of frunk.
  • Module frunk::prelude for extension traits and similar.
  • Methods Coproduct::embed and Coproduct::subset.
  • ...tail argument in each of the HList and Coproduct macros.
  • The Func trait, an alternative to Fn that can be implemented on stable.
  • The Poly wrapper type and poly_fn! macro, which use Func to provide order-free mapping.
  • map_repr and map_intern for Generic, convenience methods for temporarily converting an object into its generic representation or a similar type.

Changed

  • A general paradigm shift from per-module glob imports to the more Rusty model of use what you need. Many of the other changes listed help accomodate this.
  • Renamed the with-serde feature to serde, in line with convention.
  • Various unnecessary type parameters have been removed or replaced with associated types. This affects CoprodInjector, HMappable, and HFold{Left,Right}able.
  • Moved hlist::IntoReverse to accompany Func in the new traits module.
  • Moved hlist::{Here, There, Suffixed} to a new indices module.
  • The zero index Here is no longer an empty type. We have... plans. 👹
  • Character types were moved from labelled to labelled::chars.
  • Mapping/folding by reference is now written as list.to_ref().map(...), where formerly as_ref() was used. The new to_ref() trait composes orthogonally to many other features of HList and Coproduct, and relieves frunk from providing impls for &HCons that can be susceptible to the dreaded "Overflow evaluating _: std::marker::Sized" error.
  • Lots of documentation improvements!

Removed

  • The identity AsRef impls on HList and Coproduct, which were only present to support the old as_ref().map(...) pattern.

0.1.36 - 2018-02-25

Features present

Prior to v0.2.0, frunk did not keep a detailed changelog, and did not adhere to semver. The following list is a modest attempt to summarize the features of v0.1.36.

  • The types HLists and Coproducts, which serve as variadic product and sum types.
    • Many methods are provided through individual traits.
  • The SYB traits Generic and LabelledGeneric for conversions between similarly-shaped structs.
    • The frunk_derives crate provides #[derive(Generic, LabelledGeneric)].
  • The functional traits Semigroup and Monoid, with a number of implementations.
    • A number of implementations are provided.
    • The frunk_laws crate provides quickcheck-compatible predicates for testing custom impls.
  • The convenience macros hlist!, Hlist!, hlist_pat!, field!.
  • The Validated type, a non-short-circuiting alternative to Result.

Older versions

A raw overview of older versions is available in the form of commit logs: