Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pointer][transmute] Support generic TransmuteFrom #1910

Open
wants to merge 3 commits into
base: I1ac2ae177a235083e33b09fc848423220d3da042
Choose a base branch
from

Conversation

joshlf
Copy link
Member

@joshlf joshlf commented Oct 15, 2024

This commit replaces the TransparentWrapper trait with a more generic,
bidirectional TransmuteFrom<T> trait. U: TransmuteFrom<T> indicates
that T and U have the same sizes and that T can be transmuted into
U given certain alignment and validity invariant mappings.

Makes progress on #1122


This PR is on branch ptr-overhaul.

@joshlf joshlf force-pushed the I7af68cdaa5ea47ab245a942d1cbd8bc5e6407223 branch from 99a8250 to 19f7378 Compare October 15, 2024 14:01
@joshlf joshlf force-pushed the Ifc49755af0d90eeefe7822d755d508403c266bda branch from 3b9ac7b to c88e77f Compare October 15, 2024 14:15
@joshlf joshlf force-pushed the I7af68cdaa5ea47ab245a942d1cbd8bc5e6407223 branch from 19f7378 to 140f430 Compare October 15, 2024 14:15
@joshlf joshlf force-pushed the Ifc49755af0d90eeefe7822d755d508403c266bda branch from c88e77f to c3a2206 Compare October 16, 2024 19:04
@joshlf joshlf force-pushed the I7af68cdaa5ea47ab245a942d1cbd8bc5e6407223 branch from 140f430 to ac39cec Compare October 16, 2024 19:04
@joshlf joshlf force-pushed the Ifc49755af0d90eeefe7822d755d508403c266bda branch from c3a2206 to 7643459 Compare October 17, 2024 01:31
@joshlf joshlf force-pushed the I7af68cdaa5ea47ab245a942d1cbd8bc5e6407223 branch from ac39cec to 41cd8a9 Compare October 17, 2024 01:31
@joshlf joshlf force-pushed the I7af68cdaa5ea47ab245a942d1cbd8bc5e6407223 branch from 41cd8a9 to 90c2f64 Compare October 17, 2024 03:22
@joshlf joshlf force-pushed the I7af68cdaa5ea47ab245a942d1cbd8bc5e6407223 branch from 90c2f64 to 65c71f6 Compare October 17, 2024 18:46
@joshlf joshlf force-pushed the Ifc49755af0d90eeefe7822d755d508403c266bda branch from 7643459 to b36cb1c Compare October 17, 2024 18:46
@joshlf joshlf force-pushed the I7af68cdaa5ea47ab245a942d1cbd8bc5e6407223 branch from 65c71f6 to a1fc228 Compare October 18, 2024 16:00
@joshlf joshlf force-pushed the Ifc49755af0d90eeefe7822d755d508403c266bda branch from b36cb1c to 4bd33fb Compare October 18, 2024 16:00
@joshlf joshlf force-pushed the I7af68cdaa5ea47ab245a942d1cbd8bc5e6407223 branch 3 times, most recently from a6e7783 to af10d3d Compare October 18, 2024 16:56
@joshlf joshlf changed the base branch from Ifc49755af0d90eeefe7822d755d508403c266bda to I1ac2ae177a235083e33b09fc848423220d3da042 October 18, 2024 16:56
@joshlf joshlf force-pushed the I7af68cdaa5ea47ab245a942d1cbd8bc5e6407223 branch from af10d3d to 235702a Compare October 18, 2024 17:30
@joshlf joshlf force-pushed the I1ac2ae177a235083e33b09fc848423220d3da042 branch from ac629d9 to 53deb0a Compare October 18, 2024 17:30
@joshlf joshlf changed the title [WIP][pointer] Support generic TransmuteFrom [pointer][transmute] Support generic TransmuteFrom Oct 18, 2024
@joshlf joshlf force-pushed the I7af68cdaa5ea47ab245a942d1cbd8bc5e6407223 branch from 235702a to f0fc37e Compare October 18, 2024 17:33
@codecov-commenter
Copy link

