"Extension Types" Implementation

Thought I'd mention that this has been jostled, to where now 2 bits of the byte that had previously been allocated to just the "heart" are now taken by the SIGIL (either none, TIE PIN, or META).

That pushes back to just 64 possibilites for the heart... minus one for TYPE_0 as the "custom/extension" type.

BUT... it's not as much of a constraint to have 63 fundamental types as it once was! Obviously, the TYPE_0 affords arbitrarily many more types...with the drawback being that those types have to sacrifice one of their 3 non-header cell slots for their "actual" type information (the ExtraHeart, called so because it's a pointer resident in the Cell's "extra" slot).

Yet also, because the types do a lot more heavy lifting. CHAIN! takes care of not just a:b:c but also a: and :b and a/b: etc. And since ^foo and friends are handled by a sigil on the word, there's no longer a need for META-WORD! as one of the 63 fundamental types... it's just a sigil on a WORD!.

So in fact, only 33 fundamental types are used right now... leaving 30 more available.

1 Like