[VPM] ANNOUNCE - Language::MuldisD v0.14.0 released

Darren Duncan darren at DarrenDuncan.net
Wed Dec 19 02:47:17 PST 2007


All,

--------

Happy 20th Birthday to Perl!  Larry Wall released Perl 1 to the 
public on 1987 December 18th.  Also, today is the general/stable 
release of Perl 5.10, its best version yet that can be used in 
production now.

--------

I am pleased to announce the release of Language::MuldisD 
official/unembraced version 0.14.0 on CPAN.  You can see it now, with 
nicely HTMLized documentation, at:

   http://search.cpan.org/dist/Language-MuldisD/

--------

All the important changes since release 0.11.0 were in the file Core.pod:

1.  Added new generic range-checking functions for any Ordered 
subtype.  These correspond to things like "is foo between bar and 
baz".

2.  Large improvements to how rules for rounding numbers are 
specified, the rules naming a target radix (2,10,etc), precision, and 
rounding method (floor,half_up,etc).  These are applied both when 
coercing irrational results of functions as rational values, as well 
as when explicitly rounding rationals to a different precision or to 
integers.  The point being to have very precise determinism for 
semantics when working with numbers, which are portable.

3.  Renamed a bunch of operators, most of them being relational operators, for
better consistency and understanding.  Also added some complement 
functions for various existing functions, like an "is not foo" to go 
with a "is foo", or a "all but bar" to go with "bar".

4.  Added a few integer functions, including '(inc|dec)rease' 
(meaning ++|-- or next|previous).  Note however that no other ordinal 
types have been given next/previous operators besides integers since 
they are more continuous rather than discrete (eg rationals), or 
there is no reasonable deterministic definition of what would come 
before/after a given value (eg, character strings).

5.  Added 4 new generic tuple operators: 'attr_from_Tuple', 
'Tuple_from_attr', 'attr', 'update_attr'.  Those allow reading or 
writing tuple attribute values, and are fundamentals for moving 
component values in and out of collections.

6.  Fleshed out the signatures and descriptions of all remaining 
listed generic relational operators: 'group', 'ungroup', 
'substitution', 'summary'.  Also added
these: 'cmpl_(wrap|group)', 'substitution_in_(restriction|semijoin)', 
'map', plus a few more.  Also added an initial complement of 6 
set-specific operators and 17 bag-specific operators (both sets and 
bags are specialized relation subtypes and can use relation operators 
too, sets more reliably than bags).

Between these additions, the Muldis D equivalents of the following 
additional tasks in SQL are now fully documented: SELECT (remainder), 
GROUP BY, summary reports / per-group aggregate operations (AVG, 
etc), whole-relation aggregate operations, UPDATE, ?MERGE/?REPLACE.

(Note that the equivalents of these SQL tasks were already documented 
in previous releases: SELECT (partial), FROM, inner joins, cross 
products, self-joins, WHERE/HAVING, IN/NOT IN, UNION, INTERSECT, 
MINUS, INSERT, DELETE, TRUNCATE, sub-selects anywhere, some 
hierarchical queries, scalar expressions, partial aggregate 
operations, invoking user-defined functions, more.)

7.  Added Maybe-specific operators 'attr_or_default', 'attr_or_value' 
which are like Perl's defined-or, or like SQL's 2-argument COALESCE 
or NVL or IF_NULL.

See the "Changes" file ( 
http://search.cpan.org/src/DUNCAND/Language-MuldisD-0.14.0/Changes ) 
for more details of what changed for this release.

--------

Still to do:

1.  Add relational operators for simplifying half-outer joins, which 
are short-hand for what you can already do with a 
restrict+join+extend|group+union.

2.  Add relational operators for sorting, quota queries, and sequence 
operations; that is, analogues to SQL's ORDER BY and LIMIT tasks, as 
well as order-significant aggregate operations on relation attributes 
(eg, catenate).

3.  Define more flow control operators like IF/ELSE, GIVEN/WHEN, etc.

4.  Flesh out and add catalog types for user-defined types, 
operators, value expressions, statements.  Flesh out the system 
catalog schema at the same time.

5.  Define short-hand data definition operators analagous to CREATE, 
ALTER, DROP etc.

6.  Flesh out and add system service operators like random numbers or 
current dates or simple generic I/O.

--------

Separately, an update 0.6.0 to Muldis::DB was released:

   http://search.cpan.org/dist/Muldis-DB/

Its main change was that the ::DBMS role/interface/object has been 
renamed and split into two, ::Machine and ::Process.  A Machine 
represents a whole virtual machine (such as a typical DBMS server), 
and a Process represents an autonomous thread of execution in it 
(such as a handler for one DBMS client connection).  To use Muldis DB 
now, you first create a Machine object like you used to create a DBMS 
object, then make a child Process object of that, and then 
subsequently you invoke in-DBMS routines, or make bind vars etc, with 
the Process.  Note that you can still use multiple storage depots in 
a single Process, such as for cross-database queries, but any 
transactions will commit or rollback them all as one; if you want 
autonomous transactions, that is what you use multiple Process for.

Its changes file has details.

The Muldis DB Example implementation is still not executing yet, sorry.

--------

Thank you. -- Darren Duncan


More information about the Victoria-pm mailing list