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

bugs:
  where $j is persistent and $$j{errors} doesn't exist yet
  push @{$j->{errors}}, $m;

osperlserver
  test coverage analysis?

configure unique index duplicate row behavior?

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

transactions
  keep a single transaction stack
  begin 'update', $string;
  begin('update!',...): force switch to update?

posh
  'cd - ': go back to prior directory
  resolve cd paths per component!
  autodetect @INC modifications and print help message
  factor eval stuff more
  display style?  web integration?  cgi-posh?
  qt-posh?

document?
  What does an ObjStore server look like?
  What are stored procedures?


+ VAGUE POSSIBILITIES +

split all the 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?
  CLEAR seems broken with tied hashes:
    verify and submit bug reports (or fix the code!)
  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

Table3
  assign cursor focus to avoid malloc

Threads!
  renovate thread specific stuff in ObjStore.xs

Autoclassloading upon open?  Maybe not, you don't know what to load

pathexam
  invisibly auto-traverse references?

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

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

prune debugging stuff

Improve transaction memory management.  Go back to using doubly-linked
lists to destroy the bridge at soonest point.

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

posh
  improve pre/post eval logic
  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 the string length - #SE057480_O#

change_schema_key:
  delete database INC, checksum %INC, light up security flag
  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

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

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