Skip to content

Conversation

@lukewagner
Copy link
Member

This PR relaxes the temporary limitation that same-instance stream/future reads/writes trap if the element type is not empty to also allow the integral and floating-point number types. The reason for the limitation is that, for more-complex types, specifying and implementing the exact behavior in the case where the source and destination linear-memory overlap (which is only possible when the readable and writable ends are same-instance) is pretty tricky. However, @dicej points out that the behavior is still quite simple when the element types are plain copyable numbers (it's as-if you read all elements and then wrote all elements, i.e., memmove, not memcpy), and allowing these (esp. stream<u8>) will address a common use case. (FWIW, lazy-lowering avoids the complexity for the complex types and makes it easy to remove the trap.) I'll add a .wast test once there's an impl draft I can test on.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants