Re: (random) musings on I/O disciplines
[email protected] (Dan Sugalski) Wed, 27 Sep 2000 16:18:00 -0400
| Newsgroups | perl.perl6.internals.unicode |
|---|---|
| Message-ID | <[email protected]> |
At 07:20 PM 9/27/00 +0100, Nicholas Clark wrote: >On Wed, Sep 27, 2000 at 01:26:18PM -0400, Dan Sugalski wrote: > > At 11:04 PM 9/26/00 +0100, Simon Cozens wrote: > > >Well, let's go over here, then. I just submitted an RFC for internal > string > > >abstraction, which may or may not be the same thing as what you were just > > >talking about. > > > > Well, the impression I get from Larry is that he wants the internals to be > > character-formatting neutral. Scalars should be able to provide their > > contents in a number of different formats, but perl would usually not have > > One True Format internally. (Though how many True Formats there were might > > depend on the size of the platform--tiny ones might be all Unicode, or > > ASCII, or something) > > > > I think the intention is that if data comes in in ASCII or EBCDIC or > > Unicode or Shift-JIS or binary or whatever then perl will keep it that way > > if it understands the format, and convert as needed by bits of the core. > >Which to me would suggest that there would be an API whereby code would >ask "can I have the contents of this SV in format blah" (where blah was one >of the core's understood formats) and you'd get data either direct from the >(son of) SV, or trigger a conversion from whatever format the SV actually >held data in. Yup, that's built into the vtable stuff. There's a 'get_string' entry in the vtable that is really an array of function pointers. Each entry in the array returns the scalar's data in a different format. Entry 0 returns raw bytes, 1 might be UTF8, 2 UTF16, 3 EBCDIC, 4 UTF32, 4 Shift-JIS... you get the picture. Conversion might be lossy (EBCDIC<->ASCII generally is) and might go through several steps if a variable doesn't know how to get from A to B (EBCDIC to Shift-JIS, say), but that's OK. >And all parts of perl would only get data via that API (ie all files not >called sv.c for current perl on a strict interpretation) > >Whether that conversion was cached (And how long for) would be left as >an exercise for the garbage collector. Or the variable itself. Integers might not cache their conversion to strings, for example. I really need to finish the vtable RFC and get it into -internals for another going over. Dan --------------------------------------"it's like this"------------------- Dan Sugalski even samurai [email protected] have teddy bears and even teddy bears get drunk