File Release Notes and Changelog
Release Name: 1.6.3
Notes:
Changes:
Spirit Change Log
1.8.3
* Config correction for Sun C++ by Steve Clamage (see this link).
* Fixed multi_pass_iterator for 64 platforms, where sizeof(int) != sizeof(ptr_type).
Fixed bug that prevents the use of closures with grammars with multiple entry points,
reported by David Pierre
* Fixed bug that prevented embedding of grammars with multiple entry points,
reported by David Pierre
* Added '\0' to the set of valid escaped characters for escape_ch_p.
* Fixed a switch_p bug when used with a phoenix::actor as the conditional
expression.
* __LINE__ macro now gets expanded in BOOST_SPIRIT_ASSERT_EXCEPTION
* Fixed a bug in the intersection parser reported by Yusaku Sugai
* The symbol parser uses the null character internally. Checks were added so that:
* tst.add asserts if string contains the null character
* tst.find doesn't match null characters in the input
* Fixed match_attr_traits.ipp to allow non-POD to pass through. The previous
version taking in the ellipsis "..." does not allow PODs to pass through.
* Allow evaluation to int as condition to if_p parser.
* Applied performance improvement changes to the PT/AST code as suggested by
Stefan Slapeta.
* Fixed several problems with AST tree node directives (inner_node_d[],
discard_first_node[], discard_last_node[] and infix_node_d[]).
1.8.2
Maintenance release (almost the same as 1.8.1 plus a few fixes here and there)
* Fixed bug where a match<T> is a variant.
* added Jamfile/Jamrules from CVS to spirit-1.8.1/
* added boost-build.jam from boost to spirit-1.8.1/
* disabled template multi-threading in libs/spirit/test/Jamfile
* added a boost-header-include rule (from spirit-header-include) pointing to miniboost in libs/spirit/test/Jamfile
* Fixed if_p inconsistency
1.6.2
The Spirit 1.6.2 release is a bug-fix release only, no new features were introduced.
* wchar_t friendly implementation of graph_p
* Modified escape_char_parser::parse() to use a static parser instead of a rule. This will make it more friendly to use in trees. It should also be a little more efficient.
* Moved to Boost Software license 1.0.
* workaround for Error 322 name lookup in base class specialization finds type
* fixed limit_d bug
* [numerics] Workaround for aC++
* Fixed a bug in the switch_p parser.
* Fixed a EOI problem in multi_pass
* added Jamfile/Jamrules from CVS to spirit-1.6.1/
* added boost-build.jam from boost to spirit-1.6.1/
* disabled template multi-threading in libs/spirit/test/Jamfile
* added a boost-header-include rule (from spirit-header-include) pointing to miniboost in libs/spirit/test/Jamfile
1.8.1 (Released with Boost 1.32.0)
The Spirit 1.8.1 release is a bug-fix release only, no new features were introduced.
* Spirit now requires at least Boost 1.32.0 to compile correctly
* Removed the support for the older iterator adaptor library and
* Moved to use the new MPL library
* Spirit was moved to use the Boost Software License 1.0.
* Fixed several parsers to support post-skips more correctly.
* Fixed a no_node_d[] bug.
* Fixed a bug in shortest_d[].
* Fixed a bug in limit_d[].
* Fixed parser traversal meta code.
* Fixed several bugs in switch_p.
* Fixed AST generating problems, in particular with the loops related parsers.
* Fixed several bugs in the multi_pass iterator.
o Fixed a problem, when the used base iterator returned a value_type and not a reference from its dereferencing operator.
o Fixed iterator_traits problem
o Fixed an EOI problem
o Fixed a bug, when used with std::cin
* Found a bug in grammar.ipp when BOOST_SPIRIT_SINGLE_GRAMMAR_INSTANCE is defined
* Rewritten safe_bool to use CRTP - now works also on MWCW, fixed several bugs with the implementation.
* Fixed and extended the debug diagnostics printed by the parse tree code.
1.8.0 (Released with Boost 1.31.0; Includes unreleased 1.7.1)
* Fixed a wchar_t problem in the regex_p parser.
* removed code and workarounds for old compilers (VC6/7 and Borland)
* Changed license to the new boost license.
* Modified escape_char_parser::parse() to use a static parser instead of a rule. This will make it more friendly to use in trees. It should also be a little more efficient.
1.7.1 (Unreleased; becomes 1.8.0)
* Added a full suite of predefined actors.
* Moved rule_alias and stored_rule from core/non-terminal to dynamic.
Made as_parser a public API in meta/as_parser.hpp
* Separated Core.Meta into its own module
* Refactored Utility module
Moved some files into Utility.Parsers
* utilities
o parsers
+ chset, regex, escape_char
confix, list, distinct
functor_parser
* support
o scoped_lock
flush_multi_pass
grammar_def
* actors
o assign
* Stored rules
* Added the switch_p and select_p dynamic parsers.
* Multiple scanner support for rules.
* The Rule's Scanner, Context and Tag template parameters can be specified in any order now. If a template parameter is missing, it will assume the defaults. See test/rule_tests.cpp.
* Introduced the possibility to specify more than one start rule from a grammar.
* Added an implementation of the file_iterator iterator based on the new Boost iterator_adaptors (submitted originally by Thomas Witt).
[The transition to the new iterator_adaptors should be complete now.]
* Added an implementation of the fixed_size_queue iterator based on the new Boost iterator_adaptors.
* wchar_t friendly implementation of graph_p
* made the copy-constructor and assignment-operator of parser_error_base public to clear VC7.1 C4673 warning. Added copy-constructor and assignment operator to parser_error for clarity of intent.
1.7.0
* assign(string) semantic action now works in VC6
* parsers need not be default constructible
* simplified aggregation of binary and unary parsers (more compiler friendly)
* epsilon workarounds for VC++
* match's attribute now uses boost.optional
* subrules can now have closures
* project wide 64 bit compatibility
* dynamic_parser_tag, reissue of rule.set_id(id);
* numerous primitives improvements and workarounds for problematic compilers
* proper complement (~) of single char parser primitives and chsets
* intuitive handling of lexeme_d
* wide_phrase_scanner_t typedef
* dynamic parser improvements (better support for more compilers)
* complete rewrite of the file_iterator (using boost.iterator_adapters). Supports memory maps wherever available
* multi_pass updates (compatibility with more compilers (e.g VC7) and more)
* position_iterator improvements
* better phoenix support for more compilers
* phoenix new_(...) construct
* new lazy_p parser
* utility.distinct parser (undocumented)
* chset operators improvements
* confix_p streamlining and improvements
* numerous Boost integration improvements
Bug fixes (1.7.0 and 1.6.0)
* Fixed. Using MSVC++6 (SP5), calling the assign action with a string value on parsers using the file_iterator will not work.
* Fixed: using assign semantic action in a grammar with a multi_pass iterator adaptor applied to an std::istream_iterator resulted in a failure to compile under msvc 7.0.
* Fixed: There is a bug in the "range_run<CharT>::set (range<CharT> const& r)" function in the "boost\spirit\utility\impl\chset\range_run.ipp".
* Fixed: handling of trailing whitespace bug (ast_parse/pt_parse related)
* Fixed: comment_p and end of data bug
* Fixed: Most trailing space bug:
* Fixed:
chset<>::operator~(range<>) bug
operator&(chset<>, range<>) bug
operator&(range<>, chset<>) bug
* Fixed: impl::detach_clear bug
* Fixed: mismatch closure return type bug
* Fixed: access_node_d[] and access_match_d[] iterator bugs
* Fixed a bug regarding threadsafety of Phoenix/Spirit closures.
* Added missing include files to miniboost