8.3 KiB
8.3 KiB
Changelog
Notable changes to this crate will be documented in this file.
The format is based on Keep a Changelog.
Unreleased - YYYY-MM-DD
4.1.0 - 2025-01-22
Added
- Added
Encoding::size, which computes the size of the encoded type for the current target.
Changed
- Equivalence comparisons now consider
Encoding::Class,Encoding::ObjectandEncoding::Blockas equivalent.
4.0.3 - 2024-05-21
Fixed
- Fixed an issue with publishing using an older version of Cargo that didn't
handle the
lints.workspace = trueCargo setup properly.
4.0.2 - 2024-05-21 (Yanked)
Added
-
Added
Encoding::None, which represents encodings where the host compiler (i.e.clang) couldn't generate an encoding for a given type.This is useful when working with SIMD types.
4.0.1 - 2024-04-17
Changed
- Build documentation on docs.rs on more Apple platforms.
4.0.0 - 2023-12-03
Changed
- BREAKING: Changed the type of
EncodingBox::StructandEncodingBox::Unionto no longer contain anOption.
Fixed
- Fixed encoding equivalence between empty structs and unions.
- Parse (and ignore) extended type information.
3.0.0 - 2023-07-31
Fixed
- Bumped version number to ensure that this crate can be compiled together
with code that depends on pre-releases of
2.0.0.
2.0.0 - 2023-06-20
Added
- Improved documentation slightly.
2.0.0-pre.4 - 2023-02-07
Added
- Made the crate
no_stdcompatible. - Made the crate platform-agnostic.
Changed
- BREAKING: Moved the
Encode,RefEncode,EncodeArguments,EncodeConvert,OptionEncodetoobjc2. - BREAKING:
Encoding::BitFieldnow allows omitting the type using anOption. - BREAKING: Changed length field in
Encoding::Arrayfromusizetou64(to be platform-agnostic).
Fixed
- Fixed
Encoding::BitFieldencoding parsing.
2.0.0-pre.3 - 2022-12-24
Added
- Added
EncodingBoxfor dynamically parsing encodings and creating them on the heap. - Added
ParseError, a custom type that represents errors during encoding parsing. - Added
Encoding::equivalent_to_boxfor comparingEncodingandEncodingBox. - Implemented
EncodeandRefEncodeforNonNull<c_void>. - Added
OptionEncodeto help with implementingEncodeandRefEncodeforOption.
Changed
- BREAKING: Verify that the name in
Encoding::StructandEncoding::Unionis a valid C identifier.
Removed
- BREAKING:
Encodingno longer implementsCopy, though it is stillClone. - BREAKING: Removed
Encoding::equivalent_to_start_of_str, since it wasn't really useful.
2.0.0-pre.2 - 2022-08-28
Added
- Added
EncodeConverttrait to help with correctly handlingBOOL/bool.
Changed
- BREAKING: Remove the lifetime specifier from
Encoding, since the non -'staticversion was essentially useless.
Fixed
- Fixed the encoding output and comparison of structs behind pointers.
Removed
- BREAKING:
bool(andAtomicBool) no longer implementsEncode, since that was difficult to use correctly. See theEncodeConverttrait, or useobjc2::runtime::Boolinstead.
2.0.0-pre.1 - 2022-07-19
Added
- Added
Encoding::Atomic. - Implement
EncodeandRefEncodeforstd::sync::atomictypes.
Changed
- BREAKING: Renamed
Encoding::C_U_LONGtoEncoding::C_ULONG.
2.0.0-pre.0 - 2022-06-13
Added
- Added
Encoding::C_LONGandEncoding::C_U_LONGto help with platform compatibility; use these instead ofc_long::ENCODINGandc_ulong::ENCODING. - Implement
EncodeandRefEncodeforMaybeUninit<T>, whereTis properly bound.
Changed
- BREAKING: Sealed the
EncodeArgumentstrait. - BREAKING: Add type argument to
Encoding::BitField.
Removed
- BREAKING: Removed
PartialEqimpl betweenstrandEncodingsince it was incorrect (it violated the trait requirements). - BREAKING: Removed
EncodeandRefEncodeimplementations forPinsince it may not be sound.
2.0.0-beta.2 - 2022-01-03
Added
- Implement
HashforEncoding.
Changed
- Improved documentation.
2.0.0-beta.1 - 2021-12-22
Added
Encoding::equivalent_to,Encoding::equivalent_to_strandEncoding::equivalent_to_start_of_strmethods for more precise comparison semantics.- Added
EncodeandRefEncodeimplementations forOptionfunction pointers.
Changed
- Discourage comparing
strwithEncodingusingPartialEq. This trait impl might get removed in a future version.
2.0.0-beta.0 - 2021-11-22
Added
- BREAKING: Add
Encoding::LongDouble,Encoding::FloatComplex,Encoding::DoubleComplexandEncoding::LongDoubleComplex. - Implement
RefEncodefor all number types that implementEncode(bool,i8,usize,f32,NonZeroU32, and so on). - Implement
RefEncodefor*const c_voidand*mut c_void(allowingvoid**in C). - Implement
EncodeandRefEncodeforWrapping<T>, whereTis properly bound.
Changed
- BREAKING: Make
Encoding#[non_exhaustive]. This will help us in evolving the API while minimizing further breaking changes. - Discourage using
bool::ENCODING; useobjc2::Bool::ENCODINGinstead. - Discourage using
()::ENCODINGfor anything other than as a function return type.
2.0.0-alpha.1 - 2021-09-01
Added
- Improved documentation.
- Add
RefEncodetrait, which represents types whose pointers has an encoding. This means you now only have to implementRefEncode, and not both&Encodeand&mut Encode. Additionally, encodings of pointers to pointers (to pointers, and so on) are now supported. - Implement
EncodeforNonZeroXandOption<NonZeroX>integer types. - Implement
RefEncodefor arrays. - Implement
EncodeandRefEncodefor (whereTis properly bound):ManuallyDrop<T>Pin<T>NonNull<T>Option<NonNull<T>>
- Add
EncodeArgumentstrait, to represent an ordered group of functions arguments, where each argument has an Objective-C type-encoding. Previously in theobjccrate. - Implement
EncodeandRefEncodefor someextern "C" fnpointers.
Removed
-
BREAKING: Removed automatic
*const T: Encodeand*mut T: Encodeimpls when when&T: Encodeand&mut T: Encodewas implemented.Implement
T: RefEncodeinstead!
2.0.0-alpha.0 - 2021-09-01
Added
- Improved documentation.
- Support for targets with pointer-width 16
- Implement
Encodefor all array lengths using const-generics. - Implement
Encodefor unsized pointer types as well.
Changed
- BREAKING: Forked the project, so it is now available under the name
objc2-encode. - BREAKING: Changed type in
Encoding::BitFieldfromu32tou8. - BREAKING: Changed type in
Encoding::Arrayfromu32tousize. - BREAKING: Loosen
'staticbounds on references implementingEncode.
1.1.0 (objc-encode crate) - 2019-10-16
Added
- Implement
Encodefor arrays with up to 32 elements.
Changed
- Simplify internal encoding comparison.
1.0.0 (objc-encode crate) - 2019-03-25
Added
- Implement
PartialEqbetweenEncodingand&str.
Changed
- BREAKING: Make
Encodingan enum instead of a trait, yielding a vastly different design. This makes use of associated constants. - BREAKING: Rename
Encode::CODEtoEncode::ENCODING. - Update to Rust 2018.
Removed
libcdependency.
0.0.3 (objc-encode crate) - 2017-04-30
Fixed
- Compilation on versions prior to Rust
1.15.
0.0.2 (objc-encode crate) - 2017-02-20
Added
- BREAKING:
Displayrequirement for encodings. - Implement
PartialEqfor encodings. - Implement
Encodefor pointers when references do.
Fixed
IndexEncodingsComparator.- Compilation with older Rust versions.
0.0.1 (objc-encode crate) - 2017-02-19
Initial version.