NAME

Language::MuldisD - Formal spec of Muldis D relational DBMS lang

VERSION

This document is Language::MuldisD version 0.9.1.

PREFACE

This is the root document of the Muldis D language specification; the documents that comprise the remaining parts of the specification, in their suggested reading order (but that all follow the root), are: Language::MuldisD::Basics, Language::MuldisD::Core, Language::MuldisD::Grammar, Language::MuldisD::PerlHosted, Language::MuldisD::Ext::Temporal, Language::MuldisD::Ext::Spatial.

DESCRIPTION

This distribution / multi-part document is the human readable authoritative formal specification of the Muldis D language, and of the virtual environment in which it executes. If there's a conflict between any other document and this one, then either the other document is in error, or the developers were negligent in updating it before this one, so you can yell at them.

The fully-qualified name of this multi-part document and the language specification it contains is MuldisD:'cpan:DUNCAND':'0.9.1'. It is the official/original (not embraced and extended) Muldis D language specification by the authority Darren Duncan (cpan:DUNCAND), version 0.9.1 (this number matches the VERSION pod in this file). Any modified versions of this Muldis D language specification that are released by someone else must have a long name with at least a different authority (middle) portion, to assist users and maintainers in distinguishing them from official releases. Furthermore, all code written in any representation format of Muldis D should specify the long name of the language specification that it is written in, to make it unambiguous to both human and machine (eg, implementing) readers of the code. (The Language::MuldisD::Grammar and Language::MuldisD::PerlHosted documents say how to do this for their language representation formats.)

Muldis D is a computationally / Turing complete (and industrial strength) high-level programming language with fully integrated database functionality; you can use it to define, query, and update relational databases. The language's paradigm is a mixture of declarative, functional, imperative, and object-oriented. It is primarily focused on providing reliability, consistency, portability, and ease of use and extension. (Logically, speed of execution can not be declared as a Muldis D quality because such a quality belongs to an implementation alone; however, the language should lend itself to making fast implementations.)

Muldis D is intended to qualify as a "D" language as defined by "Databases, Types, and The Relational Model: The Third Manifesto" (TTM), a formal proposal for a solid foundation for data and database management systems, written by Christopher J. Date and Hugh Darwen; see http://www.aw-bc.com/catalog/academic/product/0,1144,0321399420,00.html for a publishers link to the book that formally publishes TTM. See http://www.thethirdmanifesto.com/ for some references to what TTM is, and also copies of some documents that were used in writing Muldis D.

It should be noted that Muldis D, being quite new, may omit some features that are mandatory for a "D" language initially, to speed the way to a useable partial solution, but any omissions will be corrected later. Also, it contains some features that go beyond the scope of a "D" language, so Muldis D is technically a "D plus extra"; examples of this are constructs for creating the databases themselves and managing connections to them.

Muldis D also incorporates design aspects and constructs that are taken from or influenced by Perl 6, other general-purpose languages (particularly functional ones like Haskell), Tutorial D, various D implementations, and various SQL implementations (see the Language::MuldisD::SeeAlso file). It has also been suggested that some of the Muldis D design is like that of the Ada language, which I didn't really know anything about before writing it; this bears further investigation. Moreover, it has also been suggested by a different person that the Lua language design is very similar, in different ways, and from a glance, it certainly seems to be so.

In any event, the Muldis D documentation will be focusing mainly on how Muldis D itself works, and will spend little time in providing rationale; you can read the aforementioned external documentation for much of that.

Continue reading the language spec in Language::MuldisD::Basics.

Also look at the separately distributed Muldis::DB, which is the first main implementation of Muldis D.

SEE ALSO

Go to the Language::MuldisD::SeeAlso file for the majority of external references.

AUTHOR

Darren Duncan (perl@DarrenDuncan.net)

LICENSE AND COPYRIGHT

This file is part of the formal specification of the Muldis D language.

Muldis D is Copyright © 2002-2007, Darren Duncan. All rights reserved.

Muldis D is free documentation for software; you can redistribute it and/or modify it under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation (http://www.fsf.org/); either version 3 of the License, or (at your option) any later version. You should have received copies of the GPL as part of the Language::MuldisD distribution, in the file named "LICENSE/GPL"; if not, see http://www.gnu.org/licenses/.

Any versions of Muldis D that you modify and distribute must carry prominent notices stating that you changed the files and the date of any changes, in addition to preserving this original copyright notice and other credits.

While it is by no means required, the copyright holder of Muldis D would appreciate being informed any time you create a modified version of Muldis D that you are willing to distribute, because that is a practical way of suggesting improvements to the standard version.

ACKNOWLEDGEMENTS

None yet.

FORUMS

Several public email-based forums exist whose main topic is all implementations of the Muldis D language, especially the Muldis DB project, which they are named for. All of these you can reach via http://mm.DarrenDuncan.net/mailman/listinfo; go there to manage your subscriptions to, or view the archives of, the following:

muldis-db-announce@mm.DarrenDuncan.net

This low-volume list is mainly for official announcements from the Muldis DB developers, though developers of Muldis DB extensions can also post their announcements here. This is not a discussion list.

muldis-db-users@mm.DarrenDuncan.net

This list is for general discussion among people who are using Muldis DB, which is not concerned with the implementation of Muldis DB itself. This is the best place to ask for basic help in getting Muldis DB installed on your machine or to make it do what you want. You could also submit feature requests or report perceived bugs here, if you don't want to use CPAN's RT system.

muldis-db-devel@mm.DarrenDuncan.net

This list is for discussion among people who are designing or implementing the Muldis DB core API (including Muldis D language design), or who are implementing Muldis DB Engines, or who are writing core documentation, tests, or examples. It is not the place for non-implementers to get help in using said.

An official IRC channel for Muldis DB is also intended, but not yet started.

Alternately, you can purchase more advanced commercial support for various Muldis D implementations, particularly Muldis DB, from its author; contact perl@DarrenDuncan.net for details.