String

Yoshiki Ohshima ohshima at is.titech.ac.jp
Sat Mar 18 16:15:54 UTC 2000


  Hi Dan,

> I, too, am delighted to see how much you achieved.
> I had not looked through all your changes before.

  Thanks for saying this!

  The current implementation is still on-going and has much
flawed or undecided design decisions.  So any comments are
welcome.

> >  Creating AbstractString (or other name) and putting String
> >and MultiString (or some others) under it seems nice.
> >Allowing multibyte characters as selector (or as Symbol) is
> >the (mostly political) problem.  As someone wrote, assigning
> >an integer for each "Symbol" and modifying VM in this way
> >seems clean.
> 
> I just tested some stuff in the VM, and it doesn't seem to
> be working the way I remembered.  The code looks as though
> any object should work as a selector, as long as it has not
> overridden identityHash, but that's not what I observe.  It
> should be possible to use either the integer key or even to
> just make the Symbol16s unique the way we do with Symbol.  I
> will experiment some more so that, if the VM needs to be
> tweaked, we can get that support into 2.8.

  I don't have the rationale for how to tweak VM for now.
What I had in mind was that assigning integer for each
Symbol would result in much less text comparisons for some
cases, but as for selectors, the oop is enough for the
Symbol's identity.  Probably, permitting "any objects as
selectors" might be enough for this aspect.

  Another thing is that the text justification or text
wrapping rule varies from language to language.  In order to
achieve speed and flexibility, some (simple) callback
mechanism from textScanning primitive to Squeak would be
needed.  Designing this seems tough.

  By the way, the current implementation uses 1 byte and 4
byte represention for "characters", but I suppose most
non-asian people would feel it is wasteful to use 4 byte
representation.  Introducing 2 byte representation and
converting between 1/2/4 (or more) bytes representations
would be better.
# Here, I assume "O(1) time indexing" is important for
# Strings.

  Thank you.

  -- Yoshiki





More information about the Squeak-dev mailing list