[foreign-memaccess] RFR 8231402: layout API implementation is not constant enough
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Tue Sep 24 22:08:13 UTC 2019
For the records - the rationale behind MemorySegment::slice (and also
asReadOnly...) was driven by familiarity with ByteBuffer API. That is,
these concepts exist in the BB API with precisely those names, so I
thought it might have been better not to reinvent the wheel (given that
I can see people currently using BB for off-heap usages looking at this
API).
Maurizio
On 24/09/2019 22:14, John Rose wrote:
> On Sep 24, 2019, at 12:56 PM, Maurizio Cimadamore
> <maurizio.cimadamore at oracle.com
> <mailto:maurizio.cimadamore at oracle.com>> wrote:
>>
>>> The view factories seem to have a naming inconsistency; there is
>>> `asPinned` and `asReadonly`, but `slice`. Given the slightly odd
>>> treatment of views when it comes to temporal bounds, I would prefer
>>> the asXxx (which suggests you're going to use the view in place of
>>> the original) form, and suggest `asSlice` or `asNarrowed`.
>> Good point - yes, the slice is a view and all views should use
>> uniform naming.
>
> Not to go crazy at the bike shed, but it seems to me that spatially
> narrowed views are
> special enough to merit their own intuitive terminology, in the same
> way that
> List has just subList and not asSubList/asSlice. After all, the
> contiguous ordering
> of a segment of memory is probably its most salient property, and so
> slicing
> is one of the most fundamental operations. The access modes (tweaked by
> asReadOnly) and the temporal properties (tweaked by a scope API and/or
> view operations like asPinned) are less salient and don’t deserve special
> terms. (List has very limited view-constructors, but omitting subList
> is hard
> to imagine.)
>
> Also, unlike most view creation operation, the slice creation API has two
> degrees of freedom, and they vary over the whole datum being sliced.
> Most view creators (think Array.asList) re-interpret the *whole* datum
> with minimal configuration parameters. The effect of this can be seen
> by imagining the bikeshed color "asSubSegment” ("asSubSequence”,
> etc., as appropriate). How does that sound? It sounds wrong IMO,
> because the “as” part sets you up to look for a view, but then the “sub”
> part doesn’t parse, since no “foo” is alias-able to a “sub-foo” of itself.
> (The whole is greater than the part; Cantor’s pairing constructions, etc.)
> So a sub-foo is a little like an alias of a foo, but only *part* of a foo.
> Calling the sub-foo a “view” of a foo drops the most important fact,
> the part/whole distinction.
>
> So, my only objection to “slice” might be that it sounds like a verb
> where a
> noun is probably preferable (but it’s a noun also, which is why I
> don’t find
> it too difficult). I think a bikeshed color like “subSegment” or
> “makeSlice”
> is a better alternative to “slice” than “asSlice”.
>
> I promise to put away my spray paint now.
>
> — John
More information about the panama-dev
mailing list