You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Resolve all remaining outstanding issue (see next section)
Attempt to vendor 0.8.0-alpha.N into Fuchsia in order to find bugs (we won't be able to actually land this since it will require a temporary workaround for #1292)
Release 0.8 but do not publicize it
Put up PRs to other crates to use 0.8
Do things in the "Do before we publicize 0.8" section below
Is macro_util::enum_has_padding sound in the face of bothrepr(C) and repr(Int) layouts (specifically when the two result in different field packing regarding padding)?
Decide on our policy regarding whether adding #[deprecated] is an MSRV-breaking change; if we decide that it's not, then we can remove some blockers for 0.8
Deprecate FromZeros::new_boxed_slice_zeroed and replace with method which supports slice DSTs?
Consider making macros into functions which fail via post-monomorphization error. This has the advantage of supporting transmutations in generic contexts, but the downside of the cross-crate post-monomorphization footgun. It's possible that this can't be supported given our MSRV and our desire to support these macros/functions in a const context.
Alternatively, we could always use a macro, but use toolchain version detection to either use the current macro logic or, on more recent toolchains, use a generic function
0.8
Release plan
Definitely include
#[derive(IntoBytes)]on unions, work to guarantee forwards-compatible soundness #1792Run cargo-semver-checks; audit output to make sure it's as we expectmacro_util::enum_has_paddingsound in the face of bothrepr(C)andrepr(Int)layouts (specifically when the two result in different field packing regarding padding)?#[derive(IntoBytes)]on types with#[repr(align)]#1748Addimpls that permit adding to native types (e.g.Add<f32> for F32) and other traitsRefunalignedconstructors #1720extend_vec_zeroedandinsert_vec_zeroedfallible #1653UnsafeCell" property into separateImmutabletrait; allowFromZeros,FromBytes, andAsByteson types withUnsafeCells #251#[deprecated]is an MSRV-breaking change; if we decide that it's not, then we can remove some blockers for 0.8FromZeros::new_boxed_slice_zeroedand replace with method which supports slice DSTs?Deref, change some methods to associated functions? #210addr_of!for read-only-ness #1607#[derive(IntoBytes)]only supports unsized types which arerepr(packed)#1566KnownLayoutwill result in more users trying out unsized typesImmutabletypes assumed not to containUnsafeCells #1358Ptrtype needs to handle zero-sized types #874syn, or choose a different workaround #1088Unalign::setwithreplaceorswap(which returns the original)? Strictly more powerful.TryFromBytes- conditional conversion analogous toFromBytes#5AsBytesfor fields with a size set as a generic constant #1182Resolve rust-lang/unsafe-code-guidelines#429 before releasingNoCell for Box<T>whereT: SizedImmutabletypes assumed not to containUnsafeCells #1358constcontext.Into<&[u8]>bound fromIntoByteSlice? #1260try_transmute!#1018PointerMetadata::size_for_metadatacan return size which overflowsisize#1158FromBytesconversion methods #1059Refconstructors which zero bytes? #1134transmute_mut!documents looser requirements than what is implemented #1046IntoBytes::as_mut_bytes#986byteordercrate, makebyteordertype methodsconst#438FromZeroesis misspelt #431FromZeroestoFromZeros#430Ref<core::cell::Ref<[u8]>, _>::into_refis unsound #716Ptrtype should reason aboutUnsafeCelloverlap #873TryFromBytes::is_bit_validforUnalign<T>#897derive(FromBytes)should implicitly deriveFromZerosandTryFromBytes#925AsBytesjust as we do forFromZeroesInclude if we have time
try_variants to some methods, make existing methods panic #284as_bytes_muttoas_mut_bytes#253#[must_use]annotation to some types, functions, and macros #188Do before we publicize 0.8
#[derive(IntoBytes)]on generic enums emits code with an arity error. #1642syn, but this isn't true.cargo fix-like tool) #1295TryFromBytes::try_xxx_with_elems?TryFromBytes::try_read_from_prefixandtry_read_from_suffix?#[diagnostic::on_unimplemented]to improve padding error messages #1696IntoByteson unsized types #1708Non-breaking; do after 0.8 is released
cargo deadlinksto check for dead links #1021srcfield in error types public? #1685Unsizedtypes #993TryFromBytes for MaybeUninit<T>whenT: ?NoCell#893