2005-09-10   Darren Duncan <[EMAIL PROTECTED]>
--------------------------------------------------

I am now pleased to announce the third developer release of my Rosetta rigorous database portability library, currently featuring the SQL::Routine module. (For reference, the second developer release was on 2005-04-03, and the first developer release was on 2004-08-07.)

The module set that can be broadly referred to as the 'Rosetta Framework' is composed of the following 6+ distributions; all of them are in native Perl 5 versions, and native Perl 6 versions are being co-developed beside Pugs (see its /ext directory for the latter).

A terse, 5-minute introduction to the framework as a whole can be found at http://darrenduncan.net/OSCON/OSCON2005LightningTalk.txt .

These native Perl 5 distributions are on CPAN now, http://search.cpan.org/~duncand/ :

  1. Locale-KeyedText-1.6.0.tar.gz
  2. SQL-Routine-0.70.0.tar.gz (dep on 1)
  3. Rosetta-0.48.0.tar.gz (dep on 1, 2); also holds Rosetta::Validator
  4. SQL-Routine-SQLBuilder-0.21.0.tar.gz (dep on 1, 2)
  5. SQL-Routine-SQLBuilder-0.2.0.tar.gz (dep on 1, 2)
  6. Rosetta-Engine-Generic-0.21.0.tar.gz (dep on 1, 2, 3, 4, 5)

For the bleeding edge, check out my new public Subversion repository (donated by Sam Vilain / mugwump), at http://svn.utsl.gen.nz/trunk/Rosetta/ .

Now, keep in mind that the over-all Rosetta Framework is in pre-alpha development status and DOES NOT WORK yet (but that the Locale-KeyedText component is complete and DOES work right now). The purpose of this developer release announcement is to remind interested people that they can look at my current development snapshot for reasons of study and feedback.

I welcome and encourage any and all feedback on these modules that you can give me. It would be VERY helpful to me. I am also grateful if you can find these modules useful in your own work. Likewise, if you have any questions, I will do my best to answer them. If you wish to help with their development in some way, I am also open to such offers.

----------

This list indicates some of the more significant changes to the framework since the second developer release, as I recall them from memory. For more details of this delta period, see the 'Changes' files that come with each of the above distributions.

* Starting with the current release set (2005-09-08), all modules and distributions now have three-part version numbers, which are more expressive, rather than floating point version numbers. Related to this, all modules also have gained dependencies on the 'version' and 'only' modules, which are available on CPAN; their functionality is built-in to Perl 6.

* There is now a public Subversion repository for all of these modules.

* 'SQL::Routine' and 'Rosetta' have gained a dependency on Scalar::Util (bundled with Perl) and use its weaken() function; object trees for each module will now auto-destruct normally, despite having circular references between them, and users no longer have to explicitly destroy() them.

* SQL::Routine::SQLBuilder now has a test suite and is actually known to work.

* 'SQL::Routine' has been simplified greatly. Nodes can no longer exist outside Containers, so there's no extra add/remove steps. The multiplicity of attribute-type specific Node attribute accessors are gone, with only more generic accessors remaining. The build_* methods now take a more terse input format, composed of mixed array and hash refs, rather than all hash refs.

* SQL::Routine has gained a number of security features, making it easier to share a model by reference between various program sections, without them stepping on each other. For example, one program section can place a read-lock on sections of the model it is generating actions from, so other sections can't change those and invalidate it.

* All files are now indented with spaces rather than tabs.

* Various POD sections have been reorganized/renamed/added, now better resembling the recommendation given by Damian Conway's "Perl Best Practices".

* 'Rosetta' has had huge changes to its API, to make it easier to use and more secure.

----------

This list indicates some of the most significant TODO items, which I expect to produce over the next few weeks, to end up with the fourth developer release.

* Make another large change set to the Rosetta API, which includes adding more Interface object types, making it more secure, and splitting 'compile' and 'prepare' apart from each other.

* Add functionality to Rosetta::Engine::Generic so that the framework as a whole can actually be used for something.

* Add a small demo app that demonstrates its being useful.

* Convert all objects to the inside-out format described in Best Practices, so to make it impossible for users to circumvent the API and mess with an object's properties directly; such users are the bane of many maintainers.

* Change the SQL routine meta model to more resemble Pascal rather than C, where you set a function's return value by assignment to a named psudo-argument, rather than invoking 'return' with a parameter; this makes a function's return values look the same as 'OUT' or 'INOUT' arguments to statements inside the function.

* Add explicit support for LOBs to the framework, such that large scalar values can be processed in chunks, rather than being entirely put in a scalar variable.

* Complete the read lock, mutex, and model-transaction feature of SQL::Routine.

* Add Module::Build support to the distros.

* Make a Bundle::Rosetta distribution.

* Whatever else needs doing.

----------

Have a good day. -- Darren Duncan

Reply via email to