1. 1ac6414 Deprecate Component's copy constructor. With the new-style install() syntax Components can be lightweight, so when a copy is desired they can just be re-created instead. This should be a very rare use case anyway. Removing this copy constructor will allow us (in the next major version of Fruit) to remove the code to copy components and lazy component arguments, reducing the object size for code using Fruit. by Marco Poletti · 7 years ago
  2. 5f439ab Fix a bug in the Fruit testing code that potentially caused some deprecation to be ignored in tests. by Marco Poletti · 7 years ago
  3. 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
  4. 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
  5. c3334a5 More class moves/renames in preparation for the upcoming change in the representation of bindings. by Marco Poletti · 7 years ago
  6. 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
  7. 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
  8. a70b399 Print more information for failures and unexpected conditions in format_bench_results.py. by Marco Poletti · 7 years ago
  9. 4c157a5 Ignore the --continue-benchmark flag in the run_benchmarks.py script if there is no pre-existing result file (instead of exiting with an error). by Marco Poletti · 7 years ago
  10. e5edea0 Support benchmarking the old/new PartialComponent::install methods. by Marco Poletti · 7 years ago
  11. 22938ee Allow MSVC's type format in test_install_component_functions_loop (for real this time). by Marco Poletti · 7 years ago
  12. 464ec21 Allow MSVC's type format in test_install_component_functions_loop. by Marco Poletti · 7 years ago
  13. 5d4dc48 Pass the correct path to py.test for Travis CI tests. ATM the tests end up being run twice. by Marco Poletti · 7 years ago
  14. 6ea962d Remove superfluous param names in defaulted constructors/methods. For some reason, Apple Clang considers the first (at least) as an unused parameter and emits a warning about that. by Marco Poletti · 7 years ago
  15. d1a7059 Fix a typo that was not meant to be committed (and was causing a build failure). by Marco Poletti · 7 years ago
  16. c6fea76 Implement de-duping and loop checking for the new-style install() method. by Marco Poletti · 7 years ago
  17. a2ba2bc Update the expected MSVC error in test_install_with_args_error_not_copy_constructible. by Marco Poletti · 7 years ago
  18. 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
  19. c3e8591 Use 4 xdist workers for each test when running tests with Bazel. This reduces the overall runtime by ~25%. by Marco Poletti · 7 years ago
  20. e59ecde (Actually) fix tests under Bazel. by Marco Poletti · 7 years ago
  21. e671f22 Set PATH_TO_COMPILED_FRUIT_LIB when running tests with Bazel too (it's now required, otherwise the tests will fail). by Marco Poletti · 7 years ago
  22. 37fa6da Make Fruit tests work again when using MinGW on Windows. by Marco Poletti · 7 years ago
  23. feca1e0 Specify "-n 1" explicitly when running py.test in Appveyor, otherwise the python import paths would be different and all tests would fail. by Marco Poletti · 7 years ago
  24. e303871 Fix syntax errors in the test_old_style_deprecation_error test, that were causing test failures on non-Valgrind test runs. by Marco Poletti · 7 years ago
  25. 9c7dc58 Remove the BUILD_TESTS_IN_RELEASE_MODE CMake flag, now there's almost nothing to build in the tests/ directory, so we'll always build it as part of the "all" target, even in release mode. by Marco Poletti · 7 years ago
  26. e583926 Fix a typo in fruit's testing code that was causing test failures when testing under Valgrind. by Marco Poletti · 7 years ago
  27. 8105223 Skip the test_old_style_deprecation_error test in release mode, warnings are not necessarily errors there. by Marco Poletti · 7 years ago
  28. 2086e94 Pass the sources path explicitly to the pytest invocation when running tests in Travis CI. by Marco Poletti · 7 years ago
  29. fb3c202 Avoid copying testing files to the build directory. by Marco Poletti · 7 years ago
  30. a8fa8a9 Update the documentation on how to run Fruit's tests on Windows. by Marco Poletti · 7 years ago
  31. 6526573 Skip the test test_defn_file_inclusion on Windows, it doesn't work. by Marco Poletti · 7 years ago
  32. bee4d5a Various test fixes: by Marco Poletti · 7 years ago
  33. 3e21dcf Make the Fruit deprecated marker work in Visual Studio. by Marco Poletti · 7 years ago
  34. 6b0ec35 Skip the test_old_style_deprecation_error test on GCC 4.8.x, it doesn't work (the code compiles cleanly instead of reporting a deprecation warning). by Marco Poletti · 7 years ago
  35. fc9b19a (Actually) run py.test instead of py.test-3 on OS X. by Marco Poletti · 7 years ago
  36. e5c9c96 Run py.test instead of py.test-3 on OS X. by Marco Poletti · 7 years ago
  37. 9b97fde pip3 on OS X doesn't install in ~/.local/bin, switch to the (hopefully) right directory in the Travis CI test script. by Marco Poletti · 7 years ago
  38. 38bd040 Add ~/.local/bin to PATH on OS X before running CI tests. by Marco Poletti · 7 years ago
  39. 36275c3 Don't run tests in parallel in AppVeyor, to avoid test failures. by Marco Poletti · 7 years ago
  40. 70a9c33 Fix a bug in the postubmit script used to run CI tests. by Marco Poletti · 7 years ago
  41. e00461f Migrate all Fruit tests to pytest, to improve parallelization. After this change, it's no longer possible to run Fruit tests via CTest. by Marco Poletti · 7 years ago
  42. 11a9561 Update the example code and doxygen comments to use the new-style install() methods. by Marco Poletti · 7 years ago
  43. 387601c Fix the logic that detects whether [[deprecated]] and __attribute__((deprecated)) are supported by the compiler. Some compilers only accept them in function/method declarations, not on definitions. by Marco Poletti · 7 years ago
  44. 9694cc7 Match any character (.) when expecting an open/closed quote in compiler error messages. The quote character might be different depending on the locale. by Marco Poletti · 7 years ago
  45. c9e7a0b Mark the old PartialComponent::install() method as deprecated. by Marco Poletti · 7 years ago
  46. 050763e Document how to build and run Fruit in Visual Studio. by Marco Poletti · 7 years ago
  47. bba39ca Allow MSVC-style errors in test_install.py. by Marco Poletti · 7 years ago
  48. a636283 Make HasDuplicatesHelper compile on MSVC again. by Marco Poletti · 7 years ago
  49. f67a5bc Extract a 'constant' in HasDuplicates, trying to help MSVC parse that code (while GCC and Clang can parse it just fine already). by Marco Poletti · 7 years ago
  50. e4030d5 Reorder the CI tests in AppVeyor putting MSVC first, since it's the one most likely to fail. by Marco Poletti · 7 years ago
  51. 55b5410 Add a wrapping Id<> in HasDuplicates, to (try to) fix compilation in Visual Studio. by Marco Poletti · 7 years ago
  52. bfd69aa Test changes to (try to) make test_install pass on OS X. by Marco Poletti · 7 years ago
  53. 3262fef Fix a syntax error in extras/scripts/postsubmit.bat. by Marco Poletti · 7 years ago
  54. 5faca28 Print the contents of CMakeError.log after running CMake for CI tests on Windows. This helps investigate why a CHECK_CXX_SOURCE_COMPILES check failed. by Marco Poletti · 7 years ago
  55. 6cd80e9 Add another allowed compiler error to test_install_with_args_error_not_hashable (this different error format is used by older versions of GCC, e.g. 4.8.4). by Marco Poletti · 7 years ago
  56. 5de0d4f Simplify the new install() API. by Marco Poletti · 7 years ago
  57. 09843e0 Add a new PartialComponent#install() method that takes a function + args. This has the potential of being much more efficient than the one that takes a Component; however for now it's just implemented as a wrapper around the old install() method. by Marco Poletti · 7 years ago
  58. fef4823 Use a SumAll metafunction instead of a staticSum constexpr function, since constexpr functions are slower in GCC (at least in GCC 6). by Marco Poletti · 7 years ago
  59. 0a1436f Remove the constexpr-based staticOr, use the StaticOr metafunction instead. staticOr is significantly slower under GCC. by Marco Poletti · 7 years ago
  60. a554cfa Add a analyze_template_instantiations_clang_diagnostics.py script, to analyze call-graphs for Fruit compile-time metafunctions. by Marco Poletti · 7 years ago
  61. 35b7ac4 Add the "CII Best Practices" badge by poletti-marco · 7 years ago
  62. 0a7476c Add a --baseline-benchmark-results flag to the format_bench_results.py script, to allow easy comparisons of benchmark results. by Marco Poletti · 7 years ago
  63. fdc7990 When injecting shared_ptr<>s dependencies for an object, first inject (pointers to) all dependencies and then construct all the shared_ptr<>s at the end, before calling the constructor/provider. This helps the optimizer optimize out increments/decrements/checks of the shared_ptr<> reference count (this is useful at least for GCC 6; e.g. Clang 4 already optimized those out without this re-organization of the code). by Marco Poletti · 7 years ago
  64. 35805fa Disable MSVC's C4714 warning ("function marked as __forceinline not inlined"). by Marco Poletti · 7 years ago
  65. 98a444c Ignore MSVC's warning C4141 when building Fruit (marking a function/method with both 'inline' and '__forceinline' causes this warning in MSVC). by Marco Poletti · 7 years ago
  66. dfcdced If __attribute__((always_inline)) is not supported by the compiler, use MSVC's __forceinline if that's available and fallback to nothing if neither is supported. by Marco Poletti · 7 years ago
  67. 1e44d55 Fix a performance bug that was preventing binding compression from working. E.g. with the 100 classes benchmark under Clang 4.0, this fix reduces the per-request injection time by 27%. by Marco Poletti · 7 years ago
  68. 9f2423a Don't run Boost.DI benchs with Clang 3.6, it doesn't work. by Marco Poletti · 7 years ago
  69. c95dad6 Add some debug prints (executed only with FRUIT_EXTRA_DEBUG) to help debug compressed bindings. by Marco Poletti · 7 years ago
  70. d1b46ee Extract the lambdas used to create injected objects from create*BindingDataFor* methods, into static methods. For some reason, Clang (4.0 at least) would otherwise generate an __invoke method wrapping each lambda for no apparent reason. This change reduces (slightly) the executable size. by Marco Poletti · 7 years ago
  71. 9198ba0 Force inlining of some functions/methods that will only be called once, and use std::forward to forward arguments. This reduces the code size and helps the optimizer. The lack of inlining was causing an 8x slowdown of the per-request injection time with Clang and a 2.5x increase in the executable size. by Marco Poletti · 7 years ago
  72. 55c3ce6 Switch from unittest.skipUnless to pytest.mark.skipif. The former doesn't work anymore now that Fruit tests are using pytest. by Marco Poletti · 7 years ago
  73. 03352bb Disable the pytest cache when running tests under bazel, it causes errors (read-only file system) when running tests with sandboxing enabled. by Marco Poletti · 7 years ago
  74. 63e309e When running CI tests, run bazel test with the --test_output=errors flag, so that it reports errors in the log. by Marco Poletti · 7 years ago
  75. aba33ad Add support for list-valued benchmark dimensions in the format_bench_results.py script. by Marco Poletti · 7 years ago
  76. b5d8769 Change fruit_wiki_benchs_fruit.yml to run some benchmarks under more compilers. by Marco Poletti · 7 years ago
  77. 2abc4db Fix a bug in the run_benchmarks.py script that caused some dimensions not to be exported when running a fruit_executable_size benchmark. by Marco Poletti · 7 years ago
  78. 4c5d6d3 Change Travis CI tests to use Ubuntu 17.04 instead of 16.04 and Clang 4.0 instead of 3.9. by Marco Poletti · 7 years ago
  79. 0e7cb0e Add a Dockerfile for Ubuntu 17.04, for CI testing in Travis CI. by Marco Poletti · 7 years ago
  80. ecb092b Update the Dockerfiles used for CI testing on Linux, adding Clang 4.0 and python3-setuptools. by Marco Poletti · 7 years ago
  81. 6ee6dcb No longer test using Ubuntu 15.10, 16.04 has been out for a while now. by Marco Poletti · 7 years ago
  82. e826123 Various updates to the benchmarking code: by Marco Poletti · 7 years ago
  83. 8aa3a2c Improve the Fruit test names for complex parameterized tests. by Marco Poletti · 7 years ago
  84. 4fdf228 Address a Clang 4.0 warning (so that Fruit compiles without warnings with Clang 4.0). by Marco Poletti · 7 years ago
  85. cb5c60f Migrate Fruit's end-to-end tests from nose2 to pytest, improving parallelization. by Marco Poletti · 7 years ago
  86. be74572 Go ahead when we fail to clean up temporary files in tests. This should fix the flakiness of the CI tests on Windows. by Marco Poletti · 7 years ago
  87. 4661e5e Add some more Required<>-related tests. by Marco Poletti · 7 years ago
  88. 552790f Report an error if Required<...> is passed as a non-first argument to Component/NormalizedComponent. This is not supported, and it was hard to figure out the issue before (in some cases the Required<> type was just ignored). Also add relevant tests. by Marco Poletti · 7 years ago
  89. b1e00d9 Add a note in fruit::Injector's conversion operator documentation explaining that it can't be used for annotated injection. Fixes issue #23. by Marco Poletti · 7 years ago
  90. d5191c6 Increase the DH_COMPAT level used for building deb packages to 5 (from 4) and move it to a debian.compat file. by Marco Poletti · 7 years ago
  91. a6ec192 Specify CMAKE_BUILD_TYPE explicitly when building binary packages for Fruit. by Marco Poletti · 7 years ago
  92. c7cfd02 Allow building Fruit with -DCMAKE_BUILD_TYPE={RelWithDebInfo,MinSizeRel}. by poletti-marco · 7 years ago
  93. 3df0bae Fix 'make install', a path was incorrect. Also start testing 'make install' in Travis CI, to catch this kind of issue sooner the next time. by Marco Poletti · 7 years ago
  94. 4be6b00 Merge pull request #43 from arj/master by poletti-marco · 7 years ago
  95. f5c96b3 Fix main binary include directory. by Robert Jakob · 7 years ago
  96. 321d2d4 Fix the AppVeyor build matrix: an entry set neither BOOST_DIR nor FRUIT_USES_BOOST=False, causing a build failure. by Marco Poletti · 7 years ago
  97. 5057598 Clean up the AppVeyor build matrix. Also, add tests with -DBUILD_SHARED_LIBS=False. by Marco Poletti · 7 years ago
  98. dc9a191 Add support for building Fruit as a dynamic library (dll) with MSVC. by Marco Poletti · 7 years ago
  99. 2481eed Use the MSVC 2015 image for AppVeyor tests with MinGW, AppVeyor's MSVC 2017 system image doesn't have MinGW ATM. by Marco Poletti · 7 years ago
  100. 7168d34 Add more debug prints to the AppVeyor test script. by Marco Poletti · 7 years ago