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