Heya,

After seeing all the bruhaha on the list about keyed-ness, I thought I'd
try my hand at it, to see if I could get any farther before running up
into the wall. :)

Here's my own list of questions...first, the main problem with keys, as I
see it, is that there is no guiding PDD or spec that describes how they
should work. As such, people can only learn from the code. And that's a
mess. While basic key support is there, lots of things are
half-implemented, or incorrectly implemented, and it's quite hard to get a
coherent picture. At least, imho.

Where are keys going to be stored? Currently, they exist only on the
system stack, and key_new and key_clone are unused. Will we eventually
have free-floating keys? Should we create support that causes them to be
stored in small-object pools?

I see that certain ops accept a type called KEY, which acts exactly like
INT. And I mean *exactly*. It pulls data from INT registers, and even the
'k' and 'kc' type translate into accesses that look exactly like 'i' and
'ic'.

Are we planning on having key creation and mutation operations? Where will
these keys be stored in order to operate on them? INT registers? (Sorta
how it is now, although it looks wrong). STR registers? (Means they need
to be headered, DOD'ed, and a larger per-key size). Will they get their
own registers, maybe only 8 deep?

What about the possibility for constructing/operating on keys using a Key
PMC. We could convert to/from real KEYs by using the PMC. This is
basically just a sidestep of the above problem.

Currently, I see:
set_keyed_integer:
PK*
PI*
*PI
*PK

set_keyed:
PS*
*PS
PN*
*PN

set:
PPPP

What's the point of set_keyed versus set_keyed_integer naming? There
doesn't seem to be any overlap at all, so set_keyed_integer could safely
be named set_keyed.

Can we safely remove "set PPPP", due to the relative inefficiency in
constructing dummy PMCs to call it? Wouldn't it be more efficient to split
the call into two "set PP*",and "setP*P" calls?

Thanks,
Mike Lambert

Reply via email to