1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2 3<html> 4<head> 5 <meta http-equiv="Content-Language" content="en-us"> 6 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> 7 <meta name="GENERATOR" content="Microsoft FrontPage 6.0"> 8 <meta name="ProgId" content="FrontPage.Editor.Document"> 9 <link rel="stylesheet" type="text/css" href="../../../boost.css"> 10 11 <title>The Boost Statechart Library - Overview</title> 12</head> 13 14<body link="#0000FF" vlink="#800080"> 15 <table border="0" cellpadding="7" cellspacing="0" width="100%" summary= 16 "header"> 17 <tr> 18 <td valign="top" width="300"> 19 <h3><a href="../../../index.htm"><img alt="C++ Boost" src= 20 "../../../boost.png" border="0" width="277" height="86"></a></h3> 21 </td> 22 23 <td valign="top"> 24 <h1 align="center">The Boost Statechart Library</h1> 25 26 <h2 align="center">Future & History</h2> 27 </td> 28 </tr> 29 </table> 30 <hr> 31 32 <h2>Contents</h2> 33 34 <dl class="index"> 35 <dt><a href="#ToDoList">To-do list</a></dt> 36 37 <dt><a href="#ChangeHistory">Change history</a></dt> 38 </dl> 39 <hr> 40 41 <h2><a name="ToDoList" id="ToDoList">To-do list</a></h2> 42 43 <p>The library is mostly complete. However, there is some work left 44 (<font color="#FF0000">red</font> = added as a result of the formal 45 review):</p> 46 47 <ol> 48 <li>Implement a choice-point-like class, as discussed in 49 <a href="http://thread.gmane.org/gmane.comp.lib.boost.devel/164460">this 50 thread</a></li> 51 52 <li>Optimize state-entry and state-exit for speed and code-size</li> 53 54 <li>Reimplement <code>fifo_scheduler<>::processor_handle</code> so 55 that <code>fifo_scheduler<>::create_processor<>()</code> and 56 <code>fifo_scheduler<>::destroy_processor()</code> no longer make 57 (indirect) calls to global <code>operator new()</code> and <code>operator 58 delete()</code></li> 59 60 <li>Ensure that everything is compileable with C++ RTTI support turned 61 off (this requires currently lacking support in Boost.Config and probably 62 a patch for <code>shared_ptr</code>)</li> 63 64 <li>Issue an error if <code>BOOST_STATECHART_USE_NATIVE_RTTI</code> is 65 defined when C++ RTTI is turned off</li> 66 67 <li>The current requirement to pass an <code>mpl::list<></code> to 68 specify inner initial states and reactions is too strict. Check the 69 requirements on the sequences and document them accordingly (David 70 Abrahams)</li> 71 72 <li>Make compilation performance measurements with mpl::vector and 73 mpl::deque instead of mpl::list to find out which is fastest. Document a 74 recommendation for the fastest container and change all examples 75 accordingly (David Abrahams)</li> 76 77 <li>Investigate how a state machine could be serialized. A first glance 78 at the serialization library revealed that there currently (1.33) is no 79 support for types that overload <code>operator new</code> (suitable code 80 is already present in the serialization library but it is currently 81 commented out due to incompatibilities with certain compilers). Such 82 support would be essential for Boost.Statechart serialization</li> 83 84 <li><font color="#FF0000">Implement a switch-like reaction (Simon 85 Gittins, Darryl Green)</font></li> 86 87 <li>Link incomplete code-snippets in the tutorial to complete example 88 code where available</li> 89 90 <li>Where appropriate, link the reference documentation to examples</li> 91 92 <li><font color="#FF0000">Add a description of the implementation and 93 better explain performance trade-offs (Jonathan Turkanis)</font></li> 94 95 <li><font color="#FF0000">Add links to descriptions of alternate 96 implementations and discuss performance trade-offs (Jonathan 97 Turkanis)</font></li> 98 99 <li><font color="#FF0000">Add a list of applications that use 100 Boost.Statechart (Paul A. Bristow)</font></li> 101 102 <li>Refactor the <code>state_machine</code> class template to reduce code 103 size in applications with many different state machines</li> 104 105 <li>Add a diagram that helps to understand what an unstable state machine 106 is</li> 107 108 <li>Comment MPL-heavy code</li> 109 110 <li>Add examples of often made mistakes</li> 111 112 <li>Implement <code>priority_scheduler<></code></li> 113 114 <li>Eliminate code-duplication in <code>fifo_scheduler</code> with PP 115 code submitted by Pavel Vozenilek</li> 116 117 <li>Add number and label to all diagrams in docs</li> 118 119 <li>Add <code>#pragma once</code> to all headers (speeds up compilation 120 with MS-compatible compilers)</li> 121 122 <li>Investigate whether and how <code>fifo_worker<></code> should 123 accept a policy parameter defining how to lock and wait</li> 124 </ol> 125 126 <h2><a name="ChangeHistory" id="ChangeHistory">Change history</a></h2> 127 128 <p>(<font color="#FF0000">red</font> = points raised during formal 129 review)</p> 130 <p>1.46.0</p> 131 <ul> 132 <li>Fixed Bug #4817 (The order of deferred events is not preserved under 133 certain circumstances), reported by Igor R</li> 134 <li>Fixed Bug #4511 (MSVC10 warning due to lack of placement operator 135 delete), reported by Igor R</li> 136 </ul> 137 138 <p>1.43.0</p> 139 <ul> 140 <li>Generalized the context() functions so that they can also return a 141 reference to any public base type of a context. This also makes 142 transition<> & in_state_reaction<> more general, reported 143 by Igor R</li> 144 <li>Added triggering_event()</li> 145 <li>Fixed Bug #3329 (shadow variable warnings), reported by Grant 146 Erickson</li> 147 <li>Fixed Bug #3963 (state_machine<>::post_event() should be 148 protected), reported by Arne Babnik</li> 149 </ul> 150 151 <p>1.40.0</p> 152 <ul> 153 <li>Fixed a bug that prevented the use of boost::ref() with 154 fifo_scheduler<>::create_processor<>, reported by Steve 155 Hawkes</li> 156 <li>Fixed bug #3092 (regression test failures in VC10 beta 1), reported by 157 Richard Webb</li> 158 </ul> 159 160 <p>1.38.0</p> 161 <ul> 162 <li>Fixed gcc-4.3 warning in state_machine.hpp (ticket #2389), reported by 163 Bryan Silverthorn</li> 164 </ul> 165 166 <p>1.36.0</p> 167 <ul> 168 <li>Removed all permanent warning suppressions from library headers 169 and avoided the resulting warnings with other means (suggested by 170 Steven Watanabe; thanks to Peter Dimov and Yuval Ronen for insight 171 into when C4511 & C4512 are issued)</li> 172 <li>Added the FAQ item <a href="faq.html#AssertInStateDestructor">Why 173 do I get an assert when I access the state machine from a state 174 destructor?</a> (due to feedback from Jiang Miao)</li> 175 <li>Added defaults for the last two template parameters of <a href= 176 "reference.html#ClassTemplatein_state_reaction">in_state_reaction<></a> 177 (due to feedback from Sean Kelly)</li> 178 <li>Adapted fifo_scheduler<> to the changed allocator interface of 179 boost::function</li> 180 <li>Changed the PingPong example to demonstrate how the inner workings of 181 an asynchronous_state_machine<> subclass can be hidden</li> 182 </ul> 183 184 <p>1.35.0</p> 185 <ul> 186 <li>Added placement new overload to <code>event<></code> (due to 187 feedback from Federico J. Fernández)</li> 188 <li>Made <code>event<></code> copy-assignable (Federico J. 189 Fernández)</li> 190 </ul> 191 192 <p>1.34.0</p> 193 <ul> 194 <li>Fixed a bug that prevented compilation of exception_translator.hpp 195 (reported by Oliver Kowalke) and adapted TransitionTest.cpp to also test 196 the exception_translator class</li> 197 198 <li>Fixed an allocator-related bug that led to compiler errors in many 199 tests on GCC >= 4.0</li> 200 201 <li>Fixed a number of issues that led to compile-time failures on Intel 202 9.0 and Code Warrior</li> 203 204 <li>Added compile-link tests for all examples</li> 205 206 <li>Documented <code>state_machine<>::post_event</code> and added a 207 <code>const event_base &</code> overload</li> 208 209 <li>example/Jamfile.v2 now also stages the dlls necessary to launch the 210 multithreaded PingPong examples</li> 211 212 <li>Added a FAQ item regarding UML2.0 conformance</li> 213 214 <li>Made the documentation of <code>unconsumed_event</code> more 215 visible</li> 216 217 <li>Declared <code>state_base::~state_base virtual</code> for GCC. This 218 makes state exit slightly slower but does away with loads of "has virtual 219 functions but non-virtual destructor" warnings</li> 220 221 <li>Made transitions to history UML2.0 compliant, see <a href= 222 "faq.html#Uml2">here</a> for more information</li> 223 224 <li>Tidied all html files & validated them with <a href= 225 "http://validator.w3.org/">http://validator.w3.org/</a></li> 226 227 <li>Fixed broken links</li> 228 <li>Fixed a few conformance problems that led to errors on HP compilers</li> 229 <li>Corrected documentation regarding allocation of states and events</li> 230 </ul> 231 232 <p>17 December, 2005</p> 233 234 <ul> 235 <li>Added detailed performance data to the performance document</li> 236 237 <li>Added the Performance "example" and the associated Performance.xls, 238 which were used to perform the more detailed measurements and draw the 239 associated charts that can now be found in the performance document</li> 240 241 <li>Simplified the BitMachine example (the performance measurement 242 functions are no longer needed)</li> 243 244 <li><font color="#FF0000">Removed the to-do item "Investigate how 245 constant-time dispatch for non-orthogonal state machines can be 246 implemented" suggested by David Abrahams, Jonathan Turkanis, Rob Steward 247 and Dave Gomboc. The more detailed performance measurements have shown 248 that the time spent for event dispatch is almost always small compared to 249 the time spent for state-entry and state-exit. See <a href= 250 "performance.html#SpeedVersusScalabilityTradeoffs">Speed versus 251 scalability tradeoffs</a> in the performance document for more 252 information</font></li> 253 254 <li>Fixed an order of declaration bug which caused a compile-time error 255 in event_base.hpp when compiled with GCC3.4.2 on HP-UX (the error neither 256 showed up on GCC3.4.2 on MinGW nor on MSVC7.1)</li> 257 258 <li>Tested with 1.33.1 version of the boost distribution</li> 259 </ul> 260 261 <p>14 August, 2005</p> 262 263 <ul> 264 <li><b>This release will only work with the 1.33.0 version of the boost 265 distribution</b></li> 266 267 <li><font color="#FF0000"><b>B</b></font><b><font color="#FF0000">reaking 268 change:</font></b> <font color="#FF0000">Added 269 <code>simple_state<>::operator new</code> & 270 <code>simple_state<>::operator delete</code> forwarding to the 271 allocator passed to <code>state_machine</code> (Peter Petrov). This 272 considerably simplifies memory management customization. A user now only 273 needs to pass his own allocator to <code>state_machine<></code> and 274 no longer has to separately overload <code>operator 275 new</code>/<code>delete</code> for his state classes. Existing state 276 classes for which memory management is not customized will thus 277 automatically use the allocator passed to 278 <code>state_machine<></code>. Existing state classes for which 279 <code>operator new</code>/<code>delete</code> is overloaded 280 <b>directly</b> will continue to work as before. The only case where 281 existing code will refuse to compile is when a state class inherits from 282 an additional base with overloaded <code>operator 283 new</code>/<code>delete</code> (leading to ambiguous call errors). 284 Forwarding functions need to be added to such state classes (see 285 BitMachine for an example)</font></li> 286 287 <li><b>Breaking change</b>: Added an Allocator parameter to the 288 <code>event</code> class template and added <code>event<>::operator 289 new</code>/<code>delete</code>. This makes customizing memory management 290 easier but could also break existing code (see previous point)</li> 291 292 <li>Added Jamfile.v2 files</li> 293 294 <li>Added <code>event_base</code> specializations to all reactions and 295 updated the reference accordingly. This allows to implement reactions 296 triggered by an event of any type</li> 297 298 <li>Added a facility allowing to specially handle events that did not 299 trigger a reaction. See point 10 of <a href= 300 "reference.html#process_event">process_event</a>() effects for more 301 information. Updated tests and docs accordingly</li> 302 303 <li><font color="#FF0000">Added a FAQ item explaining how to 304 trouble-shoot compile-time errors (John Spalding)</font></li> 305 306 <li><font color="#FF0000">Added a FAQ item that presents code for a 307 StopWatch variant that does not use state-local storage and explains the 308 drawbacks of that approach (Jeff Garland, Rob Steward)</font></li> 309 310 <li>Added a FAQ item explaining the pitfalls of dynamically linked 311 state-machines. Also added associated tests to find out whether and how 312 FSMs can be put into DLLs</li> 313 314 <li><font color="#FF0000">Removed the to-do item "Eliminate the need to 315 wrap a single templated inner initial state into an 316 <code>mpl::list<></code>" suggested by Jonathan Turkanis because I 317 don't currently see how this can be implemented without big ugly 318 workarounds. A description of the problem can be found here: <a href= 319 "http://thread.gmane.org/gmane.comp.lib.boost.devel/128741">http://thread.gmane.org/gmane.comp.lib.boost.devel/128741</a></font></li> 320 321 <li><font color="#FF0000">Put all remarks about code as comments inside 322 the code (Pavel Vozenilek, Augustus Saunders)</font></li> 323 324 <li>On suitable platforms the library should now be compileable with 325 exception support turned off (untested due to lacking access to such a 326 platform)</li> 327 328 <li>Added allocator support for broken std libs. Thanks to Joaquín 329 M López Muñoz for adding his allocator workarounds to 330 boost/detail</li> 331 </ul> 332 333 <p>19 June, 2005</p> 334 335 <ul> 336 <li>Updated the documentation for the new reaction specification 337 interface</li> 338 339 <li><font color="#FF0000">Invalid calls to reaction functions now always 340 lead to a failing runtime assert (Jonathan Turkanis). In debug mode the 341 <code>result</code> type is a class with destructive copy semantics, 342 enabling the detection of a wider range of reaction function abuses. 343 Added appropriate tests and updated the documentation</font></li> 344 345 <li><font color="#FF0000">Separated performance-related docs from the 346 rationale into a page of its own (Pavel Vozenilek)</font></li> 347 348 <li><font color="#FF0000">Added clone functionality to events so that 349 stack-allocated events can now be deferred and posted. Updated the 350 documentation and tests accordingly (Jonathan Turkanis)</font></li> 351 352 <li><font color="#FF0000">Clarified the definition of context (John 353 Spalding)</font></li> 354 355 <li><font color="#FF0000">Implemented 356 <code>in_state_reaction<></code>. Updated the documentation and 357 tests accordingly (Darryl Green)</font></li> 358 </ul> 359 360 <p>12 May, 2005</p> 361 362 <ul> 363 <li><font color="#FF0000"><b>Breaking change</b>: Changed the library 364 namespace from <code>fsm</code> to <code>statechart</code> (Alexander 365 Nasonov, David Abrahams)</font></li> 366 367 <li><font color="#FF0000"><b>Breaking change</b>: Changed the library 368 name from boost::fsm to Boost.Statechart (Alexander Nasonov, David 369 Abrahams)</font></li> 370 371 <li><font color="#FF0000"><b>Breaking change</b>: Reactions are now 372 specified with a <code>reactions</code> member typedef in a state class 373 declaration instead of a template parameter (Alexander Nasonov), not yet 374 documented.</font></li> 375 </ul> 376 377 <p>03 May, 2005</p> 378 379 <ul> 380 <li>Removed the to-do item for the <code>std::type_info</code> 381 replacement. Thanks to Jody Hagins for taking care of that!</li> 382 383 <li>Added to-do items for the issues uncovered during the review</li> 384 385 <li>Fixed documentation bugs in the effects descriptions for 386 <code>state_machine::initiate()</code>, 387 <code>state_machine::terminate()</code> and 388 <code>state_machine::process_event()</code></li> 389 390 <li><font color="#FF0000">Moved "Getting started" and "Audience" into 391 index.html (Augustus Saunders)</font></li> 392 393 <li><font color="#FF0000">Added Basic topics and Intermediate topics 394 headings and shortened the "How to read this tutorial" section (Augustus 395 Saunders)</font></li> 396 </ul> 397 398 <p>21 February, 2005</p> 399 400 <ul> 401 <li>Corrected the review period length mentioned above (absolutely no 402 changes to code and documentation)</li> 403 </ul> 404 405 <p>20 February, 2005</p> 406 407 <ul> 408 <li><b>Breaking change</b>: Incorporated a part of 409 <code>exception_translator::operator()</code> code into the 410 <code>state_machine</code> class template. This simplifies custom 411 exception translators and makes implementing them less error-prone</li> 412 413 <li><b>Breaking change</b>: A request to defer an exception event is no 414 longer honored and ultimately results in the exception being rethrown. 415 This change is the result of the rule that during the processing of an 416 exception no non-user code must be called that could itself propagate an 417 exception and thus mask the original exception (for event deferral 418 <code>operator new</code> must be called, which could throw). Exception 419 event deferral has always been a strange concept anyway</li> 420 421 <li>Various code brush-ups</li> 422 </ul> 423 424 <p>09 February, 2005</p> 425 426 <ul> 427 <li>Added exception testing to TransitionTest</li> 428 429 <li>Fixed a bug that led to an access violation when orthogonal region 0 430 of a state was terminated before exiting the state (either through 431 another termination or a transition)</li> 432 433 <li>Various minor changes</li> 434 </ul> 435 436 <p>07 February, 2005</p> 437 438 <ul> 439 <li>Added FifoSchedulerTest, TerminationTest, CustomReactionTest, 440 StateIterationTest, TypeInfoTest, StateCastTest, HistoryTest and tests 441 for inconsistent uses of history, unsupported types of deep history and 442 invalid statecharts</li> 443 444 <li>Fixed a bug that led to a compile-time error when 445 <code>state_downcast</code> was instantiated with a reference target</li> 446 447 <li>Fixed a bug that led to a null function pointer dereference when 448 history was cleared before making a transition to history</li> 449 450 <li>Updated the "Speed versus scalability tradeoffs" section</li> 451 452 <li>Fixed previously failing builds of single-threaded variants of the 453 PingPong example</li> 454 455 <li>Moved the "Incompatible compilers" section to index.html</li> 456 457 <li>Added explanation for the BitMachine & Handcrafted examples</li> 458 459 <li>Various minor changes</li> 460 </ul> 461 462 <p>25 November, 2004</p> 463 464 <ul> 465 <li>Adapted to the changes in the 1.32.0 distribution (mainly MPL 466 changes). The library no longer works with 1.31.0</li> 467 468 <li>Fixed a bug that led to a failing runtime assert during state machine 469 destruction</li> 470 471 <li>Fixed a bug that led to events deferred in a composite state not 472 being released when that state was left</li> 473 474 <li>Added TransitionTest and DeferralTest</li> 475 </ul> 476 477 <p>19 October, 2004</p> 478 479 <ul> 480 <li><b>Breaking change</b>: Out of the box, a state machine no longer 481 uses <code>exception_translator<></code> to translate exceptions 482 propagated into the framework. Instead, 483 <code>null_exception_translator</code> is now used, which does not catch 484 or translate any exceptions. Updated docs accordingly</li> 485 486 <li>Implemented <a href="tutorial.html#TwoStageExit">two stage exit</a> 487 and updated docs accordingly</li> 488 489 <li>Implemented an experimental feature that allows a transition action 490 to be a member of the transition source or any of its direct or indirect 491 contexts, see <a href= 492 "configuration.html#ApplicationDefinedMacros">BOOST_STATECHART_RELAX_TRANSITION_CONTEXT</a></li> 493 494 <li>Various small code and documentation improvements</li> 495 </ul> 496 497 <p>22 May, 2004</p> 498 499 <ul> 500 <li>Integrated the Intel 7.0 workarounds provided by Pavel Vozenilek 501 (most are std library workarounds)</li> 502 503 <li>Added the Intel 7.0 section to the configuration page</li> 504 505 <li>Updated copyright notices</li> 506 </ul> 507 508 <p>12 May, 2004</p> 509 510 <ul> 511 <li>Fixed a bug that could have led to an <code>exception_thrown</code> 512 event being sent to a state that is <b>not</b> the outermost unstable 513 state in an unstable state machine (as documented in the reference). 514 Instead, the event was sent to the state where the entry action of a 515 direct inner state threw an exception, which is only correct for state 516 machines without orthogonal regions. Also updated the <a href= 517 "tutorial.html#ExceptionHandling">Exception handling</a> section in the 518 tutorial, which now explains this behavior in detail</li> 519 520 <li>Fixed bug that, under extremely rare circumstances, would have 521 prevented the correct handling of out of memory situations</li> 522 523 <li>Fixed an inconsistency in the state entry sequence when a state in an 524 orthogonal region is the target of a transition originating outside its 525 direct outer state. Now the states are always entered according to the 526 number of their orthogonal region, i.e. orthogonal region 0 first, then 527 orthogonal region 1 and so on. Since the documentation did not define the 528 sequence (it does now) users should not notice any difference</li> 529 530 <li>Changed the implementation of <code>state_machine::terminate()</code> 531 so that orthogonal regions are now exited strictly from highest to lowest 532 number instead of arbitrarily as before. Updated docs accordingly</li> 533 </ul> 534 535 <p>22 April, 2004</p> 536 537 <ul> 538 <li>Removed the previously added BCC 5.6.4 fixes (the BCC port was 539 postponed due to lack of knowledge how to work around certain bugs)</li> 540 541 <li>Replaced all uses of <code>BOOST_STATIC_CONSTANT</code> with their 542 mpl counterparts (<code>bool_</code>, <code>integral_c</code>). As a 543 result, ports to buggy compilers should become easier</li> 544 545 <li>Clarified some bits in the tutorial and added StopWatch2.cpp, which 546 details an alternative way of retrieving state machine state</li> 547 </ul> 548 549 <p>10 April, 2004</p> 550 551 <ul> 552 <li>Added two BCC 5.6.4 fixes contributed by Pavel Vozenilek; 553 Boost.Statechart does not yet work on BCC though</li> 554 555 <li>Implemented a few of the documentation and code improvements 556 suggested by Pavel Vozenilek, including the new "UML to Boost.Statechart 557 mapping summary" document</li> 558 </ul> 559 560 <p>26 March, 2004</p> 561 562 <ul> 563 <li>Fixed a small Intel 8.0 bug in the BitMachine example</li> 564 </ul> 565 566 <p>25 March, 2004</p> 567 568 <ul> 569 <li>Now everything compiles warning-free on Intel 8.0</li> 570 </ul> 571 572 <p>21 March, 2004</p> 573 574 <ul> 575 <li><b>Breaking change</b>: <code>fifo_scheduler<></code> and 576 <code>fifo_worker<></code> now always work non-blocking by 577 default</li> 578 579 <li>Added gcc makefiles, contributed by Mitsuo Fukasawa</li> 580 581 <li>Added a fixed version of atomic_count_gcc.hpp to fsm.zip, see 582 <a href="http://lists.boost.org/MailArchives/boost/msg57537.php">http://lists.boost.org/MailArchives/boost/msg57537.php</a> 583 for more information</li> 584 </ul> 585 586 <p>16 March, 2004</p> 587 588 <ul> 589 <li><b>Breaking change</b>: Added the <code>FifoWorker</code> template 590 parameter to <code>fifo_scheduler<></code> and updated 591 documentation and examples accordingly</li> 592 </ul> 593 594 <p>13 March, 2004</p> 595 596 <ul> 597 <li><b>Breaking change</b>: Renamed <code>worker<></code> to 598 <code>fifo_scheduler<></code> and updated documentation and 599 examples accordingly</li> 600 601 <li>Changed the <code>fifo_scheduler<></code> implementation so 602 that a custom worker implementation needs to duplicate less code</li> 603 604 <li>Various other small code and doc changes</li> 605 </ul> 606 607 <p>03 March, 2004</p> 608 609 <ul> 610 <li><b>Breaking change</b>: Redesigned the <code>worker<></code> 611 and <code>asynchronous_state_machine<></code> class templates and 612 updated documentation accordingly. Event processors can now be added and 613 removed while a worker is running. Moreover, the new design allows for 614 custom workers with non-FIFO queueing schemes</li> 615 616 <li>The StopWatch example now uses <code>std::time()</code> instead of 617 <code>std::clock()</code></li> 618 </ul> 619 620 <p>09 February, 2004</p> 621 622 <ul> 623 <li>Integrated the standard conformance fixes contributed by Peter 624 Petrov. The library now also works on GCC 3.2 and should be much easier 625 to port to other highly conforming compilers</li> 626 627 <li>Added the state type information facility to 628 <code>simple_state</code></li> 629 630 <li>Added the function templates 631 <code>simple_state::clear_shallow_history()</code> and 632 <code>simple_state::clear_deep_history()</code></li> 633 </ul> 634 635 <p>11 January, 2004</p> 636 637 <ul> 638 <li>Finished reference documentation</li> 639 640 <li>Updated Copyright notices</li> 641 </ul> 642 643 <p>12 December, 2003</p> 644 645 <ul> 646 <li><b>Thanks to Mitsuo Fukasawa the tutorial is now also available in 647 Japanese!!!</b></li> 648 649 <li>Added a state type information facility</li> 650 651 <li>Added reference (unfinished) and configuration documentation and 652 updated other documents</li> 653 654 <li>Various code brush-ups (no breaking changes)</li> 655 </ul> 656 657 <p>12 October, 2003</p> 658 659 <ul> 660 <li><b>Breaking change</b>: Removed <code>rtti_policy<></code> from 661 the interface. By default, the library now uses its own (often faster) 662 RTTI implementation. Users can demand the use of native C++ RTTI by 663 defining <code>BOOST_STATECHART_USE_NATIVE_RTTI</code>. This change only 664 affects users who customized <code>state_machine<></code>, 665 <code>asynchronous_state_machine<></code> or 666 <code>worker<></code></li> 667 668 <li><b>Breaking change</b>: Reordered template arguments of 669 <code>state_machine<></code> and 670 <code>asynchronous_state_machine<></code>. This change only affects 671 users who customized <code>state_machine<></code> or 672 <code>asynchronous_state_machine<></code></li> 673 674 <li>Added shallow/deep history support and updated documentation 675 accordingly</li> 676 677 <li>Added various compile-time sanity checks</li> 678 679 <li>Added 1 FAQ (asked by Mitsuo Fukasawa)</li> 680 </ul> 681 682 <p>16 August, 2003</p> 683 684 <ul> 685 <li>Added <code>asynchronous_state_machine<></code> and 686 <code>worker<></code> and updated documentation accordingly</li> 687 688 <li>Various minor bug fixes and code improvements (no breaking interface 689 changes)</li> 690 691 <li>Added Keyboard and PingPong examples</li> 692 693 <li>Added .pdf documentation</li> 694 </ul> 695 696 <p>08 June, 2003</p> 697 698 <ul> 699 <li>Added 3 FAQs (asked by Bohdan) & 1 definition</li> 700 701 <li>Removed the superfluous public derivation specifiers in the tutorial 702 and the examples as suggested by Aleksey Gurtovoy</li> 703 704 <li>Various code improvements (no interface changes)</li> 705 706 <li>Various html improvements</li> 707 </ul> 708 <hr> 709 710 <p><a href="http://validator.w3.org/check?uri=referer"><img border="0" src= 711 "../../../doc/images/valid-html401.png" alt="Valid HTML 4.01 Transitional" 712 height="31" width="88"></a></p> 713 714 <p>Revised 04 April, 2010</p> 715 716 <p><i>Copyright © 2003-2010 <a href="contact.html">Andreas Huber 717 Dönni</a></i></p> 718 719 <p><i>Distributed under the Boost Software License, Version 1.0. (See 720 accompanying file <a href="../../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or 721 copy at <a href= 722 "http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>)</i></p> 723</body> 724</html> 725