On Mon, 24 Nov 2025 09:45:45 GMT, Liam Miller-Cushon <[email protected]> wrote:

> I have tentatively updated the new `MemorySegment#copy` to return the number 
> of bytes that were written. 

I think I understand the use case. E.g. say a client wants to write a bunch of 
variable length string to a segment, where the string is prefixed by length (a 
la protobuf). So what they can do is:

* write length at offset S
* write string at offset S + 4, this writes N bytes
* write next length at offset S + 4 + N
* write next string at offset S + 4 + N + 4, this writes M bytes
* ...

Effectively, this unifies `copy` with `setString` -- in the sense that now 
`setString` is just a string-based copy + a terminator write (at the correct 
offset) -- the size of the terminator is charset dependent.

I think overall it makes sense -- I believe @JornVernee proposed something 
similar in the past. It's true it's inconsistent with other `copy` method and, 
in hindsight, it would have perhaps been useful to always return a length 
(given that in other cases length is expressed in "elements" -- either array 
elements, or elements expressed in a given layout) -- although in the other 
cases the copy length can usually be computed using a shift operation.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/28043#issuecomment-3571253487

Reply via email to