[Dbix-class] ANNOUNCE: Rosetta/SQL-Routine developer release #3
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,
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
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
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
* 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
* '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
* 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