]>
Commit | Line | Data |
---|---|---|
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 & 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> |