[Dbix-class] ANNOUNCE: Rosetta/SQL-Routine developer release #3

Darren Duncan darren at DarrenDuncan.net
Sun Sep 11 02:48:38 CEST 2005

2005-09-10   Darren Duncan <perl at DarrenDuncan.net>

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 

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

More information about the Dbix-class mailing list