Rosetta
view release on metacpan or search on metacpan
lib/Rosetta/TODO.pod view on Meta::CPAN
=pod
=encoding utf8
=head1 NAME
Rosetta::TODO -
TODO list for Rosetta
=head1 DESCRIPTION
This document maps out a rough development plan the Rosetta DBMS framework,
so you know in roughly what order I plan to implement various features.
When something is implemented, it will be removed from this list and
instead be reflected elsewhere, such as the main documentation or the
Changes files. There are no specific time scales but you can assume that,
at any given time, the handful of items at the top of the list should
become available within a month's time. Of course, the list is subject to
be changed as I become better aware of circumstances, and that can be
influenced by work done by other people.
=head1 THE LIST
Some list items will be fulfilled within the "Rosetta" distribution, while
others will be fulfilled within external distributions that use it.
=head2 SHORT TERM GOALS
=over
=item *
Implement starter Rosetta::Model module, which in its first post-rewrite
incarnation will resemble a limited XML DOM, having typed nodes with
attributes, but never having 'cdata' sections. Input checking will be kept
to a minimum initially, with Rosetta::Model assuming its input is correct;
eventually the input checking code will make up most of the mass of this
module, and most of that will be done on demand rather than automatically.
=item *
Implement starter Rosetta module, which has few classes and little
functionality per class. Initial classes include: Rosetta::Interface, to
represent 'globals'; Rosetta::Interface::Engine, to represent one loaded
Engine class (like a 'drh'); Rosetta::Interface::Connection, to represent
one database connection (like a 'dbh'); Rosetta::Interface::Routine (like a
'sth'), to represent one compiled or prepared set of one or more
instructions to run against a database; Rosetta::Engine::Cursor, a handle
to an open cursor or a result set that is being buffered by the Engine;
Rosetta::Engine::[RowArray|Row|ScalarArray|Scalar], which holds literal
results or input; Rosetta::Engine::LOB, which is a handle to a scalar value
being either fetched or input piecemeal. There may also be an exception
object that is thrown when something fails, if a Locale::KeyedText::Message
object isn't used instead. There may also be a Rosetta::Engine class which
is strictly a role that all Rosetta Engines must subclass/implement.
=item *
Implement starter Rosetta::Engine::Example module, which is able to create
and drop multiple databases that live fully in RAM and don't persist on
disk; later versions will also let you make databases that can persist on
disk. The first version will only implement creation and dropping of base
table schema objects as well as perform trivially simple selects, inserts,
updates, deletes. Selects will initially be limited to the form 'select
<list> from <single-table> where <condition>', using simple expressions.
Other data manipulation and more complex queries will come later, and other
schema objects. No table constraints will be supported yet, but later.
=item *
Rosetta::Engine::Example will work mainly by generating Perl closures that
are a fairly literal translation of the Rosetta D AST, doing some work
themselves and invoke some utility functions for others.
=item *
Basic transaction support will be available from the start. In
Rosetta::Engine::Example, these will be serialized-isolation mode only.
=item *
Named users can be created or dropped, and some basic access privileges can
be defined, granted to or revoked from users, and enforced.
=item *
Explicit thread safety will not be implemented any time soon, though with
care you may be able to use Rosetta in a multi-threaded environment.
=item *
All scalar data will be coerced into Perl strings but otherwise be left as
is, and it will initially not be tested for correctness, such as for valid
numbers or dates; everything will be treated as strings. Also, the
encoding of strings will be ignored, as Perl does whatever below scenes.
( run in 0.711 second using v1.01-cache-2.11-cpan-2398b32b56e )