Merge commit 'origin/master' into HEAD
[urisagit/Stem.git] / CHANGELOG
1 Stem Version 0.11
2 =================
3 Fri Dec  1 03:50:58 EST 2006
4
5
6 * The Stem event loop is layered and can easily wrap other event
7   loops. Supported event loops include Event.pm, perl/tk and wxperl and
8   a pure Perl event Loop. See Stem::Event.pm and Stem::Event::EventPM.pm
9   for more.  Other event loops that need wrapping include POE, Gtk and Qt.
10
11 * There is a pure Perl event Loop so Stem now runs on windows or on any
12   system where Event.pm isn't installed. 
13
14 * Full support for SSL on all socket related objects and cells.
15   Converting from a plain socket to an SSL socket just requires adding
16   the SSL arguments to the Stem::Socket contruction. All Stem modules
17   that use sockets use Stem::Socket which in turn uses IO::Socket::SSL
18   (and that needs openssl). If that module is not installed, its test
19   will be skipped.
20
21 * There is a Stem::UDPMsg cell that provides a UDP socket client and/or
22   server.
23
24 * The new Stem::Cell::Flow module provides a way for Stem cells to
25   handle a mix of sync/async (local/remote) method calls. You can create
26   a logic flow with if/else/while command in a simple mini-language.
27   This allows a cell to do complex operations such as accessing a DB
28   (via Stem::DBI) or fetching web pages and mix that with local method
29   calls that crunch the data. Normally this would entail a complex state
30   machine or having each method know the next one to call but
31   Stem::Cell::Flow allows you to convert that to a much simpler logic
32   flow. See the test script t/cell/flow.t and the lib/Stem/Test/Flow.pm
33   module for more on this. It requires Parse::RecDescent to be installed
34   (the test will be skipped if it is not found).
35
36 * A bunch of new tests were added:
37
38         Event loops
39         Sockets (both with and without SSL)
40         Stem::Cell::Flow
41
42 * There is a brand new install based on Module::Build. A Makefile.PL is
43   provided but it is a wrapper around the Module::Build installer. Stem
44   can now be installed with CPAN.pm
45
46 * There is more pod (and more is needed). All contructor attributes are
47   now automatically updated to pod by the stem2pod utility. That script
48   also inserts pod templates for all methods. This will make it easier
49   to add pod and keep it up to date.
50
51 * Cleaned up the INSTALL, README and other top level documents.
52
53 * Many more changes than I have room to write in this file.
54
55 Stem Version 0.10
56 =================
57 Nov-11-2002
58
59 * The version number has been bumped to 0.10 because of the large number
60   of changes and the major improvements in reliability and speed.
61
62 * Renamed Stem::TtyMsg to Stem::Console. Now it doesn't need any
63   arguments to be initialized. A Stem envioronment variable can be set
64   which will disable it. All the configuration files and demo scripts
65   have been updated to use it. The old TtyMsg module has been deleted.
66
67 * Added Stem::Test::Echo.pm and Stem::Load::Driver.pm. They support
68   benchmarking of basic message passing in multiple modes.
69
70 * Stem::Msg now only accepts the string format of message
71   addresses. This speeds up message creation and simplifies message
72   handling and delivery.
73
74 * Stem::Class now supports attribute type checking and
75   conversion. Supported types include boolean, list, hash, LoL (and
76   friends), object and handle.
77
78 * Stem::Conf has better error reporting. The Cell name and class are now
79   printed with the error.
80
81 * Added the reply_type field to messages. This is used to make simple
82   state machines with messages (used in the work sequencing system).
83
84 * Stem::Portal has been improved and now use the Stem::Packet module to
85   handle its buffering.
86
87 * Added Stem::Packet and Stem::Codec::*. These modules support
88   serializing (marshalling) Stem data for use in pipes and files. The
89   codec to be used can be selected in the configuration file. This is
90   now used in Stem::Portal and all worker mode operations. Current codec
91   include Perl (Data::Dumper/eval), YAML, and Storable.
92
93 * Split Log.pm into Log.pm and Log/Entry.pm. Moved Stem::LogTail.pm to 
94   Stem::Log::Tail.pm. Added Stem::Log::File which handles physical log
95   files including rotation and archiving.
96
97 * Added Stem::Trace.pm which gives modules a simple way to inject log
98   entries during program execution. It allows for creation of customized
99   Trace functions which can have defaults and different calling styles.
100
101 * Split Stem::Cell.pm into multiple files to make it easier to
102   maintain. These include Stem::Cell::Sequence.pm, Stem::Cell::Clone.pm,
103   Stem::Cell::Pipe.pm and Stem::Cell::Work.pm 
104
105 * Added the Stem::DBI module which is a Stem message based front end to
106   DBI. This Cell can be configured with the all the SQL needed for your
107   application which is shared by all the Cells that use it. It can be
108   run in its own Stem Hub (process) thereby providing non-blocking
109   access to the DB from other Hubs. A farm of these proxies can be
110   created and managed by a WorkQueue Cell which will support parallel DB
111   access from one or more Hubs.
112
113 * Added work sequencing support in Stem::Cell. This allows any Cell to
114   call local or remote methods and to manage their flow control. This is
115   an interim version that will be superseded by a new mini-language that
116   will be easier to code and will support more complex flow
117   (e.g. if/else/while). This is a very powerful feature that simplifies
118   complex state operations to simple flow control statements.
119
120 * Added the Stem::WorkQueue module which allows a set of work request
121   messages to be distributed to a set of worker Cells. Modified
122   Stem::Cell to support a cell to request a new work message.
123
124 * Created worker mode where an object (or data structure) gets
125   sent to a Cell via a message. The Cell can then write the object to a
126   socket or process or crunch it. The Cell then gets back the object
127   (presumably modified) and sends it back to the originator of the work
128   request. This is done in Stem::Cell and used in Stem::Proc,
129   Stem::Sock::Msg and Stem::DBI. 
130
131 * Created worker ready mode where a Cell can send out a message stating
132   it can receive a work message. Typically this will go to a WorkQueue
133   Cell. This message is sent out when the Cell starts up or after it
134   completes a previous work request.
135
136 * Added Stem::Boot.pm which will run a set of external programs and
137   monitor them. Their output can be logged and they can be
138   restarted. Other options (for each program) include setting the
139   initial directory and which host to run it on (via ssh if desired).
140   The set of programs and options are loaded via a configuration file
141   specific to this module.
142
143 * Added Stem::Inject.pm which has one method which will connect to
144   a Stem Hub and send it a single message. Then it will read back a
145   single message and return its data. This is meant to be used in Perl
146   programs that are not Stem driven and want to communicate with Stem
147   cells.
148
149 * Updated the Stem Cell cookbook with more examples. It now shows how to
150   create class and object cells and also how to create cloneable Cells.
151
152 Stem Version 0.06
153 =================
154 Feb-26-2002
155
156 * Stem is now released under the GPL. If you want to use Stem in a
157   product that will be sold, contact us about acquiring a commercial
158   license.
159         
160 * A simple and easy to use installation script is now included.  The
161   installation script allows you to have a Stem environment up and
162   running in a matter of minutes. Read the INSTALL document to learn how
163   to run this script.
164
165 * There is a new set of cookbook documents with examples.  These show
166   you how to develop new Stem Cells.
167
168 * Complete documentation is now included for all demonstration
169   scripts included with Stem.
170
171 * Stem Message Addresses can now be in a string form as well as the hash
172   form. This simplifies creating addresses in Stem configurations. All
173   the installed configurations now use this format. See the Address
174   design notes for more on this.
175
176 * The Stem::Cell module has been added. It supports generic functionality for
177   Stem Cells, including cloning, asynchronous I/O, and pipes. It
178   currently is used by the Stem::Proc and Stem::SockMsg modules. All
179   future Cells that need those services can use this module.
180
181 * The modules Stem::Proc and Stem::SockMsg have been rewritten to use
182   Stem::Cell.  They are much shorter and simpler now that the common
183   Cell functions are handled by Stem::Cell.
184
185 * A new module, Stem::Gather, has been added. It allows you to
186   synchronize multiple asynchronous events. It triggers a callback when
187   all of its required tokens have been 'gathered'.
188
189 * Bug fixes and general system improvements.