diff --git a/site-tools/boost_site/boostbook_parser.py b/site-tools/boost_site/boostbook_parser.py
index 79355288..b8bec51b 100755
--- a/site-tools/boost_site/boostbook_parser.py
+++ b/site-tools/boost_site/boostbook_parser.py
@@ -5,7 +5,7 @@
# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
import xml.dom.minidom, time
-from email.utils import parsedate_tz
+from email.utils import mktime_tz, parsedate_tz
class BoostBookParser:
def __init__(self, document = None):
@@ -35,14 +35,23 @@ class BoostBookParser:
if download_node:
download_item = self.get_child(download_node[0]).data
+ documentation = None
+ documentation_node = article_node.getElementsByTagName('documentation')
+ if documentation_node:
+ documentation = self.get_child(documentation_node[0]).data
+
+ status_item = None
+ status_node = article_node.getElementsByTagName('status')
+ if status_node:
+ status_item = self.get_child(status_node[0]).data
+
pub_date = article_node.getAttribute('last-revision').strip()
if not pub_date or pub_date[0] == '$':
pub_date = 'In Progress'
last_modified = time.time()
else:
- last_modified = parsedate_tz(pub_date)
- last_modified = time.mktime(last_modified[:-1]) - last_modified[-1]
+ last_modified = mktime_tz(parsedate_tz(pub_date))
description_xhtml = self.x(article_node)
@@ -52,7 +61,9 @@ class BoostBookParser:
'description_fragment' : description_xhtml,
'pub_date' : pub_date,
'last_modified' : last_modified,
- 'download_item' : download_item
+ 'download_item' : download_item,
+ 'documentation' : documentation,
+ 'status_item' : status_item
}
def x(self, node):
diff --git a/site-tools/boost_site/pages.py b/site-tools/boost_site/pages.py
index 1d8c6570..8ecdaabc 100755
--- a/site-tools/boost_site/pages.py
+++ b/site-tools/boost_site/pages.py
@@ -35,7 +35,7 @@ class Pages:
save_hashes[x] = self.pages[x].state()
boost_site.state.save(save_hashes, self.hash_file)
- def add_qbk_file(self, qbk_file, location):
+ def add_qbk_file(self, qbk_file, location, page_data):
file = open(qbk_file)
try:
qbk_hash = hashlib.sha256(file.read()).hexdigest()
@@ -58,6 +58,12 @@ class Pages:
record.qbk_hash = qbk_hash
record.dir_location = location
+ if 'type' in page_data:
+ record.type = page_data['type']
+ else:
+ record.type = 'page'
+ if record.type not in ['release', 'page']:
+ throw ("Unknown record type: " + record.type)
# You might be wondering why I didn't just save the rss items - would
# be able to save all the items not just the ones in the feed.
@@ -142,12 +148,13 @@ class Page:
if not attrs: attrs = { 'page_state' : 'new' }
+ self.type = attrs.get('type', None)
self.page_state = attrs.get('page_state', None)
self.flags = attrs.get('flags', '')
if self.flags:
- self.flags = set(self.flags.split(','))
+ self.flags = set(self.flags.split(','))
else:
- self.flags = set()
+ self.flags = set()
self.dir_location = attrs.get('dir_location', None)
self.location = attrs.get('location', None)
self.id = attrs.get('id', None)
@@ -156,6 +163,7 @@ class Page:
self.last_modified = attrs.get('last_modified')
self.pub_date = attrs.get('pub_date')
self.download_item = attrs.get('download')
+ self.documentation = attrs.get('documentation')
self.qbk_hash = attrs.get('qbk_hash')
self.rss_hash = attrs.get('rss_hash')
@@ -163,6 +171,7 @@ class Page:
def state(self):
return {
+ 'type': self.type,
'page_state': self.page_state,
'flags': ','.join(self.flags),
'dir_location': self.dir_location,
@@ -173,6 +182,7 @@ class Page:
'last_modified': self.last_modified,
'pub_date': self.pub_date,
'download': self.download_item,
+ 'documentation': self.documentation,
'qbk_hash': self.qbk_hash,
'rss_hash': self.rss_hash
}
@@ -188,12 +198,27 @@ class Page:
self.pub_date = values['pub_date']
self.last_modified = values['last_modified']
self.download_item = values['download_item']
+ self.documentation = values['documentation']
self.id = re.sub('[\W]', '_', self.title_xml).lower()
if self.dir_location:
self.location = self.dir_location + self.id + '.html'
self.dir_location = None
self.page_state = None
-
+
+ self.flags = set()
+
+ if self.type == 'release':
+ status = values['status_item']
+ if status == 'release':
+ status = 'released'
+ if not status and self.pub_date != 'In Progress':
+ status = 'released'
+ if status and status not in ['released', 'beta']:
+ print "Error: Unknown status: " + status
+ status = None
+ if status:
+ self.flags.add(status)
+
self.loaded = True
def web_date(self):
@@ -209,6 +234,8 @@ class Page:
def download_table(self):
if(not self.download_item):
return ''
+ if self.type == 'release' and ('beta' not in self.flags and 'released' not in self.flags):
+ return ''
match = re.match('.*/boost/(\d+)\.(\d+)\.(\d+)/', self.download_item)
if(match):
@@ -238,7 +265,10 @@ class Page:
output = ''
output = output + '
'
- output = output + '
Downloads
'
+ if 'beta' in self.flags:
+ output = output + '
Beta Downloads
'
+ else:
+ output = output + '
Downloads
'
output = output + '
Platform
File
'
for platform in ['unix', 'windows']:
@@ -260,9 +290,18 @@ class Page:
# If the link didn't match the normal version number pattern
# then just use the old fashioned link to sourceforge. */
- return '
diff --git a/users/history/old_versions.html b/users/history/old_versions.html
index 03568b1e..2a020c7d 100644
--- a/users/history/old_versions.html
+++ b/users/history/old_versions.html
@@ -130,7 +130,7 @@
the utility library.
-
+
1 Sep 1999
The category "Experimental" has been added to the library
diff --git a/users/history/version_1_14_2.html b/users/history/version_1_14_2.html
index 9427ecfb..87d8361f 100644
--- a/users/history/version_1_14_2.html
+++ b/users/history/version_1_14_2.html
@@ -40,7 +40,7 @@
"news-title">Version 1.14.2
@@ -239,7 +238,6 @@
supported. If you are still using one of these older compilers, please use
Spirit v1.6.x. See [@http://spirit.sf.net Spirit's Site] for more details.
-
@@ -261,7 +259,6 @@
For a complete list of changes see the Test Library
release notes.
-
+ Major interface changes and improvements, many of which are not backward
+ compatible. Please refer to the 1.32
+ changelog for the detailed information about upgrading to
+ the new version.
+
- Major interface changes and improvements, many of which are not backward
- compatible. Please refer to the 1.32
- changelog for the detailed information about upgrading to the
- new version.
-
+ gursoyatun
+ layout, from Jeremiah
+ Willcock and Doug Gregor of Indiana University.
+
+
+
+
+ kingordering,
+ from D. Kevin McGrath of Indiana University.
+
+
+
+
+ cuthillmckee
+ ordering has been
+ recast as an invocation of breadth
+ firstsearch
+ and now supports graphs with multiple components.
+
+
+
+
+ dijkstrashortest
+ paths now uses
+ a relaxed heap [61]
+ as its priority queue, improving its complexity to O(V log V) and
+ improving real-world performance for larger graphs.
+
+
+
+
+ readgraphviz
+ now has a new, Spirit-based parser that works for all graph types
+ and supports arbitrary properties on the graph, from Ron Garcia.
+ The old, Bison-based GraphViz reader has been deprecated and will
+ be removed in a future Boost release. writegraphviz
+ also supports dynamic properties.
+
+
+
+
+ subgraph: get_property now refers to the
+ subgraph property, not the root graph's property.
+
+
+
+
+ See the history
+ for additional changes and bug fixes.
+
- gursoyatun
- layout, from Jeremiah
- Willcock and Doug Gregor of Indiana University.
-
-
-
-
- kingordering,
- from D. Kevin McGrath of Indiana University.
-
-
-
-
- cuthillmckee
- ordering has been
- recast as an invocation of breadth
- firstsearch
- and now supports graphs with multiple components.
-
-
-
-
- dijkstrashortest
- paths now uses a
- relaxed heap [61]
- as its priority queue, improving its complexity to O(V log V) and improving
- real-world performance for larger graphs.
-
-
-
-
- readgraphviz
- now has a new, Spirit-based parser that works for all graph types and
- supports arbitrary properties on the graph, from Ron Garcia. The old,
- Bison-based GraphViz reader has been deprecated and will be removed
- in a future Boost release. writegraphviz
- also supports dynamic properties.
-
-
-
-
- subgraph: get_property
- now refers to the subgraph property, not the root graph's property.
-
-
-
-
- See the history
- for additional changes and bug fixes.
-
+ Option descriptions are now printed with word wrapping.
+
+
+
+
+ Command line parser can bypass unregistered options, instread of
+ throwing.
+
+
+
+
+ Removed support for "implicit" (optional) values.
+
+
+
+
+ New customization method 'command_line_parser::extra_style_parser'.
+ Unlike 'additional_parser', allows the user to parse several tokens
+ and return a vector of options, not just a single option.
+
+
+
+
+ Work with disabled exceptions.
+
+
+
-
-
-
- Option descriptions are now printed with word wrapping.
-
-
-
-
- Command line parser can bypass unregistered options, instread of throwing.
-
-
-
-
- Removed support for "implicit" (optional) values.
-
-
-
-
- New customization method 'command_line_parser::extra_style_parser'.
- Unlike 'additional_parser', allows the user to parse several tokens
- and return a vector of options, not just a single option.
-
+ Exceptions can be disabled by defining the macro BOOST_PTR_CONTAINER_NO_EXCEPTIONS
+ before including any header. This macro is defined by default if
+ BOOST_NO_EXCEPTIONS is defined.
+
+
+
+
+ Additional std::auto_ptr<T>
+ overloads added s.t. one can also pass std::auto_ptr<T> instead of only T*
+ arguments to member functions.
+
+
+
+
+ transfer()
+ now has weaker requirements s.t. one can transfer objects from ptr_container<Derived>
+ to ptr_container<Base>,
+
- Exceptions can be disabled by defining the macro BOOST_PTR_CONTAINER_NO_EXCEPTIONS
- before including any header. This macro is defined by default if BOOST_NO_EXCEPTIONS
- is defined.
-
-
-
-
- Additional std::auto_ptr<T>
- overloads added s.t. one can also pass std::auto_ptr<T> instead of only T* arguments to member functions.
-
-
-
-
- transfer()
- now has weaker requirements s.t. one can transfer objects from ptr_container<Derived>
- to ptr_container<Base>,
-
+ Boost.Python now automatically appends C++ signatures to docstrings.
+ The new docstring_options.hpp
+ header is available to control the content of docstrings.
+
+
+
+
+ stl_input_iterator, for
+ turning a Python iterable object into an STL input iterator, from
+ Eric Niebler.
+
+
+
+
+ Support for void*
+ conversions is added.
+
+
+
+
+ Integrated support for wrapping C++ functions built with the parameter
+ library; keyword names are automatically known to docsstrings.
+
+
+
+
+ Enhancements to the API for better embedding support (boost::python::import(),
+ boost::python::exec(),
+ and boost::python::exec_file()).
+
+
+
-
-
-
- Boost.Python now automatically appends C++ signatures to docstrings.
- The new docstring_options.hpp
- header is available to control the content of docstrings.
-
-
-
-
- stl_input_iterator, for turning
- a Python iterable object into an STL input iterator, from Eric Niebler.
-
-
-
-
- Support for void*
- conversions is added.
-
-
-
-
- Integrated support for wrapping C++ functions built with the parameter
- library; keyword names are automatically known to docsstrings.
-
-
-
-
- Enhancements to the API for better embedding support (boost::python::import(),
- boost::python::exec(),
- and boost::python::exec_file()).
-
+ Wave now correctly recognizes pp-number tokens as mandated by the
+ C++ Standard, which are converted to C++ tokens right before they
+ are returned from the library.
+
+
+
+
+ Several new preprocessing hooks have been added. For a complete description
+ please refer to the related documentation page: The
+ Context Policy.
+
+
+
+
+ Shared library (dll) support has been added for the generated Wave
+ libraries.
+
+
+
+
+ The overall error handling has been improved. It is now possible
+ to recover and continue after an error or a warning was issued.
+
+
+
+
+ Support for optional comment and/or full whitespace preservation
+ in the generated output stream has been added.
+
+
+
+
+ The Wave library now performs automatic include guard detection to
+ avoid accessing header files more than once, if appropriate.
+
+
+
+
+ Full interactive mode has been added to the Wave tool. Now the Wave
+ tool can be used just like Python or Perl for instance to interactively
+ try out your BOOST_PP macros. Additionally it is now possible to
+ load and save the current state of an interactive session (macro
+ tables et.al.).
+
+
+
+
+ The overall performance has been improved by upto 40-60%, depending
+ on the concrete files to process.
+
+
+
+
+ Support for new pragmas has been added allowing to control certain
+ library features from inside the preprocessed sources (partial output
+ redirection, control of generated whitespace and #line directives).
+
+
+
+
+ Optional support for #pragma message "..." has been added.
+
+
+
+
+ This version also includes a number of bug fixes and usage improvements.
+ For a complete list of changes, see the libraries change
+ log.
+
+
+
-
-
-
- Wave now correctly recognizes pp-number tokens as mandated by the C++
- Standard, which are converted to C++ tokens right before they are returned
- from the library.
-
-
-
-
- Several new preprocessing hooks have been added. For a complete description
- please refer to the related documentation page: The
- Context Policy.
-
-
-
-
- Shared library (dll) support has been added for the generated Wave
- libraries.
-
-
-
-
- The overall error handling has been improved. It is now possible to
- recover and continue after an error or a warning was issued.
-
-
-
-
- Support for optional comment and/or full whitespace preservation in
- the generated output stream has been added.
-
-
-
-
- The Wave library now performs automatic include guard detection to
- avoid accessing header files more than once, if appropriate.
-
-
-
-
- Full interactive mode has been added to the Wave tool. Now the Wave
- tool can be used just like Python or Perl for instance to interactively
- try out your BOOST_PP macros. Additionally it is now possible to load
- and save the current state of an interactive session (macro tables
- et.al.).
-
-
-
-
- The overall performance has been improved by upto 40-60%, depending
- on the concrete files to process.
-
-
-
-
- Support for new pragmas has been added allowing to control certain
- library features from inside the preprocessed sources (partial output
- redirection, control of generated whitespace and #line directives).
-
-
-
-
- Optional support for #pragma message "..." has been added.
-
-
-
-
- This version also includes a number of bug fixes and usage improvements.
- For a complete list of changes, see the libraries change
- log.
-
+ The Thread library has been updated to be more in line with the C++0x
+ working draft.
+
+
+
+
+ Instances of boost::thread and of the various lock types are now
+ movable.
+
+
+
+
+ Threads can be interrupted at interruption points.
+
+
+
+
+ Condition variables can now be used with any type that implements
+ the Lockable concept, through the use of boost::condition_variable_any
+ (boost::condition is a typedef to boost::condition_variable_any, provided
+ for backwards compatibility). boost::condition_variable
+ is provided as an optimization, and will only work with boost::unique_lock<boost::mutex>
+ (boost::mutex::scoped_lock).
+
+
+
+
+ Thread IDs are separated from boost::thread, so a thread can obtain
+ it's own ID (using boost::this_thread::get_id()), and IDs can be used as keys in
+ associative containers, as they have the full set of comparison operators.
+
+
+
+
+ Timeouts are now implemented using the Boost DateTime library, through
+ a typedef boost::system_time for absolute timeouts,
+ and with support for relative timeouts in many cases. boost::xtime is supported for backwards
+ compatibility only.
+
+
+
+
+ Locks are implemented as publicly accessible templates boost::lock_guard, boost::unique_lock,
+ boost::shared_lock, and boost::upgrade_lock, which are templated
+ on the type of the mutex. The Lockable concept has been extended
+ to include publicly available lock() and unlock() member functions, which are used
+ by the lock types.
+
+
+
+
+ boost::try_mutex has been removed, and
+ the functionality subsumed into boost::mutex.
+ boost::try_mutex is left as a typedef,
+ but is no longer a separate class.
+
+
+
+
+ boost::recursive_try_mutex has been removed,
+ and the functionality subsumed into boost::recursive_mutex.
+ boost::recursive_try_mutex is left as
+ a typedef, but is no longer a separate class.
+
+
+
+
+ boost::detail::thread::lock_ops has been removed. Code
+ that relies on the lock_ops
+ implementation detail will no longer work, as this has been removed,
+ as it is no longer necessary now that mutex types now have public
+ lock()
+ and unlock()
+ member functions.
+
+
+
+
+ scoped_lock constructors
+ with a second parameter of type bool are no longer provided. With
+ previous boost releases, boost::mutex::scoped_lock
+ some_lock(some_mutex,false);
+ could be used to create a lock object that was associated with a
+ mutex, but did not lock it on construction. This facility has now
+ been replaced with the constructor that takes a boost::defer_lock_type
+ as the second parameter: boost::mutex::scoped_lock
+ some_lock(some_mutex,boost::defer_lock);
+
+
+
+
+ The broken boost::read_write_mutex
+ has been replaced with boost::shared_mutex.
+
+
+
-
-
-
- The Thread library has been updated to be more in line with the C++0x
- working draft.
-
-
-
-
- Instances of boost::thread and of the various lock types are now movable.
-
-
-
-
- Threads can be interrupted at interruption points.
-
-
-
-
- Condition variables can now be used with any type that implements the
- Lockable concept, through the use of boost::condition_variable_any
- (boost::condition is a typedef to boost::condition_variable_any, provided
- for backwards compatibility). boost::condition_variable
- is provided as an optimization, and will only work with boost::unique_lock<boost::mutex>
- (boost::mutex::scoped_lock).
-
-
-
-
- Thread IDs are separated from boost::thread, so a thread can obtain
- it's own ID (using boost::this_thread::get_id()), and IDs can be used as keys in
- associative containers, as they have the full set of comparison operators.
-
-
-
-
- Timeouts are now implemented using the Boost DateTime library, through
- a typedef boost::system_time for absolute timeouts,
- and with support for relative timeouts in many cases. boost::xtime is supported for backwards
- compatibility only.
-
-
-
-
- Locks are implemented as publicly accessible templates boost::lock_guard, boost::unique_lock,
- boost::shared_lock, and boost::upgrade_lock,
- which are templated on the type of the mutex. The Lockable concept
- has been extended to include publicly available lock() and unlock() member functions, which are used
- by the lock types.
-
-
-
-
- boost::try_mutex has been removed, and the
- functionality subsumed into boost::mutex.
- boost::try_mutex is left as a typedef, but
- is no longer a separate class.
-
-
-
-
- boost::recursive_try_mutex has been removed,
- and the functionality subsumed into boost::recursive_mutex.
- boost::recursive_try_mutex is left as a
- typedef, but is no longer a separate class.
-
-
-
-
- boost::detail::thread::lock_ops has been removed. Code that
- relies on the lock_ops
- implementation detail will no longer work, as this has been removed,
- as it is no longer necessary now that mutex types now have public
- lock()
- and unlock()
- member functions.
-
-
-
-
- scoped_lock constructors
- with a second parameter of type bool are no longer provided. With previous
- boost releases, boost::mutex::scoped_lock
- some_lock(some_mutex,false);
- could be used to create a lock object that was associated with a mutex,
- but did not lock it on construction. This facility has now been replaced
- with the constructor that takes a boost::defer_lock_type
- as the second parameter: boost::mutex::scoped_lock
- some_lock(some_mutex,boost::defer_lock);
-
-
-
-
- The broken boost::read_write_mutex has been replaced
- with boost::shared_mutex.
-
-
-
Wave: Standards conformant
implementation of the mandated C99/C++ preprocessor functionality packed
behind an easy to use iterator interface, from Hartmut Kaiser. Highlights:
+
+
+
+ Added the possibility to continue the preprocessing after an error
+ occured.
+
+
+
+
+ Added the macro introspection API to the wave::context object.
+
+
+
+
+ Added threading support to the library.
+
+
+
+
+ Improved the overall performance by upto 30%.
+
+
+
+
+ Changed and unified preprocessor hook interface (this is an interface
+ breaking change!), added several new preprocessor hook functions.
+
+
+
+
+ Added serialization support.
+
+
+
+
+ Added new examples (for instance: Hannibal - a partial C++ parser,
+ by Danny Havenith).
+
+
+
+
+ Added a new lexical analyzer based on Ben Hansons Lexertl library.
+
+
+
+
+ Fixed a large number of other bugs and problems.
+
+
+
-
-
-
- Added the possibility to continue the preprocessing after an error
- occured.
-
-
-
-
- Added the macro introspection API to the wave::context object.
-
-
-
-
- Added threading support to the library.
-
-
-
-
- Improved the overall performance by upto 30%.
-
-
-
-
- Changed and unified preprocessor hook interface (this is an interface
- breaking change!), added several new preprocessor hook functions.
-
-
-
-
- Added serialization support.
-
-
-
-
- Added new examples (for instance: Hannibal - a partial C++ parser,
- by Danny Havenith).
-
-
-
-
- Added a new lexical analyzer based on Ben Hansons Lexertl library.
-
-
-
-
- Fixed a large number of other bugs and problems.
-
-
-
@@ -481,35 +480,36 @@
expressions that can be written as strings or as expression templates,
and that can refer to each other and themselves recursively with the power
of context-free grammars, from Eric Niebler. Highlights:
+
+
+
+ Added semantic actions to static regexes. A
+ semantic action is code that executes when part of a regular expression
+ matches.
+
+
+
+
+ Added custom assertions to static regexes. A
+ custom assertion is a Boolean predicate that can participate in the
+ regex match.
+
+
+
+
+ Added named regexes for embedding a static or
+ dynamic regex into a dynamic regex. This can be used to create dynamic
+ regex grammars.
+
+
+
+
+ Added named captures to dynamic regexes, like
+ Perl.
+
+
+
-
-
-
- Added semantic actions to static regexes. A semantic
- action is code that executes when part of a regular expression matches.
-
-
-
-
- Added custom assertions to static regexes. A custom
- assertion is a Boolean predicate that can participate in the regex
- match.
-
-
-
-
- Added named regexes for embedding a static or
- dynamic regex into a dynamic regex. This can be used to create dynamic
- regex grammars.
-
-
-
-
- Added named captures to dynamic regexes, like
- Perl.
-
+ Added wrappers for Windows stream-oriented HANDLEs
+ such as named pipes (requires HANDLEs
+ that work with I/O completion ports).
+
+
+
+
+ Added wrappers for Windows random-access HANDLEs
+ such as files (requires HANDLEs
+ that work with I/O completion ports).
+
+
+
+
+ Added support for reactor-style operations (i.e. they report readiness
+ but perform no I/O) using a new null_buffers
+ type.
+
+
+
+
+ Added an iterator type for bytewise traversal of buffer sequences.
+
+
+
+
+ Added new read_until() and async_read_until() overloads that take a user-defined
+ function object for locating message boundaries.
+
+
+
+
+ Added an experimental two-lock queue (enabled by defining BOOST_ASIO_ENABLE_TWO_LOCK_QUEUE)
+ that may provide better io_service
+ scalability across many processors.
+
+
+
+
+ Various fixes, performance improvements, and more complete coverage
+ of the custom memory allocation support.
+
- Added wrappers for Windows stream-oriented HANDLEs
- such as named pipes (requires HANDLEs
- that work with I/O completion ports).
-
-
-
-
- Added wrappers for Windows random-access HANDLEs
- such as files (requires HANDLEs
- that work with I/O completion ports).
-
-
-
-
- Added support for reactor-style operations (i.e. they report readiness
- but perform no I/O) using a new null_buffers
- type.
-
-
-
-
- Added an iterator type for bytewise traversal of buffer sequences.
-
-
-
-
- Added new read_until() and async_read_until() overloads that take a user-defined
- function object for locating message boundaries.
-
-
-
-
- Added an experimental two-lock queue (enabled by defining BOOST_ASIO_ENABLE_TWO_LOCK_QUEUE)
- that may provide better io_service
- scalability across many processors.
-
-
-
-
- Various fixes, performance improvements, and more complete coverage
- of the custom memory allocation support.
-
+ Wave V2.0 is a new major release introducing some breaking API changes,
+ preventing it to be used with Boost versions earlier than V1.36.0.
+ Mainly, the API and hook interface have been streamlined for more
+ consistency.
+
+
+
+
+ Fixed a couple of bugs, improved regression test system to include
+ testing of the preporcessing hooks interface (for details see: Changelog).
+
+
+
-
-
-
- Wave V2.0 is a new major release introducing some breaking API changes,
- preventing it to be used with Boost versions earlier than V1.36.0.
- Mainly, the API and hook interface have been streamlined for more consistency.
-
-
-
-
- Fixed a couple of bugs, improved regression test system to include
- testing of the preporcessing hooks interface (for details see: Changelog).
-
-
-
@@ -436,34 +429,34 @@
expressions that can be written as strings or as expression templates,
and that can refer to each other and themselves recursively with the power
of context-free grammars, from Eric Niebler.
+
+
+
+ skip()
+ for specifying which parts of the input sequence to ignore when matching
+ it against a regex.
+
+
+
+
+ regex_replace()
+ accepts formatter objects and formatter expressions in addition to
+ format strings.
+
+
+
+
+ Range-based regex_replace() algorithm.
+
+
+
+
+ Fix crash when semantic actions are placed in look-aheads, look-behinds
+ or independent sub-expressions.
+
+
+
-
-
-
- skip()
- for specifying which parts of the input sequence to ignore when matching
- it against a regex.
-
-
-
-
- regex_replace()
- accepts formatter objects and formatter expressions in addition to
- format strings.
-
-
-
-
- Range-based regex_replace() algorithm.
-
-
-
-
- Fix crash when semantic actions are placed in look-aheads, look-behinds
- or independent sub-expressions.
-
-
-
@@ -536,92 +529,92 @@
On Linux:
+
+
+
+ GCC 3.4.3, 4.0.1, 4.2.1, 4.3.0.
+
+
+
+
+ GCC 4.3.0 with C++0x extensions.
+
+
+
+
+ GCC 3.4.6, 4.1.1, 4.2.1 on 64 bit linux.
+
+
+
+
+ Intel C++ 8.1, 9.0 and 9.1.
+
+
+
+
+ QLogic PathScale(TM) Compiler Suite: Version 3.1
+
+
+
+
+ pgCC 7.2-3 64-bit target on x86-64 Linux
+
+
+
-
-
-
- GCC 3.4.3, 4.0.1, 4.2.1, 4.3.0.
-
-
-
-
- GCC 4.3.0 with C++0x extensions.
-
-
-
-
- GCC 3.4.6, 4.1.1, 4.2.1 on 64 bit linux.
-
-
-
-
- Intel C++ 8.1, 9.0 and 9.1.
-
-
-
-
- QLogic PathScale(TM) Compiler Suite: Version 3.1
-
-
-
-
- pgCC 7.2-3 64-bit target on x86-64 Linux
-
-
-
On Windows:
+
+
+
+ Intel 10.1, with Visual C++ 9 backend.
+
+
+
+
+ Lots of tests on Visual C++ 7.1, 8.0, 9.0
+
+
+
+
+ Visual C++ 7.1 with Apache C++ Standard Library 4.2.x branch.
+
+
+
+
+ Visual C++ 8.0 with STLport 5.1
+
+
+
+
+ Visual C++ 8.0 with STLport 5.1 cross-compiling for Windows Mobile
+ 5.0 Pocket PC SDK (ARMV4I).
+
+
+
+
+ Borland 5.6.4, 5.8.2, 5.9.3
+
+
+
+
+ 64 bit Intel 10.1, with Visual C++ 9 backend.
+
+
+
+
+ 64 bit Visual C++ 9.
+
+
+
+
+ Comeau C++ 4.3.10.1 beta 2, with Visual C++ 9 backend.
+
+
+
-
-
-
- Intel 10.1, with Visual C++ 9 backend.
-
-
-
-
- Lots of tests on Visual C++ 7.1, 8.0, 9.0
-
-
-
-
- Visual C++ 7.1 with Apache C++ Standard Library 4.2.x branch.
-
-
-
-
- Visual C++ 8.0 with STLport 5.1
-
-
-
-
- Visual C++ 8.0 with STLport 5.1 cross-compiling for Windows Mobile
- 5.0 Pocket PC SDK (ARMV4I).
-
-
-
-
- Borland 5.6.4, 5.8.2, 5.9.3
-
-
-
-
- 64 bit Intel 10.1, with Visual C++ 9 backend.
-
-
-
-
- 64 bit Visual C++ 9.
-
-
-
-
- Comeau C++ 4.3.10.1 beta 2, with Visual C++ 9 backend.
-
+ Enhanced CompletionCondition concept with the signature size_tCompletionCondition(error_code
+ ec,
+ size_ttotal), where the return value indicates
+ the maximum number of bytes to be transferred on the next read or
+ write operation. (The old CompletionCondition signature is still
+ supported for backwards compatibility).
+
+
+
+
+ New windows::overlapped_ptr class to allow arbitrary overlapped I/O
+ functions (such as TransmitFile) to be used with Asio.
+
+
+
+
+ On recent versions of Linux, an eventfd descriptor is now used (rather
+ than a pipe) to interrupt a blocked select/epoll reactor.
+
+
+
+
+ Added const overloads of lowest_layer().
+
+
+
+
+ Synchronous read, write, accept and connect operations are now thread
+ safe (meaning that it is now permitted to perform concurrent synchronous
+ operations on an individual socket, if supported by the OS).
+
+
+
+
+ Reactor-based io_service implementations now use lazy initialisation
+ to reduce the memory usage of an io_service object used only as a
+ message queue.
+
+
+
-
-
-
- Enhanced CompletionCondition concept with the signature size_tCompletionCondition(error_code
- ec,
- size_ttotal), where the return value indicates
- the maximum number of bytes to be transferred on the next read or write
- operation. (The old CompletionCondition signature is still supported
- for backwards compatibility).
-
-
-
-
- New windows::overlapped_ptr class to allow arbitrary overlapped I/O
- functions (such as TransmitFile) to be used with Asio.
-
-
-
-
- On recent versions of Linux, an eventfd descriptor is now used (rather
- than a pipe) to interrupt a blocked select/epoll reactor.
-
-
-
-
- Added const overloads of lowest_layer().
-
-
-
-
- Synchronous read, write, accept and connect operations are now thread
- safe (meaning that it is now permitted to perform concurrent synchronous
- operations on an individual socket, if supported by the OS).
-
-
-
-
- Reactor-based io_service implementations now use lazy initialisation
- to reduce the memory usage of an io_service object used only as a message
- queue.
-
+ Constructor "do the right thing" dispatch, a la standard
+ sequence containers (follows the proposed resolution of library
+ issue 438, currently in the C++0x working
+ paper).
+
+
+
+
+ Improvements to documentation, code examples and implementation.
+
+
+
-
-
-
- Constructor "do the right thing" dispatch, a la standard
- sequence containers (follows the proposed resolution of library
- issue 438, currently in the C++0x working
- paper).
-
-
-
-
- Improvements to documentation, code examples and implementation.
-
+ A new macro BOOST_THROW_EXCEPTION
+ which can be used instead of boost::throw_exception
+ when throwing, to automatically record information about the location
+ of the throw in the exception object.
+
+
+
-
-
-
- Support for non-RTTI builds.
-
-
-
-
- Optimizations.
-
-
-
-
- A new macro BOOST_THROW_EXCEPTION
- which can be used instead of boost::throw_exception
- when throwing, to automatically record information about the location
- of the throw in the exception object.
-
+ Added a new algorithms for Travelling Salesman Problem approximation
+ (metric_tsp_approx)
+ and resource-constrained Shortest Paths (r_c_shortest_paths).
+
- Added a new algorithms for Travelling Salesman Problem approximation
- (metric_tsp_approx)
- and resource-constrained Shortest Paths (r_c_shortest_paths).
-
+ Breaking change: empty expressions,
+ and empty alternatives are now allowed when using the Perl regular
+ expression syntax. This change has been added for Perl compatibility,
+ when the new syntax_option_type
+ no_empty_expressions is set then the old behaviour
+ is preserved and empty expressions are prohibited. This is issue
+ #1081.
+
+
+
+
+ Added support for Perl style ${n} expressions in format strings (issue
+ #2556).
+
+
+
+
+ Added support for accessing the location of sub-expressions within
+ the regular expression string (issue #2269).
+
- Breaking change: empty expressions,
- and empty alternatives are now allowed when using the Perl regular
- expression syntax. This change has been added for Perl compatibility,
- when the new syntax_option_type
- no_empty_expressions is set then the old behaviour
- is preserved and empty expressions are prohibited. This is issue #1081.
-
-
-
-
- Added support for Perl style ${n} expressions in format strings (issue
- #2556).
-
-
-
-
- Added support for accessing the location of sub-expressions within
- the regular expression string (issue #2269).
-
+ No longer catches unhandled exceptions in threads as this debuggers
+ couldn't identify the cause of unhandled exceptions in threads. An
+ unhandled exception will still cause the application to terminate.
+
+
+
-
-
-
- No longer catches unhandled exceptions in threads as this debuggers
- couldn't identify the cause of unhandled exceptions in threads. An
- unhandled exception will still cause the application to terminate.
-
+ Implement automatic resizing of the bucket array in the internal
+ hash maps. This is to improve performance for very large numbers
+ of asynchronous operations and also to reduce memory usage for very
+ small numbers. A new macro BOOST_ASIO_HASH_MAP_BUCKETS
+ may be used to tweak the sizes used for the bucket arrays.
+
+
+
+
+ Add performance optimisation for the Windows IOCP backend for when
+ no timers are used.
+
+
+
+
+ Prevent locale settings from affecting formatting of TCP and UDP
+ endpoints (#2682).
+
+
+
+
+ Fix a memory leak that occurred when an asynchronous SSL operation's
+ completion handler threw an exception (#2910).
+
+
+
+
+ Fix the implementation of io_control() so that it adheres to the documented
+ type requirements for IoControlCommand (#2820).
+
+
+
+
+ Fix incompatibility between Asio and ncurses.h (#2156).
+
+
+
+
+ On Windows, specifically handle the case when an overlapped ReadFile call fails with ERROR_MORE_DATA. This enables a
+ hack where a windows::stream_handle
+ can be used with a message-oriented named pipe (#2936).
+
+
+
+
+ Fix system call wrappers to always clear the error on success, as
+ POSIX allows successful system calls to modify errno (#2953).
+
+
+
+
+ Don't include termios.h if BOOST_ASIO_DISABLE_SERIAL_PORT
+ is defined (#2917).
+
+
+
+
+ Cleaned up some more MSVC level 4 warnings (#2828).
+
- Implement automatic resizing of the bucket array in the internal hash
- maps. This is to improve performance for very large numbers of asynchronous
- operations and also to reduce memory usage for very small numbers.
- A new macro BOOST_ASIO_HASH_MAP_BUCKETS
- may be used to tweak the sizes used for the bucket arrays.
-
-
-
-
- Add performance optimisation for the Windows IOCP backend for when
- no timers are used.
-
-
-
-
- Prevent locale settings from affecting formatting of TCP and UDP endpoints
- (#2682).
-
-
-
-
- Fix a memory leak that occurred when an asynchronous SSL operation's
- completion handler threw an exception (#2910).
-
-
-
-
- Fix the implementation of io_control() so that it adheres to the documented
- type requirements for IoControlCommand (#2820).
-
-
-
-
- Fix incompatibility between Asio and ncurses.h (#2156).
-
-
-
-
- On Windows, specifically handle the case when an overlapped ReadFile call fails with ERROR_MORE_DATA. This enables a hack
- where a windows::stream_handle can be used with a
- message-oriented named pipe (#2936).
-
-
-
-
- Fix system call wrappers to always clear the error on success, as POSIX
- allows successful system calls to modify errno (#2953).
-
-
-
-
- Don't include termios.h if BOOST_ASIO_DISABLE_SERIAL_PORT
- is defined (#2917).
-
-
-
-
- Cleaned up some more MSVC level 4 warnings (#2828).
-
+ The refcounted
+ component was not thread-safe due to an incorrect implementation
+ and could deadlock under heavy usage conditions. This problem has
+ been corrected.
+
+
+
-
-
-
- The refcounted
- component was not thread-safe due to an incorrect implementation and
- could deadlock under heavy usage conditions. This problem has been
- corrected.
-
+ Added a new ping example to illustrate the use of ICMP sockets.
+
+
+
+
+ Changed the buffered*_stream<> templates to treat 0-byte
+ reads and writes as no-ops, to comply with the documented type requirements
+ for SyncReadStream,
+ AsyncReadStream,
+ SyncWriteStream and
+ AsyncWriteStream.
+
+
+
+
+ Changed some instances of the throw
+ keyword to boost::throw_exception() to allow Asio to be used when exception
+ support is disabled. Note that the SSL wrappers still require exception
+ support (#2754).
+
+
+
+
+ Made Asio compatible with the OpenSSL 1.0 beta (#3256).
+
+
+
+
+ Eliminated a redundant system call in the Solaris /dev/poll
+ backend.
+
+
+
+
+ Fixed a bug in resizing of the bucket array in the internal hash
+ maps (#3095).
+
+
+
+
+ Ensured correct propagation of the error code when a synchronous
+ accept fails (#3216).
+
+
+
+
+ Ensured correct propagation of the error code when a synchronous
+ read or write on a Windows HANDLE fails.
+
+
+
+
+ Fixed failures reported when _GLIBCXX_DEBUG
+ is defined (#3098).
+
+
+
+
+ Fixed custom memory allocation support for timers (#3107).
+
+
+
+
+ Tidied up various warnings reported by g++ (#1341,
+ #2618).
+
+
+
+
+ Various documentation improvements, including more obvious hyperlinks
+ to function overloads, header file information, examples for the
+ handler type requirements, and adding enum values to the index (#3157,
+ #2620).
+
+
+
-
-
-
- Added a new ping example to illustrate the use of ICMP sockets.
-
-
-
-
- Changed the buffered*_stream<> templates to treat 0-byte reads
- and writes as no-ops, to comply with the documented type requirements
- for SyncReadStream,
- AsyncReadStream, SyncWriteStream and AsyncWriteStream.
-
-
-
-
- Changed some instances of the throw
- keyword to boost::throw_exception()
- to allow Asio to be used when exception support is disabled. Note that
- the SSL wrappers still require exception support (#2754).
-
-
-
-
- Made Asio compatible with the OpenSSL 1.0 beta (#3256).
-
-
-
-
- Eliminated a redundant system call in the Solaris /dev/poll
- backend.
-
-
-
-
- Fixed a bug in resizing of the bucket array in the internal hash maps
- (#3095).
-
-
-
-
- Ensured correct propagation of the error code when a synchronous accept
- fails (#3216).
-
-
-
-
- Ensured correct propagation of the error code when a synchronous read
- or write on a Windows HANDLE fails.
-
-
-
-
- Fixed failures reported when _GLIBCXX_DEBUG
- is defined (#3098).
-
-
-
-
- Fixed custom memory allocation support for timers (#3107).
-
-
-
-
- Tidied up various warnings reported by g++ (#1341,
- #2618).
-
-
-
-
- Various documentation improvements, including more obvious hyperlinks
- to function overloads, header file information, examples for the handler
- type requirements, and adding enum values to the index (#3157,
- #2620).
-
+ Merged in the Parallel
+ Boost Graph Library, giving a full suite of graph algorithms
+ and data structures for distributed-memory computers (such as clusters).
+
+
+
+
+ Updates to the interface of the compressed sparse row graph, including
+ constructors from unsorted edge lists.
+
+
+
+
+ An implicit grid graph, saving memory over using the former generator.
+
+
+
+
+ New algorithms: Dijkstra's single-source shortest path algorithm
+ without a separate color map and an algorithm to find maximal common
+ subgraphs between two graphs.
+
+
+
+
+ Assorted bug fixes.
+
+
+
-
-
-
- Merged in the Parallel
- Boost Graph Library, giving a full suite of graph algorithms
- and data structures for distributed-memory computers (such as clusters).
-
-
-
-
- Updates to the interface of the compressed sparse row graph, including
- constructors from unsorted edge lists.
-
-
-
-
- An implicit grid graph, saving memory over using the former generator.
-
-
-
-
- New algorithms: Dijkstra's single-source shortest path algorithm without
- a separate color map and an algorithm to find maximal common subgraphs
- between two graphs.
-
+ Moved property map code into a separate directory, boost/property_map/.
+ The old files exist and forward to the new ones; the previous files
+ directly in boost/ will be removed in Boost 1.42.0.
+
+
+
+
+ Moved distributed property maps to boost::graph::parallel
+ namespace.
+
+
+
+
+ Added a property map based on a boost::shared_array,
+ providing a simpler interface.
+
+
+
-
-
-
- Moved property map code into a separate directory, boost/property_map/. The old files exist and forward to
- the new ones; the previous files directly in boost/ will be removed in Boost 1.42.0.
-
-
-
-
- Moved distributed property maps to boost::graph::parallel
- namespace.
-
-
-
-
- Added a property map based on a boost::shared_array,
- providing a simpler interface.
-
+ Removed deprecated headers: boost/static_warning.hpp,
+ boost/state_saver.hpp, boost/smart_cast.hpp,
+ boost/pfto.hpp. Use the the equivalent headers
+ in the boost/serialization/
+ directory instead (#3062).
+
+
+
+
+ detail::archive_serializer_map should now
+ be used instead of detail::archive_pointer_iserializer.
+ For more details see the
+ library release notes.
+
+
+
-
-
-
- Removed deprecated headers: boost/static_warning.hpp,
- boost/state_saver.hpp, boost/smart_cast.hpp,
- boost/pfto.hpp. Use the the equivalent headers
- in the boost/serialization/
- directory instead (#3062).
-
-
-
-
- detail::archive_serializer_map should now
- be used instead of detail::archive_pointer_iserializer.
- For more details see the
- library release notes.
-
+ The default format for time durations is now "%-%O:%M:%S%F"
+ instead of "%-%H:%M:%S%F" that was used previously.
+ In order to retain the old behavior, the format string has to be
+ specified explicitly during the time IO facet construction (#1861).
+
+
+
+
+ Gregorian dates now use 32-bit integer type internally on 64-bit
+ platforms (#3308).
+
- The default format for time durations is now "%-%O:%M:%S%F" instead of "%-%H:%M:%S%F"
- that was used previously. In order to retain the old behavior, the
- format string has to be specified explicitly during the time IO facet
- construction (#1861).
-
-
-
-
- Gregorian dates now use 32-bit integer type internally on 64-bit platforms
- (#3308).
-
+ Added a new HTTP Server 4 example illustrating the use of stackless
+ coroutines with Asio.
+
+
+
+
+ Changed handler allocation and invocation to use boost::addressof
+ to get the address of handler objects, rather than applying operator&
+ directly (#2977).
+
+
+
+
+ Restricted MSVC buffer debugging workaround to 2008, as it causes
+ a crash with 2010 beta 2 (#3796,
+ #3822).
+
+
+
+
+ Fixed a problem with the lifetime of handler memory, where Windows
+ needs the OVERLAPPED
+ structure to be valid until both the initiating function call has
+ returned and the completion packet has been delivered.
+
+
+
+
+ Don't block signals while performing system calls, but instead restart
+ the calls if they are interrupted.
+
+
+
+
+ Documented the guarantee made by strand objects with respect to order
+ of handler invocation.
+
+
+
+
+ Changed strands to use a pool of implementations, to make copying
+ of strands cheaper.
+
+
+
+
+ Ensured that kqueue support is enabled for BSD platforms (#3626).
+
+
+
+
+ Added a boost_ prefix
+ to the extern"C"
+ thread entry point function (#3809).
+
+
+
+
+ In getaddrinfo emulation,
+ only check the socket type (SOCK_STREAM
+ or SOCK_DGRAM) if
+ a service name has been specified. This should allow the emulation
+ to work with raw sockets.
+
+
+
+
+ Added a workaround for some broken Windows firewalls that make a
+ socket appear bound to 0.0.0.0 when it is in fact bound to 127.0.0.1.
+
+
+
+
+ Applied a fix for reported excessive CPU usage under Solaris (#3670).
+
+
+
+
+ Added some support for platforms that use older compilers such as
+ g++ 2.95 (#3743).
+
+
+
-
-
-
- Added a new HTTP Server 4 example illustrating the use of stackless
- coroutines with Asio.
-
-
-
-
- Changed handler allocation and invocation to use boost::addressof
- to get the address of handler objects, rather than applying operator&
- directly (#2977).
-
-
-
-
- Restricted MSVC buffer debugging workaround to 2008, as it causes a
- crash with 2010 beta 2 (#3796,
- #3822).
-
-
-
-
- Fixed a problem with the lifetime of handler memory, where Windows
- needs the OVERLAPPED
- structure to be valid until both the initiating function call has returned
- and the completion packet has been delivered.
-
-
-
-
- Don't block signals while performing system calls, but instead restart
- the calls if they are interrupted.
-
-
-
-
- Documented the guarantee made by strand objects with respect to order
- of handler invocation.
-
-
-
-
- Changed strands to use a pool of implementations, to make copying of
- strands cheaper.
-
-
-
-
- Ensured that kqueue support is enabled for BSD platforms (#3626).
-
-
-
-
- Added a boost_ prefix
- to the extern"C"
- thread entry point function (#3809).
-
-
-
-
- In getaddrinfo emulation,
- only check the socket type (SOCK_STREAM
- or SOCK_DGRAM) if a
- service name has been specified. This should allow the emulation to
- work with raw sockets.
-
-
-
-
- Added a workaround for some broken Windows firewalls that make a socket
- appear bound to 0.0.0.0 when it is in fact bound to 127.0.0.1.
-
-
-
-
- Applied a fix for reported excessive CPU usage under Solaris (#3670).
-
-
-
-
- Added some support for platforms that use older compilers such as g++
- 2.95 (#3743).
-
+ Added methods erase_begin(size_type) and erase_end(size_type) with
+ constant complexity for such types of stored elements which do not
+ need an explicit destruction e.g. int or double.
+
+
+
+
+ Similarly changed implementation of the clear() method and the destructor
+ so their complexity is now constant for such types of stored elements
+ which do not require an explicit destruction (the complexity for
+ other types remains linear).
+
+
+
-
-
-
- Added methods erase_begin(size_type) and erase_end(size_type) with
- constant complexity for such types of stored elements which do not
- need an explicit destruction e.g. int or double.
-
-
-
-
- Similarly changed implementation of the clear() method and the destructor
- so their complexity is now constant for such types of stored elements
- which do not require an explicit destruction (the complexity for other
- types remains linear).
-
+ Added long long support to boost::static_log2,
+ boost::static_signed_min, boost::static_signed_max,
+ boost::static_unsigned_minboost::static_unsigned_max,
+ when available.
+
+
+
+
+ The argument type and the result type of boost::static_signed_min
+ etc are now typedef'd. Formerly, they were hardcoded as unsigned
+ long and int respectively. Please, use
+ the provided typedefs in new code (and update old code as soon as
+ possible).
+
+
+
-
-
-
- Reverted Trunk to release branch state (i.e. a "known good state").
-
- Added long long support to boost::static_log2,
- boost::static_signed_min, boost::static_signed_max,
- boost::static_unsigned_minboost::static_unsigned_max,
- when available.
-
-
-
-
- The argument type and the result type of boost::static_signed_min
- etc are now typedef'd. Formerly, they were hardcoded as unsigned
- long and int respectively. Please, use
- the provided typedefs in new code (and update old code as soon as possible).
-
+ Support instantiating the containers with incomplete value types.
+
+
+
+
+ Add erase_return_void
+ as a temporary workaround for the current erase
+ which can be inefficient because it has to find the next element
+ to return an iterator (#3693).
+
+
+
+
+ Add templated find overload for compatible keys.
+
- Support instantiating the containers with incomplete value types.
-
-
-
-
- Add erase_return_void
- as a temporary workaround for the current erase
- which can be inefficient because it has to find the next element to
- return an iterator (#3693).
-
-
-
-
- Add templated find overload for compatible keys.
-
@@ -78,25 +78,25 @@
Boost.Range has
undergone extensive updates that it include all of the features from the
recently reviewed Boost.RangeEx, from Neil Groves.
+
+
+
+ Range-based version of the full STL iterator based algorithms.
+
+
+
+
+ Range adaptors which can be combined with range-based algorithms
+ for unprecedented expressiveness and efficiency.
+
+
+
+
+ New functions: irange, istream_range, join, combine.
+
+
+
-
-
-
- Range-based version of the full STL iterator based algorithms.
-
-
-
-
- Range adaptors which can be combined with range-based algorithms for
- unprecedented expressiveness and efficiency.
-
-
-
-
- New functions: irange, istream_range, join, combine.
-
+ Extended the guarantee that background threads don't call user code
+ to all asynchronous operations (#3923).
+
+
+
+
+ Changed to use edge-triggered epoll on Linux.
+
+
+
+
+ Changed to use timerfd
+ for dispatching timers on Linux, when available.
+
+
+
+
+ Changed to use one-shot notifications with kqueue on Mac OS X and
+ BSD platforms.
+
+
+
+
+ Added a bitmask type ip::resolver_query_base::flags
+ as per the TR2 proposal. This type prevents implicit conversion from
+ int to flags, allowing the compiler to
+ catch cases where users incorrectly pass a numeric port number as
+ the service name.
+
+
+
+
+ Added #defineNOMINMAX for all Windows compilers.
+ Users can define BOOST_ASIO_NO_NOMINMAX
+ to suppress this definition (#3901).
+
+
+
+
+ Fixed a bug where 0-byte asynchronous reads were incorrectly passing
+ an error::eof result to the completion handler
+ (#4023).
+
+
+
+
+ Changed the io_control() member functions to always call
+ ioctl on the underlying
+ descriptor when modifying blocking mode (#3307).
+
+
+
+
+ Changed the resolver implementation to longer require the typedefs
+ InternetProtocol::resolver_query
+ and InternetProtocol::resolver_iterator,
+ as neither typedef is part of the documented InternetProtocol
+ requirements. The corresponding typedefs in the ip::tcp,
+ ip::udp and ip::icmp
+ classes have been deprecated.
+
+
+
+
+ Fixed out-of-band handling for reactors not based on select().
+
+
+
+
+ Added new BOOST_ASIO_DISABLE_THREADS
+ macro that allows Asio's threading support to be independently disabled.
+
+
+
+
+ Minor documentation improvements.
+
+
+
-
-
-
- Improved performance.
-
-
-
-
- Reduced compile times.
-
-
-
-
- Reduced the size of generated code.
-
-
-
-
- Extended the guarantee that background threads don't call user code
- to all asynchronous operations (#3923).
-
-
-
-
- Changed to use edge-triggered epoll on Linux.
-
-
-
-
- Changed to use timerfd
- for dispatching timers on Linux, when available.
-
-
-
-
- Changed to use one-shot notifications with kqueue on Mac OS X and BSD
- platforms.
-
-
-
-
- Added a bitmask type ip::resolver_query_base::flags
- as per the TR2 proposal. This type prevents implicit conversion from
- int to flags,
- allowing the compiler to catch cases where users incorrectly pass a
- numeric port number as the service name.
-
-
-
-
- Added #defineNOMINMAX
- for all Windows compilers. Users can define BOOST_ASIO_NO_NOMINMAX
- to suppress this definition (#3901).
-
-
-
-
- Fixed a bug where 0-byte asynchronous reads were incorrectly passing
- an error::eof result to the completion handler
- (#4023).
-
-
-
-
- Changed the io_control() member functions to always call
- ioctl on the underlying
- descriptor when modifying blocking mode (#3307).
-
-
-
-
- Changed the resolver implementation to longer require the typedefs
- InternetProtocol::resolver_query and InternetProtocol::resolver_iterator, as neither typedef
- is part of the documented InternetProtocol
- requirements. The corresponding typedefs in the ip::tcp,
- ip::udp and ip::icmp
- classes have been deprecated.
-
-
-
-
- Fixed out-of-band handling for reactors not based on select().
-
-
-
-
- Added new BOOST_ASIO_DISABLE_THREADS
- macro that allows Asio's threading support to be independently disabled.
-
+ Reduced compile times. (Note that some programs may need to add additional
+ #includes, e.g.
+ if the program uses boost::array
+ but does not explicitly include <boost/array.hpp>.)
+
+
+
+
+ Reduced the size of generated code.
+
+
+
+
+ Refactored deadline_timer
+ implementation to improve performance.
+
+
+
+
+ Improved multiprocessor scalability on Windows by using a dedicated
+ hidden thread to wait for timers.
+
+
+
+
+ Improved performance of asio::streambuf
+ with async_read()
+ and async_read_until(). These read operations now use
+ the existing capacity of the streambuf
+ when reading, rather than limiting the read to 512 bytes.
+
+
+
+
+ Added optional separate compilation. To enable, add #include<boost/asio/impl/src.cpp>
+ to one source file in a program, then build the program with BOOST_ASIO_SEPARATE_COMPILATION
+ defined in the project/compiler settings. Alternatively, BOOST_ASIO_DYN_LINK may be defined
+ to build a separately-compiled Asio as part of a shared library.
+
+
+
+
+ Added new macro BOOST_ASIO_DISABLE_FENCED_BLOCK
+ to permit the disabling of memory fences around completion handlers,
+ even if thread support is enabled.
+
+
+
+
+ Reworked timeout examples to better illustrate typical use cases.
+
+
+
+
+ Ensured that handler arguments are passed as const
+ types.
+
+
+
+
+ Fixed incorrect parameter order in null_buffers
+ variant of async_send_to
+ (#4170).
+
+
+
+
+ Ensured unsignedchar
+ is used with isdigit
+ in getaddrinfo emulation
+ (#4201).
+
+
+
+
+ Fixed handling of very small but non-zero timeouts (#4205).
+
+
+
+
+ Fixed crash that occurred when an empty buffer sequence was passed
+ to a composed read or write operation.
+
+
+
+
+ Added missing operator+ overload in buffers_iterator
+ (#4382).
+
+
+
+
+ Implemented cancellation of null_buffers
+ operations on Windows.
+
+
+
-
-
-
- Reduced compile times. (Note that some programs may need to add additional
- #includes, e.g. if
- the program uses boost::array
- but does not explicitly include <boost/array.hpp>.)
-
-
-
-
- Reduced the size of generated code.
-
-
-
-
- Refactored deadline_timer
- implementation to improve performance.
-
-
-
-
- Improved multiprocessor scalability on Windows by using a dedicated
- hidden thread to wait for timers.
-
-
-
-
- Improved performance of asio::streambuf
- with async_read()
- and async_read_until(). These read operations now use the
- existing capacity of the streambuf
- when reading, rather than limiting the read to 512 bytes.
-
-
-
-
- Added optional separate compilation. To enable, add #include
- <boost/asio/impl/src.cpp> to one source file in a program,
- then build the program with BOOST_ASIO_SEPARATE_COMPILATION
- defined in the project/compiler settings. Alternatively, BOOST_ASIO_DYN_LINK may be defined
- to build a separately-compiled Asio as part of a shared library.
-
-
-
-
- Added new macro BOOST_ASIO_DISABLE_FENCED_BLOCK
- to permit the disabling of memory fences around completion handlers,
- even if thread support is enabled.
-
-
-
-
- Reworked timeout examples to better illustrate typical use cases.
-
-
-
-
- Ensured that handler arguments are passed as const
- types.
-
-
-
-
- Fixed incorrect parameter order in null_buffers
- variant of async_send_to
- (#4170).
-
-
-
-
- Ensured unsignedchar
- is used with isdigit
- in getaddrinfo emulation
- (#4201).
-
-
-
-
- Fixed handling of very small but non-zero timeouts (#4205).
-
-
-
-
- Fixed crash that occurred when an empty buffer sequence was passed
- to a composed read or write operation.
-
-
-
-
- Added missing operator+ overload in buffers_iterator
- (#4382).
-
-
-
-
- Implemented cancellation of null_buffers
- operations on Windows.
-
+ This release contains both version 2 and version 3 of the library.
+ Version 3 is a major upgrade that will break some existing user code,
+ so version 2 is the default. Users are encouraged to migrate to version
+ 3. See 'Version 2'
+ and 'Version 3'
+ for more information.
+
+
+
+
+ Fix problems with symbol visibility for shared libraries.
+
- This release contains both version 2 and version 3 of the library.
- Version 3 is a major upgrade that will break some existing user code,
- so version 2 is the default. Users are encouraged to migrate to version
- 3. See 'Version 2'
- and 'Version 3'
- for more information.
-
-
-
-
- Fix problems with symbol visibility for shared libraries.
-
+ Option to prevent implicit casts when calling the hash function by
+ defining the macro BOOST_HASH_NO_IMPLICIT_CASTS,
+ which can avoid some subtle problems. This might be activated by
+ default in a future version.
+
+
+
-
-
-
- Option to prevent implicit casts when calling the hash function by
- defining the macro BOOST_HASH_NO_IMPLICIT_CASTS,
- which can avoid some subtle problems. This might be activated by default
- in a future version.
-
+ Several fixes for file descriptors class, including a breaking change
+ to the constructors and open
+ methods for file_descriptor,
+ file_descriptor_source
+ and file_descriptor_sink.
+ See the
+ documentation for details. The old methods are still available
+ if you define BOOST_IOSTREAMS_USE_DEPRECATED
+ (#3323,
+ #3517,
+ #4335).
+
+ Thanks to Steven Watanabe for almost all these fixes. For more detail
+ see the release
+ notes.
+
+
+
-
-
-
- Several fixes for file descriptors class, including a breaking change
- to the constructors and open
- methods for file_descriptor,
- file_descriptor_source
- and file_descriptor_sink.
- See the
- documentation for details. The old methods are still available
- if you define BOOST_IOSTREAMS_USE_DEPRECATED
- (#3323,
- #3517,
- #4335).
-
+ Fixed a bug preventing the use of modify_key
+ with rollback in ordered
+ and hashed
+ indices when Modifier
+ and Rollback are
+ different types (ticket #4130).
+
+
+
-
-
-
- Fixed a bug preventing the use of modify_key
- with rollback in ordered
- and hashed
- indices when Modifier
- and Rollback are different
- types (ticket #4130).
-
+ Minor change in behavior: when using
+ proto::and_ as a transform, apply all
+ transforms but only return the result of applying the last. See Proto's
+ Release
+ Notes for details.
+
+
+
+
+ Minor change in behavior:proto::as_expr and proto::as_child
+ no longer run objects that are already proto expressions through
+ the expression domain's generator. See Proto's Release
+ Notes for details.
+
+
+
+
+ Minor change in behavior: Proto
+ uses proto::basic_expr instead of proto::expr when possible for better compile
+ times. See Proto's Release
+ Notes for details.
+
+
+
+
+ Add support for sub-domains.
+
+
+
+
+ Introduce per-domain as_expr
+ and as_child customization
+ points to allow for domain-specific customization of variable capture
+ behavior.
+
+
+
+
+ The proto::_default transform is also a grammar
+ that matches the expressions the transform knows how to handle.
+
+
+
+
+ Add proto::_void, a no-op primitive transform
+ that does nothing and returns void.
+
+ Const-correctness fixes when invoking proto domains.
+
+
+
-
-
-
- Minor change in behavior: when using
- proto::and_ as a transform, apply all
- transforms but only return the result of applying the last. See Proto's
- Release
- Notes for details.
-
-
-
-
- Minor change in behavior:proto::as_expr and proto::as_child
- no longer run objects that are already proto expressions through the
- expression domain's generator. See Proto's Release
- Notes for details.
-
-
-
-
- Minor change in behavior: Proto uses
- proto::basic_expr instead of proto::expr when possible for better compile
- times. See Proto's Release
- Notes for details.
-
-
-
-
- Add support for sub-domains.
-
-
-
-
- Introduce per-domain as_expr
- and as_child customization
- points to allow for domain-specific customization of variable capture
- behavior.
-
-
-
-
- The proto::_default transform is also a grammar
- that matches the expressions the transform knows how to handle.
-
-
-
-
- Add proto::_void, a no-op primitive transform
- that does nothing and returns void.
-
+ Change system_category and generic_category to functions, to conform
+ to the C++0x FCD. This change may cause compile errors some user
+ code; the fix is add "()" to references to system_category
+ and generic_category, so that they become function calls.
+
+
+
+
+ Fix problems with symbol visibility for shared libraries.
+
- Change system_category and generic_category to functions, to conform
- to the C++0x FCD. This change may cause compile errors some user code;
- the fix is add "()" to references to system_category and
- generic_category, so that they become function calls.
-
-
-
-
- Fix problems with symbol visibility for shared libraries.
-
+ Added support for rvalue references throughout the library, plus
+ two new traits classes is_rvalue_reference and is_lvalue_reference.
+ Fixes #4407
+ and #3804.
+
- Added support for rvalue references throughout the library, plus two
- new traits classes is_rvalue_reference and is_lvalue_reference. Fixes
- #4407
- and #3804.
-
+ New version of value_initialized<T> no longer calls memset when the compiler has implemented
+ value-initialization completely (#3869).
+
+
+
+
+ New template boost::tr1_result_of
+ that implements the TR1 ResultOf protocol even if boost::result_of
+ uses the C++0x decltype-based
+ implementation.
+
- New version of value_initialized<T> no longer calls memset
- when the compiler has implemented value-initialization completely (#3869).
-
-
-
-
- New template boost::tr1_result_of
- that implements the TR1 ResultOf protocol even if boost::result_of
- uses the C++0x decltype-based
- implementation.
-
+ Removed dependency on deprecated Boost.System functions (#4672).
+
+
+
+
+ Ensured close()/closesocket()
+ failures are correctly propagated (#4573).
+
+
+
+
+ Added a check for errors returned by InitializeCriticalSectionAndSpinCount
+ (#4574).
+
+
+
+
+ Added support for hardware flow control on QNX (#4625).
+
+
+
+
+ Always use pselect() on HP-UX, if it is available (#4578).
+
+
+
+
+ Ensured handler arguments are passed as lvalues (#4744).
+
+
+
+
+ Fixed Windows build when thread support is disabled (#4680).
+
+
+
+
+ Fixed a Windows-specific problem where deadline_timer
+ objects with expiry times set more than 5 minutes in the future may
+ never expire (#4745).
+
+
+
+
+ Fixed the resolver
+ backend on BSD platforms so that an empty service name resolves to
+ port number 0, as per
+ the documentation (#4690).
+
+
+
+
+ Fixed read operations so that they do not accept buffer sequences
+ of type const_buffers_1
+ (#4746).
+
+
+
+
+ Redefined Protocol
+ and id to avoid clashing
+ with Objective-C++ keywords (#4191).
+
+
+
+
+ Fixed a vector reallocation
+ performance issue that can occur when there are many active deadline_timer objects (#4780).
+
+
+
+
+ Fixed the kqueue backend so that it compiles on NetBSD (#4662).
+
+
+
+
+ Fixed the socket io_control() implementation on 64-bit Mac OS
+ X and BSD platforms (#4782).
+
+
+
+
+ Fixed a Windows-specific problem where failures from accept()
+ are incorrectly treated as successes (#4859).
+
+
+
+
+ Deprecated the separate compilation header <boost/asio/impl/src.cpp>
+ in favour of <boost/asio/impl/src.hpp> (#4560).
+
+
+
-
-
-
- Fixed a problem on kqueue-based platforms where a deadline_timer
- may never fire if the io_service
- is running in a background thread (#4568).
-
-
-
-
- Fixed a const-correctness issue that prevented valid uses of has_service<>
- from compiling (#4638).
-
- Removed dependency on deprecated Boost.System functions (#4672).
-
-
-
-
- Ensured close()/closesocket()
- failures are correctly propagated (#4573).
-
-
-
-
- Added a check for errors returned by InitializeCriticalSectionAndSpinCount
- (#4574).
-
-
-
-
- Added support for hardware flow control on QNX (#4625).
-
-
-
-
- Always use pselect() on HP-UX, if it is available (#4578).
-
-
-
-
- Ensured handler arguments are passed as lvalues (#4744).
-
-
-
-
- Fixed Windows build when thread support is disabled (#4680).
-
-
-
-
- Fixed a Windows-specific problem where deadline_timer
- objects with expiry times set more than 5 minutes in the future may
- never expire (#4745).
-
-
-
-
- Fixed the resolver
- backend on BSD platforms so that an empty service name resolves to
- port number 0, as per the
- documentation (#4690).
-
-
-
-
- Fixed read operations so that they do not accept buffer sequences of
- type const_buffers_1
- (#4746).
-
-
-
-
- Redefined Protocol
- and id to avoid clashing
- with Objective-C++ keywords (#4191).
-
-
-
-
- Fixed a vector reallocation
- performance issue that can occur when there are many active deadline_timer objects (#4780).
-
-
-
-
- Fixed the kqueue backend so that it compiles on NetBSD (#4662).
-
-
-
-
- Fixed the socket io_control() implementation on 64-bit Mac OS X
- and BSD platforms (#4782).
-
-
-
-
- Fixed a Windows-specific problem where failures from accept()
- are incorrectly treated as successes (#4859).
-
-
-
-
- Deprecated the separate compilation header <boost/asio/impl/src.cpp>
- in favour of <boost/asio/impl/src.hpp> (#4560).
-
+ Fixed an integer overflow problem that occurs when ip::address_v4::broadcast()
+ is used on 64-bit platforms.
+
+
+
+
+ Fixed a problem on older Linux kernels (where epoll is used without
+ timerfd support) that prevents timely delivery of deadline_timer
+ handlers, after the program has been running for some time (#5045).
+
+
+
-
-
-
- Fixed an integer overflow problem that occurs when ip::address_v4::broadcast() is used on 64-bit platforms.
-
-
-
-
- Fixed a problem on older Linux kernels (where epoll is used without
- timerfd support) that prevents timely delivery of deadline_timer handlers,
- after the program has been running for some time (#5045).
-
+ IBM vacpp: Workaround for compiler bug affecting iterator_facade.
+ (#4912)
+
+
+
+
+ Verify, clarify, document that <boost/config/user.hpp>
+ can be used to specify BOOST_FILESYSTEM_VERSION.
+ (#4891)
+
+
+
+
+ Replaced C-style assert
+ with BOOST_ASSERT.
+
+
+
+
+ Undeprecated unique_path(). Instead, add a note mentioning
+ the workaround for lack of thread safety and possible change to cwd.
+ unique_path()
+ is just too convenient to deprecate!
+
+
+
+
+ Cleared several GCC warnings.
+
+
+
+
+ Changed V2 code to use BOOST_THROW_EXCEPTION.
+
+
+
+
+ Windows: Fix status() to report non-symlink reparse point
+ correctly.
+
+
+
+
+ Add symlink_option
+ to recursive_directory_iterator,
+ allowing control over recursion into directory symlinks. Note that
+ the default is changed to not recurse into directory symlinks.
+
+
+
+
+ Reference documentation cleanup, including fixing missing and broken
+ links, and adding missing functions.
+
+
+
+
+ Miscellaneous implementation code cleanup.
+
+
+
-
-
-
- Version 3 of the library is now the default.
-
-
-
-
- IBM vacpp: Workaround for compiler bug affecting iterator_facade.
- (#4912)
-
-
-
-
- Verify, clarify, document that <boost/config/user.hpp>
- can be used to specify BOOST_FILESYSTEM_VERSION.
- (#4891)
-
-
-
-
- Replaced C-style assert
- with BOOST_ASSERT.
-
-
-
-
- Undeprecated unique_path(). Instead, add a note mentioning the
- workaround for lack of thread safety and possible change to cwd. unique_path()
- is just too convenient to deprecate!
-
-
-
-
- Cleared several GCC warnings.
-
-
-
-
- Changed V2 code to use BOOST_THROW_EXCEPTION.
-
-
-
-
- Windows: Fix status() to report non-symlink reparse point
- correctly.
-
-
-
-
- Add symlink_option
- to recursive_directory_iterator,
- allowing control over recursion into directory symlinks. Note that
- the default is changed to not recurse into directory symlinks.
-
-
-
-
- Reference documentation cleanup, including fixing missing and broken
- links, and adding missing functions.
-
+ Breaking change: boost/proto/core.hpp
+ no longer defines functional::pop_front
+ and functional::reverse, which have moved to their
+ own headers under boost/proto/functional
+
+
+
+
+ Add callable wrappers for more Fusion algorithms (including fusion::at); and callable wrappers for
+ some std utilities like make_pair,
+ first and second, all under the new boost/proto/functional directory
+
+
+
+
+ Allow transforms to be specified separately from a grammar
+
- Breaking change: boost/proto/core.hpp
- no longer defines functional::pop_front
- and functional::reverse, which have moved to their
- own headers under boost/proto/functional
-
-
-
-
- Add callable wrappers for more Fusion algorithms (including fusion::at); and callable wrappers for some
- std utilities like make_pair,
- first and second, all under the new boost/proto/functional directory
-
-
-
-
- Allow transforms to be specified separately from a grammar
-
+ EV_ONESHOT seems
+ to cause problems on some versions of Mac OS X, with the io_service destructor getting stuck
+ inside the close() system call. Changed the kqueue
+ backend to use EV_CLEAR
+ instead (#5021).
+
+
+
+
+ Fixed compile failures with some versions of g++
+ due to the use of anonymous enums (#4883).
+
+
+
+
+ Fixed a bug on kqueue-based platforms, where some system calls that
+ repeatedly fail with EWOULDBLOCK
+ are not correctly re-registered with kqueue.
+
+
+
+
+ Changed asio::streambuf to ensure that its internal
+ pointers are updated correctly after the data has been modified using
+ std::streambuf member functions.
+
+
+
+
+ Fixed a bug that prevented the linger socket option from working
+ on platforms other than Windows.
+
+
+
-
-
-
- EV_ONESHOT seems to
- cause problems on some versions of Mac OS X, with the io_service destructor getting stuck
- inside the close()
- system call. Changed the kqueue backend to use EV_CLEAR
- instead (#5021).
-
-
-
-
- Fixed compile failures with some versions of g++
- due to the use of anonymous enums (#4883).
-
-
-
-
- Fixed a bug on kqueue-based platforms, where some system calls that
- repeatedly fail with EWOULDBLOCK
- are not correctly re-registered with kqueue.
-
-
-
-
- Changed asio::streambuf to ensure that its internal
- pointers are updated correctly after the data has been modified using
- std::streambuf member functions.
-
-
-
-
- Fixed a bug that prevented the linger socket option from working on
- platforms other than Windows.
-
+ Implemented various performance improvements, including:
+
+
+
+ Using thread-local operation queues in single-threaded use
+ cases (i.e. when concurrency_hint
+ is 1) to eliminate a lock/unlock pair.
+
+
+
+
+ Allowing some epoll_reactor
+ speculative operations to be performed without holding the
+ lock.
+
+
+
+
+ Improving locality of reference by performing an epoll_reactor's I/O operation
+ immediately before the corresponding handler is called. Also
+ improves scalability across CPUs.
+
+
+
+
+ Specialising asynchronous read and write operations for buffer
+ sequences that are arrays (boost::array
+ or std::array) of exactly two buffers.
+
+
+
+
+
+
+
+ Fixed compile error in regex overload of async_read_until
+ (#5688).
+
+
+
+
+ Fixed Windows-specific compile error by explicitly specifying the
+ signal()
+ function from the global namespace (#5722).
+
+
+
+
+ Changed deadline_timer
+ implementation to not read clock unless the timer heap is non-empty.
+
+
+
+
+ Changed SSL buffer sizes to be large enough to hold a complete TLS
+ record (#5854).
+
+
+
+
+ Fixed synchronous null_buffers
+ operations so that they obey the user's non-blocking setting (#5756).
+
+
+
+
+ Changed to set fd_set
+ size at runtime when using Windows.
+
+
+
+
+ Disabled MSVC warning due to const qualifier being applied to function
+ type.
+
+
+
+
+ Fixed crash that occurs when using Intel C++ compiler (#5763).
+
+
+
+
+ Changed OpenSSL initialisation to support all available algorithms.
+
+
+
+
+ Fixed SSL error mapping when session is gracefully shut down.
+
+
+
+
+ Added some latency test programs.
+
+
+
+
+ Clarified that a read operation ends when the buffer is full (#5999).
+
+ Made number of strand implementations configurable via BOOST_ASIO_STRAND_IMPLEMENTATIONS
+ macro.
+
+
+
+
+ Added support for BOOST_ASIO_ENABLE_SEQUENTIAL_STRAND_ALLOCATION
+ flag which switches strand allocation to use a round-robin approach
+ rather than hashing.
+
+
+
+
+ Fixed potential strand starvation issue that can occur when strand.post()
+ is used.
+
+ Added new series evaluation methods to the cyclic Bessel I, J, K
+ and Y functions. Also taken great care to avoid spurious over and
+ underflow of these functions. Fixes issue #5560.
+
+
+
+
+ Added an example of using Inverse Chi-Squared distribution for Bayesian
+ statistics, provided by Thomas Mang.
+
+
+
+
+ Added tests to use improved version of lexical_cast which handles
+ C99 nonfinites without using global facets.
+
+ Enabled long double support on OpenBSD (issue #6014).
+
+
+
+
+ Changed nextafter and related functions to behave in the same way
+ as other implementations - so that nextafter(+INF, 0) is a finite
+ value (issue #5832).
+
+
+
+
+ Changed tuple include configuration to fix issue when using in conjunction
+ with Boost.Tr1 (issue #5934).
+
+
+
+
+ Changed class eps_tolerance to behave correctly when both ends of
+ the range are zero (issue #6001).
+
+
+
+
+ Fixed missing include guards on prime.hpp (issue #5927).
+
+
+
+
+ Removed unused/undocumented constants from constants.hpp (issue
+ #5982).
+
+
+
+
+ Fixed missing std:: prefix in nonfinite_num_facets.hpp (issue #5914).
+
+
+
+
+ Minor patches for Cray compiler compatibility.
+
+ eUML: added easier event reprocessing: process(event_) and reprocess()
+
+
+
+
+ Rewrite of internal transition tables. There were a few bugs (failing
+ recursivity in internal transition tables of sub-sub machines) and
+ a missing feature (unused internal transition table of the main state
+ machine).
+
+
+
+
+ Bugfixes
+
+
+
+ Reverted favor_compile_time policy to Boost 1.46 state
+
+
+
+
+ none event now is convertible from any other event
+
+
+
+
+ eUML and pseudo exit states
+
+
+
+
+ Fixed not working Flag_AND
+
+
+
+
+ Fixed rare bugs causing multiple processing of the same event
+ in a submachine whose transition table contains this event
+ and a base event of it.
+
+
+
+
+ gcc warnings about unused variables
+
+
+
+
+
+
+
+ Breaking change: the new internal transition table feature causes
+ a minor breaking change. In a submachine, the "Fsm" template
+ parameter for guards / actions of an internal table declared using
+ internal_transition_table now is the submachine, not the higher-level
+ state machine. Internal transitions declared using internal rows
+ in the higher-level state machine keep their behavior (the "Fsm"
+ parameter is the higher-level state machine). To sum up, the internal
+ transition "Fsm" parameter is the closest state machine
+ containing this transition.
+
+ Breaking Change: Reduce numbers
+ of operator overloads by using rvalue references on compilers that
+ support them. Any user code that defines additional operator overloads
+ on Proto expressions could potentially be rendered ambiguous by this
+ change. The solution is to use a grammar to disable Proto's operators
+ that are made ambiguous by any user-defined operators.
+
+
+
+
+ Move definitions of Proto tag types into an ADL-blocking namespace.
+
+
+
+
+ Add second template parameter to proto::siwtch_
+ to control dispatching to cases.
+
+
+
+
+ Allow dependent domains to be specified with BOOST_PROTO_EXTENDS
+ and BOOST_PROTO_BASIC_EXTENDS.
+