Commit | Line | Data |
4536f655 |
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. |