]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/statechart/doc/future_and_history.html
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / statechart / doc / future_and_history.html
CommitLineData
7c673cae
FG
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 &amp; 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&lt;&gt;::processor_handle</code> so
55 that <code>fifo_scheduler&lt;&gt;::create_processor&lt;&gt;()</code> and
56 <code>fifo_scheduler&lt;&gt;::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&lt;&gt;</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&lt;&gt;</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&lt;&gt;</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&lt;&gt; &amp; in_state_reaction&lt;&gt; 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&lt;&gt;::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&lt;&gt;::create_processor&lt;&gt;, 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&lt;&gt;</a>
177 (due to feedback from Sean Kelly)</li>
178 <li>Adapted fifo_scheduler&lt;&gt; 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&lt;&gt;</code> (due to
187 feedback from Federico J. Fern&aacute;ndez)</li>
188 <li>Made <code>event&lt;&gt;</code> copy-assignable (Federico J.
189 Fern&aacute;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 &gt;= 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&lt;&gt;::post_event</code> and added a
207 <code>const event_base &amp;</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 &amp; 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&lt;&gt;::operator new</code> &amp;
270 <code>simple_state&lt;&gt;::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&lt;&gt;</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&lt;&gt;</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&lt;&gt;::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&lt;&gt;</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&iacute;n
329 M L&oacute;pez Mu&ntilde;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&lt;&gt;</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 &amp; 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&lt;&gt;</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&lt;&gt;</code> and
576 <code>fifo_worker&lt;&gt;</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&lt;&gt;</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&lt;&gt;</code> to
598 <code>fifo_scheduler&lt;&gt;</code> and updated documentation and
599 examples accordingly</li>
600
601 <li>Changed the <code>fifo_scheduler&lt;&gt;</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&lt;&gt;</code>
611 and <code>asynchronous_state_machine&lt;&gt;</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&lt;&gt;</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&lt;&gt;</code>,
665 <code>asynchronous_state_machine&lt;&gt;</code> or
666 <code>worker&lt;&gt;</code></li>
667
668 <li><b>Breaking change</b>: Reordered template arguments of
669 <code>state_machine&lt;&gt;</code> and
670 <code>asynchronous_state_machine&lt;&gt;</code>. This change only affects
671 users who customized <code>state_machine&lt;&gt;</code> or
672 <code>asynchronous_state_machine&lt;&gt;</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&lt;&gt;</code> and
686 <code>worker&lt;&gt;</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) &amp; 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 &copy; 2003-2010 <a href="contact.html">Andreas Huber
717 D&ouml;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>