Skip to content

Releases: google/fruit

Fruit 2.0.4

25 May 19:48
Compare
Choose a tag to compare

Changes compared to 2.0.3

  • Fix a bug that caused undefined behavior when recursive injection was performed (e.g., when calling Provider::get() within the constructor of a class wrapped with INJECT).

Installation

See the installation instructions here for how to compile from source and for links to pre-built binary packages for various Linux distributions.

Fruit 2.0.3

14 May 09:41
Compare
Choose a tag to compare

Changes compared to 2.0.2

  • Fix a bug that caused a compilation error when auto-injecting a factory of std::unique_ptr<T> if T was not copy-constructible.

Fruit 2.0.2

01 May 11:37
Compare
Choose a tag to compare

Changes compared to 2.0.1

  • Fix a bug in registerFactory(), that caused a compilation error when more than 1 argument to a function was not assisted and they had different types.

Fruit 2.0.1

30 Apr 13:32
Compare
Choose a tag to compare

This is the first 2.0.x bugfix release.

Changes compared to 2.0.0

  • Fix a bug in assisted injection, that caused a compilation error when more than 1 argument to a function was assisted and they had different types.
Notable internal changes
  • Now using Docker images in Travis CI (for postsubmit tests) and testing with multiple Ubuntu versions.

Fruit 2.0.0

27 Mar 10:42
Compare
Choose a tag to compare

This is the second major release of Fruit.

Major changes compared to 1.0.2

  • Compile-time errors are now reported in a much more concise way, hiding template instantiations of Fruit internals.
  • More detailed errors in some cases (e.g. when attempting to do a bind<T, T>).
  • Annotated injection is now supported, using fruit::Annotated<> or the ANNOTATED() macro.
  • Fruit can now be built statically (change contributed by @mjkoo).
  • Added support for GCC 5.
  • Added support for libc++ (only when using clang).
  • Added support for the Bazel build system (in parallel with CMake, which remains supported).
  • Added support for OS X (clang-only).
Backwards-incompatible changes
  • fruit::createComponent() now returns a PartialComponent, and Component no longer inherits from PartialComponent. In some cases, this now requires a conversion of the PartialComponent returned by createComponent() to the desired Component type. This conversion also compiles with Fruit 1.x; so existing code can be gradually migrated to be compatible with Fruit 2.x while it remains compatible with Fruit 1.x, in preparation for the switch.
Notable internal changes
  • Now using Travis CI for post-submit testing
  • The compile-time graph traversal to find dependency loops now uses a DFS instead of expanding dependencies, improving compile times.
  • All metaprogramming code has been rewritten to use a more readable and lazy-evaluated functional style.
  • Improved testing coverage
  • Run tests under Asan where possible.
  • Some checks now run at configure time to detect compiler features/bugs and configure Fruit appropriately. This allows to get rid of per-compiler checks.

Fruit 1.0.2

28 Feb 19:43
Compare
Choose a tag to compare

This is the second point release of Fruit after 1.0.0.

Binary packages for various distributions are provided here. See the Install section of the documentation for more details.

Changes compared to 1.0.1

  • Binding compression (an internal Fruit optimization) is now applied in more cases, leading to performance improvements in some cases
  • Fix Mac-specific compilation error
  • The server example was rewritten using the features introduced in Fruit 1.0
  • Reduce generated code size (this also caused a performance improvement in the 1000-bindings benchmark)
  • Minor fixes
Internal changes:
  • Internal refactoring and code cleanup

Fruit 1.0.1

16 Nov 22:28
Compare
Choose a tag to compare

This is the first point release of Fruit after 1.0.0.

Binary packages for various distributions are provided here. See the Install section of the documentation for more details.

Changes compared to 1.0.0

  • Major performance optimizations, especially (but not only) when using classes with virtual destructors. The benchmarks page has been updated with the latest benchmark results.
  • Injector::unsafeGet() is no longer supported for concrete types bound to interfaces. It can still be used for interfaces.
Internal changes:
  • Now using binding compression to remove binding nodes from the normalized dependency graph.

Release version 1.0.0

09 Nov 20:48
Compare
Choose a tag to compare

This is the first stable major release of Fruit.

Binary packages for various distributions are provided here. See the Install section of the documentation for more details.

Changes compared to 0.9.6

  • Improvements to Doxygen documentation
  • Various optimizations
  • Restricted the copy-ability of NormalizedComponent and Injector
  • Provider<> now takes a single parameter (Provider<T>) instead of several (Provider<Ts...>).
Internal changes:
  • Code refactoring
  • Added more tests

Release version 0.9.6

01 Nov 17:25
Compare
Choose a tag to compare
Release version 0.9.6 Pre-release
Pre-release

This is a major release. After this release Fruit is in feature freeze until the release of v1.0.0, that is expected within 1-2 weeks.

Binary packages for various distributions are provided here.

Changes compared to 0.9.5

  • Introduce a NormalizedComponent class to save time when creating multiple similar injectors.
  • Add an unsafeGet() method to Injector.
  • getMultibindings() now returns a vector instead of a set.
  • Plain functions are no longer supported as providers, only lambdas are.
  • Major performance improvements
  • Some improvements in compile-time speed.
  • Remove the dependency on the sparsehash library.
  • Fix warnings/errors with the latest versions of GCC/Clang.
  • Various code cleanups.

Release version 0.9.5

23 Aug 08:52
Compare
Choose a tag to compare
Release version 0.9.5 Pre-release
Pre-release

Changes compared to 0.9.4

  • Include the sparsehash header in a different way, to support old versions of sparsehash (still used by Ubuntu and Fedora)