ChangeLog 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. Boost Phoenix: A Library for Functional Programming in C++
  2. http://www.boost.org/
  3. Copyright (c) 2005-2010 Joel de Guzman
  4. Copyright (c) 2010-2013 Thomas Heller
  5. Copyright (c) 2014-2015 John Fletcher
  6. Copyright (c) 2016 Kohei Takahashi
  7. Distributed under the Boost Software License, Version 1.0. (See accompanying
  8. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  9. -------------------------------------------------------------------------------
  10. TODO (known issues):
  11. - Create a full list of known issues.
  12. - Check all the examples and ammend as needed.
  13. - Update documentation to be consistent with examples.
  14. - Identify other boost libraries using Phoenix in order to
  15. decide on priorities for fixing the bugs below.
  16. One such library is Boost log.
  17. - Identify dependencies on other libraries and cooperate on bugs.
  18. It is now known that the other libraries which use Boost Phoenix
  19. are Boost Spirit and Boost Meta State Machine (MSM)
  20. - Add more examples
  21. - Develop documentation.
  22. A start has been made on this in release 3.1.0
  23. - Inspection report outstanding issues
  24. Fix libs/phoenix/doc/html/boostbook.css: Unlinked File
  25. - Investigate fixes needed for the following bugs
  26. (all refer to phoenix though not all may be in fact phoenix bugs
  27. #9742 (NEW)
  28. #9291, #9260, #8820, #8800
  29. #8558, #8504, #8187, #8156, #7996
  30. #7953, #7946, #7481, #7480, #7423
  31. #7391, #7356, #6911, #6848,
  32. #6202, #6133, #6026, #5687
  33. - Feature requests
  34. #7730 Potential fixes for this have been removed for further work.
  35. #7633, #5541
  36. - Complete work on the following under investigation
  37. #9363, #9362, #8564, #7199
  38. - #5875 local variable in phoenix let discards value
  39. This seemed already fixed but is not doing well in tests.
  40. Added test bug5875 - test withdrawn for further checking.
  41. -------------------------------------------------------------------------------
  42. CHANGELOG
  43. - DEVELOP
  44. - Many of components now supports C++11 variadic templates.
  45. This is not a breaking change.
  46. - Boost 1.59.0
  47. - Support for <unordered_set> and <unordered_map>
  48. This involves the following changes.
  49. phoenix/config.hpp - New section with the following description:
  50. This section is to sort out whether hash types or unordered types
  51. are available. This depends on whether stdlib or libc++ is being used
  52. and also whether C++11 or C++03 is being used.
  53. Client code should contain this:
  54. #ifdef BOOST_PHOENIX_HAS_HASH
  55. #include BOOST_PHOENIX_HASH_SET_HEADER
  56. #include BOOST_PHOENIX_HASH_MAP_HEADER
  57. #endif
  58. #ifdef BOOST_PHOENIX_HAS_UNORDERED_SET_AND_MAP
  59. #define BOOST_PHOENIX_UNORDERED_SET_HEADER <unordered_set>
  60. #define BOOST_PHOENIX_UNORDERED_MAP_HEADER <unordered_map>
  61. #endif
  62. The client code can then chose the implementation provided.
  63. See the example in test/stl/querying_find2.cpp
  64. This example file has been adjusted for a problem with MSVC 10
  65. Modified files:
  66. phoenix/stl/algorithm/detail/has_find.hpp
  67. New files:
  68. phoenix/stl/algorithm/detail/is_unordered_set_or_map.hpp
  69. phoenix/stl/algorithm/detail/std_unordered_set_or_map_fwd.hpp
  70. New test file:
  71. phoenix/test/algorithm/querying_find2.cpp
  72. Support for retrieving the return type of boost::phoenix::function objects.
  73. This is needed in the lazy functionality.
  74. Modified file: boost/phoenix/function/function.hpp
  75. Revised version of lazy functionality with added functions.
  76. Modified files in boost/phoenix/function:
  77. lazy_operator.hpp lazy_prelude.hpp lazy_reuse.hpp
  78. New files:
  79. lazy_signature.hpp lazy_smart.hpp
  80. New test files:
  81. lazy_compose_tests.cpp lazy_fold_tests.cpp lazy_scan_tests.cpp
  82. - Feature enhancements #5604 Sequenced statements of a catch_ statement is
  83. now able to handle thrown exception via local variables.
  84. Modified files:
  85. boost/phoenix/statement/try_catch.hpp
  86. Modified test files:
  87. exceptions.cpp
  88. - V3.2.0 in Boost 1.58.0
  89. - patch for #10927 in test/stdlib/cmath.cpp
  90. - patch for #11085 in test/function/function_tests.cpp
  91. - Bump version number to 3.2.0 in version.hpp.
  92. - New header files in boost/phoenix/function
  93. These are the first versions of the lazy functionality being introduced.
  94. This is reimplementation of the ideas in FC++ on top of Phoenix.
  95. The Phoenix code used is Phoenix.Function, along with Boost.Function.
  96. lazy_prelude.hpp This is the top level header and also has prelude functions.
  97. lazy_operator.hpp This defines lazy operators such as plus and minus.
  98. lazy_list.hpp This defines list<T> a lazy list class and associated code.
  99. lazy_reuser.hpp This defines the reuser functions used in the code.
  100. - New tests for lazy functionality.
  101. test/include/function/lazy_headers Test of the header structure.
  102. test/function/lazy_list_tests Simple tests of list<T>.
  103. test/function/lazy_list2_tests More tests of list<T>.
  104. - Develop documentation for version 3.2.0
  105. This includes a new section on the lazy list implementation.
  106. - Fixed name clash by renaming 'at' to be 'at_' because the name 'at' is
  107. used in phoenix/stl/container/container.hpp.
  108. - Fixed an unused typedef in phoenix/scope/let.hpp
  109. - contributed by Kohei Takahashi
  110. - V3.1.1
  111. - Bump version number to 3.1.1 in version.hpp and branch for release.
  112. - New tests for lazy functions using existing phoenix/function capability.
  113. lazy_argument_tests, lazy_make_pair_tests, lazy_templated_struct_tests
  114. - New example bind_goose.cpp comparing boost.bind and boost.phoenix.bind.
  115. - Changes to let_tests and more_let_tests to avoid failing cases.
  116. - Updates to documentation.
  117. - V3.1.0
  118. - Bump version number to 3.1.0 in version.hpp and branch for release.
  119. - New file boost/phoenix/config.hpp to centralise configuration issues.
  120. At the moment it simply includes boost/config.hpp
  121. - Changes to some tests to identify problems with several compilers.
  122. - Add more cases to cmath test to test failures on some compilers.
  123. - #7165 and #7166 Change tests to phoenix/core.hpp to reduce compiler load
  124. - Testing fix for failures of tests as follows
  125. bind_member_function_tests, bind_mf2_test, bind_test
  126. with compilers including gcc 4.9.0 and clang 3.5
  127. This involves use of boost::lazy_disable_if to resolve
  128. the choice of overloaded bind functions in
  129. bind/bind_member_variable.hpp
  130. bind/bind_member_function.hpp Add reverse test boost::lazy_enable_if
  131. This resolves a smaller number of failures.
  132. - #9742 New tests for_each and for_test to attempt to resolve this.
  133. - bind_rv_sp_test changed to give workaround for MSVC 8,9,10,
  134. This removes a COMDAT error which does not occur with boost/bind.
  135. - V3.0.6
  136. - Fixed bug in example/container_actor.cpp in end() function.
  137. - Fixed bug4853 and 5626 - added header <utility> for std::forward.
  138. - Fixed bug4853 - added header <iostream> for gcc 4.9 test
  139. - New Feature - boost::phoenix::display_expr(expr)
  140. In file boost/phoenix/core/debug.hpp
  141. and also included from boost/phoenix/core.hpp
  142. For now this drops through to the boost Proto version.
  143. I intend to add some more tags for better information.
  144. New test debug for the new header.
  145. KNOWN BUG - WARNING
  146. - New test more_let_tests to check for problems with losing temporary values.
  147. I think this is a serious problem which is affecting some compilers
  148. and not others. I have seen the problem with Clang 3.4 although not
  149. when run with C++11. These tests should find out where else there is a
  150. problem. At the moment these tests are passing.
  151. I now have cases which fail for Clang 3.4 with optimization -O2 but not
  152. without optimization. Under investigation.
  153. - V3.0.5
  154. - Documentation
  155. Start on fixing main documentation - whats new.
  156. Fixed reference for FC++ in two locations.
  157. Fixed example for nested let (#8564)
  158. - Fixed #9113 warnings on -Wshadow
  159. Fixed all warnings
  160. - Fixed #8298 Clang error with Boost Phoenix Local Name Assignment using C++11
  161. This is not expected to compile in the form supplied.
  162. Added test bug8298 to show correct operation.
  163. Added test bug8298f to show expected failure.
  164. - Fixed #7730 Generic specializations of is_nullary for custom terminals
  165. are not possible
  166. Fix to specialize custom terminals is now set as a default.
  167. Define BOOST_PHOENIX_NO_SPECIALIZE_CUSTOM_TERMINAL not to use this.
  168. Test bug7730 tests the not use case.
  169. - V3.0.4
  170. - Inspection report outstanding issues
  171. Fixed copyright and licence in preprocessed files for function_equal
  172. - boost/phoenix/version.hpp Added BOOST_PHOENIX_VERSION_NUMBER
  173. when boost/predef is available.
  174. - Fixed tabs in ChangeLog!!
  175. - Fixed #9295 PHOENIX_LIMIT macro clash: property_tree -- log/sink
  176. This will not show up in phoenix - used in spirit/classic
  177. - Fixed #8704 Using Phoenix lambdas on top of custom Proto expressions
  178. This works for C++11 only.
  179. Test cmath applies to this.
  180. - Fixed #7624 Deduction failure
  181. This works for C++11 and has a workaround for C++03
  182. Test bug7624 tests both versions.
  183. - Fixed #7166 Phoenix unconditionally sets BOOST_PROTO_MAX_ARITY
  184. using patch supplied
  185. Added test bug7166
  186. - Fixed #7165 cannot change BOOST_PHOENIX_LIMIT
  187. using patch supplied
  188. Added test bug7165
  189. - Fixed #6665 not-unary phoenix stl cmath adapted functions not working
  190. Added test cmath
  191. - V3.0.3
  192. - Fixed #5824 Block statement headers and docs
  193. Added test bug5824
  194. - V3.0.2
  195. - Fixed #5715 sequencing with comma does not work for boost::phoenix::bind
  196. Added test bug5715
  197. - V3.0.1
  198. - Started CHANGELOG
  199. - Fixed bug_000008 to use phoenix headers correctly.
  200. This fixes it for most systems but not for
  201. Clang Linux C++11 with libstdc++ where the problem seems
  202. to be in boost/thread.
  203. Clang Linux C++11 with libc++ works.
  204. - Fixed #9113 warnings on -Wshadow (some fixed)
  205. - Fixed #9111 unused parameter warning in phoenix bind
  206. - Fixed #8417 Minor documentation
  207. - Fixed #7181 MSVC warnings
  208. - Fixed #6268 phoenix and fusion operator < and added test bug6268
  209. - Fixed many issues from Inspection report
  210. phoenix/core/detail/phx_result.hpp Fixed clash with Apple macro 'check'
  211. Fixed copyright and licence issues
  212. Fixed tabs in some files
  213. Deleted some empty unused files
  214. Added tests for includes not being tested.
  215. Boost V1.55:
  216. - V3.0.0
  217. - Boost Phoenix as passed on to new maintainer John Fletcher