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

_______________________________________________
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/[EMAIL PROTECTED]

Reply via email to