--------------------------------------------------------------------
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"


+ IDEAS +

study the perl compiler (ExCxx)

perl magic should be non-lazy

bridges
  use a doubly-linked ring
  pool allocation

Perl variables do not need to increment database refcnts as long as
deleted data is not referenced.  Envision two modes:
1. Don't increment, but enable extra code to check for improper use.
2. Don't increment.  Performance should be better but crashes are
possible.

Support for multiple application schemas
  generic scalar object typemap
  XPVMG abstraction
  REFCNT
  Bit::Vector

transactions
  keep a single transaction stack
  begin('update!',...): force switch to update?
  void os_transaction::set_name(const char*); 
  char* os_transaction::get_name();


+ VAGUE POSSIBILITIES +

posh
  merge with ObjStore::Posh::Cursor?
  display style?  web integration?  cgi-posh?

overloaded refs

~magic ownership check?

$ref->notify('m1', 'batch'); ???

configure unique index duplicate row behavior?

configure(...) : relax parameter limitation

remove copy of sv_dump

split all the server goodies into a separate package?

switch representations dynamically
  cursor syncronization: check os_typespec
  do arrays first
  lock representation... hm...
  generate 'new' methods at compile time

typemap
  do large strings without copying?
  SV set magic?
  there are still some mysterious problems?

permutation magic for AVHV
  ObjStore::Index::_(un)protect?

translate('transient', $persistent)

asyncronous signals can cause perl to SEGV? (known perl bug)

move ObjStore::subscribe back into ObjStore::Notification?

optimize splash suite
  hash performance sucks
  arrays are inefficient

ObjStore::Index
  $t->select(['*'], sub { my $r = shift; ... }); ??why

Threads!
  renovate thread specific stuff in ObjStore.xs

pathexam
  invisibly auto-traverse references?

get_database
  factor
  os_server::get_databases() ignores bless; yikes!

per- database/segment shared hash key strings?  (for small hashes?)

prune debugging stuff

posh
  Devel::Symdump->methods when peeking if blessed?
  Multiple sessions per user?  Who cares?
  Call system() when in ufs?  How about rawfs?
Peeker
  fix comma - $o->comma, then check in $o->nl
  fix for "$at = " prefix ?

cache last lookup to avoid gv_fetchmethod(NOREFS)?

script to insure consistent podding? (get Pod::Parser?)

finish migration to OSPV_Cursor2

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

transaction hooks?

factor error messages like diagnostics.pm?

depreciate os_object_cursor?

ObjStore::File!  Use a FatTree of 4K buffers?

automatically spooge $ObjStore::RUN_TIME if @ISA changes?

install HTML versions of the pod files & gif image

notifications
  notify should in/out string length!  #SE057480_O#

change_schema_key:
  delete database INC, checksum %INC, light up security flags?
  open: require each %INC, verify checksums (unless some flags is set)
  TAINTing?

Make XS code more efficient.  (How?)

Evolve the schema to eliminate this harmless annoyance:  The object at 0xdff30194(</elvis/export2/os/tmp/perltest | 2 | 194>)(type "OSPV_hvdict"), contains a pointer at 0xdff301a0(OSPV_hvdict::OSPV_Generic::OSPV_Container::OSSVPV.classname) with the illegal value 0xe0582d28. The declared type "char" is incompatible with the type of the object at address </elvis/export2/os/tmp/perltest | 4 | 2d28>(OSPV_avarray::OSPV_Generic::OSPV_Container::OSSVPV::os_virtual_behavior|vtbl{os_virtual_behavior*}).  The type of this object is: OSPV_avarray.


+ BIGGISH PROJECTS +

optional pool allocation of numeric types
  configurable block size
  store offset in xiv!
  think about performance

Needed is a more flexible hash table that can serve to replace
os_Dictionary and also be used as an ObjStore::Index.
