• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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