1. 2a24a06 Fix some macro issues introduced by the previous commit. by Marco Poletti · 6 years ago
  2. 066d689 Use #if instead of #ifdef for Fruit macros (apart from include guards). by Marco Poletti · 6 years ago
  3. d81f3dc Make Fruit injectors accessible concurrently from multiple threads. This commit is probably backwards-incompatible on some platforms (e.g. OS X), so I expect CI errors in some configurations. I'll add a CMake flag to allow switching this off in a separate commit. by Marco Poletti · 6 years ago
  4. 1b959ab Add a .clang-format config file and reformat all C++ source code using that. Also added some documentation on the preferred style in CONTRIBUTING.md. by Marco Poletti · 6 years ago
  5. 3fd6265 No longer link against libsupc++. It's no longer necessary, and it causes compilation errors when building binary packages for Fedora. by Marco Poletti · 7 years ago
  6. 666ed2a Make install() de-duplication and component replacements work across NormalizedComponent+Component. by Marco Poletti · 7 years ago
  7. 6ae9208 Change Injector's and NormalizedComponent's constructors to take a component function + args (like the new PartialComponent::install) instead of taking a Component<> directly. by Marco Poletti · 7 years ago
  8. f810408 Remove workarounds for GCC 4.8.x bugs now that it's no longer supported. by Marco Poletti · 7 years ago
  9. 13a21fc Extract a comparison to a constant to avoid a 'conditional expression is constant' warning when compiling Fruit with MSVC. by Marco Poletti · 7 years ago
  10. 44e15af Avoid reinterpret_cast-ing function pointers as void* directly, to avoid a GCC 4.8 warning when -pedantic is enabled. by Marco Poletti · 7 years ago
  11. 102a707 Add a new PartialComponent feature: component replacement. by Marco Poletti · 7 years ago
  12. 46b3d22 Add LCOV_* comments to suppress line/branch coverage for unreachable lines/branches. by Marco Poletti · 7 years ago
  13. 629be9d Delete dead code (found in the coerage report). by Marco Poletti · 7 years ago
  14. a0228a2 Workaround a GCC 4.8 bug causing FixedSizeAllocator's move-assignment operator to misbehave (but only in release mode). This issue was caught by Valgrind. by Marco Poletti · 7 years ago
  15. 4511c4e Remove a few superfluous FRUIT_UNREACHABLEs. These were causing warning C4702 with MSVC (and that was treated as an error due to /WX). by Marco Poletti · 7 years ago
  16. e2b3cc9 Use FRUIT_UNREACHABLE in places where we report an irrecoverable error. by Marco Poletti · 7 years ago
  17. 3486f49 Introduce a FRUIT_UNREACHABLE macro and use it instead of FruitAssert(false) in places that are known to be unreachable, to help the compiler optimize out those branches. by Marco Poletti · 7 years ago
  18. dcf7e03 Fix a debug-only compile error. by Marco Poletti · 7 years ago
  19. 76f2649 Don't calculate BindingCompressionInfoMap when constructing an injector directly from a Component. We'll never need to undo binding compression in that case. by Marco Poletti · 7 years ago
  20. 3e12b3d Use arena allocation for BindingCompressionInfoMap too. by Marco Poletti · 7 years ago
  21. a8c2964 Use arena allocation for temporary collections created when normalizing a component and when initializing an injector, to improve performance. by Marco Poletti · 7 years ago
  22. d757cd1 Move the 'NormalizedComponent + Component' merging logic from injector_storage.cpp to binding_normalization.*. Also refactor the code to avoid a double pass on the entries array when a single pass is enough. by Marco Poletti · 7 years ago
  23. 8ff8ec6 No longer collect binding compressions when they're not needed (i.e. when constructing an Injector from a NormalizedComponent + a Component). by Marco Poletti · 7 years ago
  24. 8f9720e Simplify/optimize binding splitting: now we no longer need the intermediate vectors for bindings and compressed bindings. by Marco Poletti · 7 years ago
  25. 850a9fd Simplify/optimize BindingNormalization::addMultibindings(), we don't need to sort multibindings, and the sorting might interfere with the multibinding order. by Marco Poletti · 7 years ago
  26. f2bec68 Use a FixedSizeVector instead of an std::vector in ComponentStorage, so that we'll do at most 1 allocation per ComponentStorage (and we don't need the size checks on push_back anymore). by Marco Poletti · 7 years ago
  27. c563512 Change the internal representation of Component to use a single vector instead of using separate vector for various kinds of bindings. This reduces the amount of allocation/deallocation done when moving/copying Components. However this changes the order in which multibindings are returned by the injector; that will be fixed in a follow-up commit. by Marco Poletti · 7 years ago
  28. c3334a5 More class moves/renames in preparation for the upcoming change in the representation of bindings. by Marco Poletti · 7 years ago
  29. 6103cdb Move binding-related headers from fruit/impl/ to fruit/impl/bindings/, in preparation for more binding-related changes. by Marco Poletti · 7 years ago
  30. 4018a7b Implement an optimization for the new-style install, in the case when there are no arguments to the getComponent function. by Marco Poletti · 7 years ago
  31. d1a7059 Fix a typo that was not meant to be committed (and was causing a build failure). by Marco Poletti · 7 years ago
  32. c6fea76 Implement de-duping and loop checking for the new-style install() method. by Marco Poletti · 7 years ago
  33. 716773c First step of the real implementation of the new install method: now lazy components are expanded at normalization time instead of install time; however component de-duplication and loop checking are still missing. by Marco Poletti · 7 years ago
  34. c95dad6 Add some debug prints (executed only with FRUIT_EXTRA_DEBUG) to help debug compressed bindings. by Marco Poletti · 7 years ago
  35. dc9a191 Add support for building Fruit as a dynamic library (dll) with MSVC. by Marco Poletti · 7 years ago
  36. f8d1e29 Cleanup hashset/hashmap-related Fruit code. by Marco Poletti · 7 years ago
  37. dcc51a5 Fix quoting of variables in ifs in CMake files. by Marco Poletti · 7 years ago
  38. 7c74201 Support compiling Fruit (and running tests) under Windows, using MinGW's GCC. by Marco Poletti · 7 years ago
  39. 04cf924 Various minor executable size optimizations. by Marco Poletti · 8 years ago
  40. 6414851 Re-inline some component_storage methods, the increase in object size is relatively small. by Marco Poletti · 8 years ago
  41. 0316a00 Reimplement the storage for PartialComponent to: by Marco Poletti · 8 years ago
  42. cf5c9f1 No longer inline some component-related code, to reduce the executable size of client code using Fruit. This yields a ~6x reduction in the benchmark with 100 classes (1.6MB -> 275KB). by Marco Poletti · 8 years ago
  43. 1789606 Remove a source file that was committed by mistake. This was causing build failures with Bazel (since it uses globs). by Marco Poletti · 8 years ago
  44. d07bd8a Fix an 'unused variable' warning reported by Clang (that was breaking the build with -W -Wall). by Marco Poletti · 8 years ago
  45. ba4d179 No longer include boost::hash{set,map} in fruit.h (not even as forward decls). by Marco Poletti · 8 years ago
  46. 3e576c2 No longer include normalized_component_storage.h in fruit.h. by Marco Poletti · 8 years ago
  47. 62f2574 Reduce the amount of code included when including fruit.h. by Marco Poletti · 8 years ago
  48. c6d5955 Use a singly-linked list instead of double-linked. This improves performance. by Marco Poletti · 8 years ago
  49. 29c8cf4 Save memory and slightly improve performance by storing a BindingData in 3*sizeof(void*) bytes instead of 4*sizeof(void*). by Marco Poletti · 8 years ago
  50. c1e07e4 Remove ${} from arguments to a CMake if to avoid expansion problems. by Marco Poletti · 8 years ago
  51. 7542a33 Don't link with libsupc++ on OS X, it causes a "library not found" error. by Marco Poletti · 8 years ago
  52. 205f9df Explicitly link against libsupc++. It's needed now when using Clang and libc++ (not sure why it wasn't before), and it's not harmful when using libstdc++. by Marco Poletti · 8 years ago
  53. 8db9216 Use lists with a custom allocator instead of caching vectors. by Marco Poletti · 8 years ago
  54. 9722c4d Optimize component construction (before normalization) by caching binding vectors instead of repeatedly destroying and reconstructing them. by Marco Poletti · 8 years ago
  55. 886289c Switch back to an STL hashmap for multibindings and debug-only maps, and avoid including Boost's hashmap in public headers to reduce the compile time of code using Fruit. by Marco Poletti · 8 years ago
  56. 31335f8 Use a custom FruitAssert macro instead of plain assert() so that client code can compile with/without NDEBUG but without the additional slowdown caused by assertions in Fruit. by Marco Poletti · 8 years ago
  57. 375ea5d Revert "Use custom allocators for hash sets/maps." by Marco Poletti · 8 years ago
  58. 802e590 Use custom allocators for hash sets/maps. by Marco Poletti · 8 years ago
  59. e99fdb7 Use sparsehash. by Marco Poletti · 8 years ago
  60. 0d0e95a Cast HybridVector to std::vector<> instead of std::vector<>&&. The latter doesn't compile on Clang. by Marco Poletti · 8 years ago
  61. ea234f7 Use the default constructor for NormalizedComponentStorage instead of defining one explicitly. by Marco Poletti · 8 years ago
  62. 16a4e81 Remove unused includes (detected by CLion). by Marco Poletti · 8 years ago
  63. a70a2e0 Minor changes to help CLion (and probably other IDEs) analyze the code of Fruit. by Marco Poletti · 8 years ago
  64. df07a49 Change the implementation of LambdaInvoker to avoid what was technically still undefined behavior (even though both GCC and Clang under Linux compiled fine). by Marco Poletti · 8 years ago
  65. 0d5e069 Get rid of the last per-compiler check, introducing a new FRUIT_HAS_CXA_DEMANGLE configure macro. by Marco Poletti · 8 years ago
  66. 66906ac Some changes towards support of additional compilers/platforms (notably Intel C++ on Linux, Apple Clang on OS X and MSVC on Windows). by Marco Poletti · 8 years ago
  67. f289510 Add configure-time checks on compiler and STL features, and use the results of those in macros in Fruit code, instead of checking for specific compilers and/or versions. by Marco Poletti · 8 years ago
  68. 44226af Allow building fruit statically by Maxwell Koo · 8 years ago
  69. f41d236 Remove code that was (technically) undefined behavior in LambdaInvoker (it broke strict aliasing rules). by Marco Poletti · 8 years ago
  70. e464713 Complete support for annotated types, with tests (and fixes for bugs that slipped in the previous commit due to lack of tests). by Marco Poletti · 9 years ago
  71. 4250ef6 Include cstdlib in demangle_type_name.cpp. This fixes a compilation problem on OS X, see https://github.com/google/fruit/issues/3 . by Marco Poletti · 9 years ago
  72. b91b406 Fix compile errors with Clang that were not reported by GCC. by Marco Poletti · 9 years ago
  73. 53f867e Remove unused constructor of NormalizedComponentStorage, inline the now-redundant init() method. by Marco Poletti · 9 years ago
  74. f106504 InjectorStorage: in the constructor from a Component, create a shallow copy instead of moving the SemistaticGraph. by Marco Poletti · 9 years ago
  75. 5c354a6 No longer consider fruit::Requirements<...> as one of the exposed types when determining what binding compressions to perform. Pass the list of exposed types as an std::vector instead of an std::initializer_list, allowing getTypeIdsForList to work. by Marco Poletti · 9 years ago
  76. d83763e Rename fruit::impl::Vector to HybridVector, use it for ComponentStorage.compressed_bindings instead for std::vector. by Marco Poletti · 9 years ago
  77. 979c940 Add a FixedSizeVector class and use it in FixedSizeAllocator to keep track of allocations. Avoids 1 branch per injection for types that are not trivially destructible and not externally allocated. by Marco Poletti · 9 years ago
  78. a85fc03 Keep track of what bindings need an allocation, to reduce the space estimate for the fixed-size allocator. by Marco Poletti · 9 years ago
  79. 1b2a208 Refactor the allocator construction, making the interface more high-level and adding more checks when FRUIT_EXTRA_DEBUG is enabled. by Marco Poletti · 9 years ago
  80. bb7442f Fix bug in binding compression in a corner case where the binding compression I->C must be undone when C is in the late bindings together with a non-I type depending on C. by Marco Poletti · 9 years ago
  81. 0bfbe05 Reorganize the code, notably move BindingDataNodeIter to InjectorStorage. by Marco Poletti · 10 years ago
  82. 2a1a581 Factor out a Vector class from ComponentStorage. by Marco Poletti · 10 years ago
  83. 9491d65 Switch to the lowercase_with_underscores style for variables and fields (before some used the lowerCamel case instead). by Marco Poletti · 10 years ago
  84. b829323 Rename singleton->object throughout, plus other minor comment fixes. by Marco Poletti · 10 years ago
  85. 85aea00 Rename typeRegistry->bindings, typeRegistryForMultibindings->multibindings throughout. by Marco Poletti · 10 years ago
  86. eedc2a5 Remove the multibindingDeps vector from ComponentStorage. Each MultibindingData stores the deps anyway. by Marco Poletti · 10 years ago
  87. 93372ce Inline trivial methods of ComponentStorage into component.defn.h. by Marco Poletti · 10 years ago
  88. 224bd9c First part of the refactoring of ComponentStorage, mostly moving logic into InjectorStorage. by Marco Poletti · 10 years ago
  89. 4ac3c8e Factor common code in individual bindings in component_storage.defn.h into a new constructObject() method in InjectorStorage. Now the allocator can be private. by Marco Poletti · 10 years ago
  90. 5c913af Split out the allocator part of InjectorStorage into a separate FixedSizeAllocator class. by Marco Poletti · 10 years ago
  91. 58e2ec2 First implementation of binding compression; reduces injection time by ~35% when using virtual destructors. by Marco Poletti · 10 years ago
  92. 050d600 Optimize SemistaticGraph using shallow copy semantics to share data with the NormalizedComponent. Decreases injection time by ~15%. by Marco Poletti · 10 years ago
  93. 5c1bf6d SemistaticGraph now stores internal IDs using a SemistaticGraphInternalNodeId struct. This is in preparation of the upcoming SemistaticGraph optimization. by Marco Poletti · 10 years ago
  94. 181cbe2 Changes in preparation of making SemistaticGraph non-copyable. by Marco Poletti · 10 years ago
  95. 5200558 Make InjectorStorage and NormalizedComponentStorage non-movable/copyable, in preparation of future optimizations. by Marco Poletti · 10 years ago
  96. 8fb03fa Move the component normalization logic into InjectorStorage, and refactor InjectorStorage to prepare for the StaticMap optimization. by Marco Poletti · 10 years ago
  97. 4e9594b InjectorStorage now stores the type registry (for bindings and multibindings) separately, instead of storing a NormalizedComponentStorage. This is in preparation for future optimizations. by Marco Poletti · 10 years ago
  98. a0eda10 Make SemistaticGraph compile in debug mode when using a type different from TypeId as key. by Marco Poletti · 10 years ago
  99. d09ec5b Document that the default constructor of Semistatic{Map,Graph} constructs an invalid object. Remove the default constructor of NormalizedComponentStorage. by Marco Poletti · 10 years ago
  100. 757c78f Move code from semistatic_map.cpp to semistatic_map.templates.h. Add a IN_FRUIT_CPP_FILE to ensure that .templates.h files are only included by Fruit cpp files. by Marco Poletti · 10 years ago