=head1 NAME

ObjStore - Perl Extension For C<ObjectStore> OODBMS

=head1 SYNOPSIS

Enjoy perl?  Sick of SQL?  Ready to try something new?

=head1 DESCRIPTION

ObjectStore is the market leader in object-oriented databases
http://www.odi.com (NASDAQ: ODIS).  They use a unique Cache-Forward
Architecture to make persistent data available in literally the most
efficient manner possible.

Prior to this joining of forces ObjectStore was too radical a design
decision for many applications and perl5 did not have a simple way of
storing complex data persistently.  Now there is an easy way to build
database applications (especially if you are concerned about
preserving your ideals of encapsulation).

=head2 INCLUDED TOOLS

=over 4

=item * ospeek

Prints out databases in Data::Dumper style.

=item * posh & qtposh

Like C<sh>/C<csh>, except that you can I<change directory> B<into>
your database and walk around the data from the inside.  You can also
invoke methods on your objects or write custom reports (in perl, of
course :-).  (Also similar to C<isql>/C<wisql>.)

=item * osperlserver

Provides remote method invokation, database job scheduling, and
server-object collaboration services.  Completely generic!

=back

=head1 PREREQUISITES

You will need:

- ObjectStore OODBMS (see http://www.odi.com; evaluations are available!)

- Perl 5.004_04 (or perl 5.005, once released)

- Tree::Fat & Test perl extensions

- ExtUtils::ExCxx (only needed on Digital UNIX, HP (5.x), OS/2 (3.x),
  or MS Windows NT/95; send email)

See http://www.perl.com/CPAN/authors/id/JPRIT/ !


=head1 R!CENT CHANGES


** 05-30-98 RELEASE 1.40

- Scrubbed code with Insure++ (Parasoft).  Insure++ is a product
similar to Purify, except better.  Fixed a bug in the os_Dictionary
hash representation.

- A better effort is made to vivify the @ISA tree when it is
(partially) unloadable.  This change is aimed towards allowing the
creation of databases without any .pm file support (discardible
scaffolding).

- Relaxed restrictions on comparing index keys of differing type.

- & the usual suite of minor bug fixes...

- Edit the Makefile.PL to add -DOSP_SAFE_BRIDGE if you still need it!!


** 05-10-98 RELEASE 1.39

- Fixed a long standing problem with transaction memory usage.  Memory
associated with keeping track of persistent objects is now released as
soon as possible (instead of at the end of the transaction).  A true
checkpoint is now possible (but insufficiently tested).

- Optionally, during update transactions reference counts are no
longer affected by reads (this was not the case in prior versions!).
Efficiency of certain types of updates should be improved.  You will
need to manually invoke the HOLD method in the rare circumstance that
a transient variable is the only reference to a persistent object (or
otherwise risk a SEGV/BUS error).  Due to the gravity of this change,
the optimization is turned off for 1.39 by default.  In anticipation
of enabling it, a warning is generated to help pinpoint any problems
in existing code.  Please test your code against 1.39 before upgrading
to the next release!!

- Lots of tweaks.  Reorganized transaction code and osperlserver.  All
allocators should now accept 'transient' as a valid segment.
ObjStore::Serve and ObjStore::Server supercede the jumbled logic
initially prototyped in ObjStore::Process.


see ./INSTALL for hints on installation
see ./UPGRADE to evolve databases from prior releases
see ./TODO for a list of stuff in the queue
see ./CHANGES for a visionary perspective


Perl-ObjectStore mailing list:

majordomo@parallax.co.uk   "subscribe perl-objectstore you@your.company.com"

1. If you think you've run into a bug, try running your script with
"perl -MObjStore=PANIC" and mail the output to the mailing list.

2. The mailing list is also available for job postings (as long as
they relate to this extension.  FYI, I am not myself currently
looking.  :-)

-------------------------------------------------------------------------
Copyright © 1997-1998 Joshua Nathaniel Pritikin.  All rights reserved.

This package is free software and is provided "as is" without express
or implied warranty.  It may be used, redistributed and/or modified
under the terms of the Perl Artistic License (see
http://www.perl.com/perl/misc/Artistic.html)