--------------------------------------------------------------------
TODO      DOTODOTODOTODOTODOTODOTODOTODOTODOTODOTODOTODOTO      TODO


If you are interested in contributing, subscribe to the OS/Perl
mailing list.  Send email to majordomo@parallax.co.uk with the
following in the body of your message:
  "subscribe perl-objectstore you@your.company.com"


Optimize for flexibility, then memory performance, then speed.

1. Flexibility
Flexibility is the most important because ObjectStore should be easy
to use and everyone complains that it can't do SQL.  We'll show 'em!

2. Memory Performance
Memory performance is also very important due to the potential size of
databases.  Small memory efficiency improvements in a 5TB database
have an impact.

3. Speed
Speed is pretty good already, compared to a relational database!  Not
that there isn't always room for improvement...


+ IDEAS +

Threads!

posh
  detect @INC modifications and print help message
  persist command history!
    remember the string used to 'cd' and show during 'pwd'?
  tkposh ?

t/
  churning stress test
  ISA: check complete tree & basic_type check

ospeek
  -depth switch?

move AVHV to separate file

complain if 'is_corrupted' is re-defined in subclass?

Why does _new_bridge get passed itself twice?  Could this be a mistake?

optimize: do autoclassloading upon open

Peeker
  fix comma - $o->comma, then check in $o->nl
  fix for "$at = " prefix ?

Support for notification, database access control

nuke -lC

_Per_segment_data is not free'd when no longer needed

use Error


+ VAGUE POSSIBILITIES +

Improve transaction memory management.  Go back to using doubly-linked
lists to destroy the bridge as soon as possible.

iterating over AVHV is broken - cursor is stored in the ossv_bridge
  unmagic the keys hash - make non-lazy?

posh
  improve pre/post eval logic
  nuke $view->{where}
  $at->open('mvcc') ?
  Devel::Symdump->methods when peeking if blessed?
  Multiple sessions per user?  Who cares?
  Call system() when in ufs?  How about rawfs?

cache last lookup to avoid gv_fetchmethod(NOREFS)?

script to insure consistent pod grammer? (get Pod::Parser)

migrate to OSPV_Cursor2

move all ospv->sv conversions back into ObjStore/ObjStore.xs

assignment to $SIG{SEGV} should not reset SEGV handler

Weak refs are currently not used.  Add weak collections?
Reference weaken/strengthen?  Use some bits in OSSVPV?

Split GENERIC into ObjectStore & Splash parts?

transaction hooks?

depreciate os_object_cursor?

ObjStore::File.  Support Verity full text indexing?

Seems like there might be memory leaks on the transient side...?

Make XS code more efficient.  (How?)


+ BIGGISH PROJECTS +

Makefile.PL ?? (yuk)

For arrays, how about a tree of array slabs where slab size is
proportional to cardinality?  It's not O(1), but it should
be close enough for small data sets.  Big data sets are slow anyway.

Find replacement for os_dictionary that is lighter weight
(liboscol.so.sun.4.0 is 2.7M of code & 200k of schema), uses less
memory, does in-order traversals roughly sorted by address (?), and
has cursors that use references instead of pointers.  Also need
cursors that are seek'able and can find the distance between cursors.
Anything on the net suitable?  GE_COOL or AVL_Tree?  Any b-trees?

Support for multiple application schemas (expected 1Q98)

Add support for parts of the TimeSeries Object Manager?


+ CORE-PERL WISH LIST +

The TIE interfaces are not as detailed as the built-ins.  I should be
able to hide whatever necessary complexity in the module that
implements the 'tie' so the user doesn't have to know anything
special.  How about lvalues?  How about proper support for nested
structures?
