future_and_history.html 27 KB

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