codecov-commenter commented Oct 18, 2024

Codecov Report

Attention: Patch coverage is 56.79012% with 35 lines in your changes missing coverage. Please review.

Please upload report for BASE (I1ac2ae177a235083e33b09fc848423220d3da042@4795dcd). Learn more about missing BASE report.

Files with missing lines Patch % Lines
src/pointer/transmute.rs 32.65% 33 Missing ⚠️
src/util/macros.rs 33.33% 2 Missing ⚠️
Additional details and impacted files
@@                             Coverage Diff                              @@
##             I1ac2ae177a235083e33b09fc848423220d3da042    #1910   +/-   ##
============================================================================
  Coverage                                             ?   89.76%           
============================================================================
  Files                                                ?       17           
  Lines                                                ?     5806           
  Branches                                             ?        0           
============================================================================
  Hits                                                 ?     5212           
  Misses                                               ?      594           
  Partials                                             ?        0           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@joshlf joshlf force-pushed the I7af68cdaa5ea47ab245a942d1cbd8bc5e6407223 branch from f0fc37e to 9b71dc8 Compare October 18, 2024 17:43
@joshlf joshlf force-pushed the I1ac2ae177a235083e33b09fc848423220d3da042 branch from 53deb0a to 4795dcd Compare October 18, 2024 17:43
@joshlf joshlf force-pushed the I7af68cdaa5ea47ab245a942d1cbd8bc5e6407223 branch from 9b71dc8 to 1bee133 Compare October 19, 2024 01:45
This prepares us to rename `TransparentWrapper` to `TransmuteFrom`,
which we'll do in a follow-up commit to preserve nice git diffs.

Makes progress on #1122

gherrit-pr-id: Ifc49755af0d90eeefe7822d755d508403c266bda
We previously used `AliasingMapping`s and `Inaccessible` to model
`UnsafeCell` agreement. This abuses the notion of a mapping since one
doesn't ever actually want to change the aliasing of a pointer (and
certainly not to `Inaccessible`) - really this was meant to model
pointer casts which should never be performed. In addition to being an
awkward fit, the presence of `Inaccessible` meant that code could not
assume that any `Aliasing` invariant permitted reading, and so we had to
add extra machinery to work around this.

Future commits will use a different, simpler model for denoting
`UnsafeCell` agreement or disagreement.

While we're here, make `Read` slightly more permissive, implemented for
`A: Aliasing, T: Immutable` rather than just `A: Reference, T:
Immutable`.

Makes progress on #1122, #1866

gherrit-pr-id: I1ac2ae177a235083e33b09fc848423220d3da042
This commit replaces the `TransparentWrapper` trait with a more generic,
bidirectional `TransmuteFrom<T>` trait. `U: TransmuteFrom<T>` indicates
that `T` and `U` have the same sizes and that `T` can be transmuted into
`U` given certain alignment and validity invariant mappings.

Makes progress on #1122

gherrit-pr-id: I7af68cdaa5ea47ab245a942d1cbd8bc5e6407223
@joshlf joshlf force-pushed the I1ac2ae177a235083e33b09fc848423220d3da042 branch from 4795dcd to 94165e5 Compare October 21, 2024 19:24
@joshlf joshlf force-pushed the I7af68cdaa5ea47ab245a942d1cbd8bc5e6407223 branch from 1bee133 to 4ea2f82 Compare October 21, 2024 19:24
@joshlf joshlf force-pushed the I1ac2ae177a235083e33b09fc848423220d3da042 branch 3 times, most recently from 33fc89f to 48f1450 Compare October 24, 2024 20:51
@joshlf joshlf force-pushed the I1ac2ae177a235083e33b09fc848423220d3da042 branch from 48f1450 to 355531d Compare November 11, 2024 22:40
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.

2 participants