Draft
Conversation
Add a (limited) way to add specific information to a ShapeError Admittedly wonky, but space efficient. Result<(), ShapeError> used to be 1 byte, and with this change it expands to 16 bytes (2 usize on 64-bit). The remaining 15 bytes are used for optimistically packing as much of extra info into the error message as possible. For example we can store expected/actual index for errors (for example index out of bounds or axis out of bounds, these are not so commonly handled with ShapeError). With this change it is supported: - Expected/actual index with 7 bytes per index - Expected/actual shape with 7 bytes per shape supports storing shapes with one or two bytes (< 256²) per dimension, with limited ndim.
Where possible, add expected/actual information to the ShapeError. In many places it is identified new places where more specific ErrorKinds and error messages are needed. These are not updated here - a comment is inserted - this will be updated in a future version, when we can accept breaking changes.
31abaa1 to
5f34c4a
Compare
Member
Author
|
I guess I needed to experiment with this no-alloc approach. This is a good starting point for also experimenting with an error in a Box, which also does fine on microbenchmarks. Maybe it can be optional. |
Member
Author
|
After exploring this, I'm ready to try adding something like |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add a (limited) way to add specific information to a ShapeError
Admittedly wonky, but maybe worthwhile.
Result<(), ShapeError> used to be 1 byte, and with this change it
expands to 16 bytes (2 usize on 64-bit).
The remaining 15 bytes are used for optimistically packing as much of
extra info into the error message as possible.
For example we can store expected/actual index for errors (for example
index out of bounds or axis out of bounds, these are not so commonly
handled with ShapeError).
With this change it is supported:
supports storing shapes with one or two bytes (< 256²) per dimension,
with limited ndim.