8.1 KiB
8.1 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.0.3 - 2024-05-21
Fixed
- Fixed an issue with publishing using an older version of Cargo that didn't
handle the
lints.workspace = true
Cargo 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::Struct
andEncodingBox::Union
to 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_std
compatible. - Made the crate platform-agnostic.
Changed
- BREAKING: Moved the
Encode
,RefEncode
,EncodeArguments
,EncodeConvert
,OptionEncode
toobjc2
. - BREAKING:
Encoding::BitField
now allows omitting the type using anOption
. - BREAKING: Changed length field in
Encoding::Array
fromusize
tou64
(to be platform-agnostic).
Fixed
- Fixed
Encoding::BitField
encoding parsing.
2.0.0-pre.3 - 2022-12-24
Added
- Added
EncodingBox
for dynamically parsing encodings and creating them on the heap. - Added
ParseError
, a custom type that represents errors during encoding parsing. - Added
Encoding::equivalent_to_box
for comparingEncoding
andEncodingBox
. - Implemented
Encode
andRefEncode
forNonNull<c_void>
. - Added
OptionEncode
to help with implementingEncode
andRefEncode
forOption
.
Changed
- BREAKING: Verify that the name in
Encoding::Struct
andEncoding::Union
is a valid C identifier.
Removed
- BREAKING:
Encoding
no 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
EncodeConvert
trait to help with correctly handlingBOOL
/bool
.
Changed
- BREAKING: Remove the lifetime specifier from
Encoding
, since the non -'static
version 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 theEncodeConvert
trait, or useobjc2::runtime::Bool
instead.
2.0.0-pre.1 - 2022-07-19
Added
- Added
Encoding::Atomic
. - Implement
Encode
andRefEncode
forstd::sync::atomic
types.
Changed
- BREAKING: Renamed
Encoding::C_U_LONG
toEncoding::C_ULONG
.
2.0.0-pre.0 - 2022-06-13
Added
- Added
Encoding::C_LONG
andEncoding::C_U_LONG
to help with platform compatibility; use these instead ofc_long::ENCODING
andc_ulong::ENCODING
. - Implement
Encode
andRefEncode
forMaybeUninit<T>
, whereT
is properly bound.
Changed
- BREAKING: Sealed the
EncodeArguments
trait. - BREAKING: Add type argument to
Encoding::BitField
.
Removed
- BREAKING: Removed
PartialEq
impl betweenstr
andEncoding
since it was incorrect (it violated the trait requirements). - BREAKING: Removed
Encode
andRefEncode
implementations forPin
since it may not be sound.
2.0.0-beta.2 - 2022-01-03
Added
- Implement
Hash
forEncoding
.
Changed
- Improved documentation.
2.0.0-beta.1 - 2021-12-22
Added
Encoding::equivalent_to
,Encoding::equivalent_to_str
andEncoding::equivalent_to_start_of_str
methods for more precise comparison semantics.- Added
Encode
andRefEncode
implementations forOption
function pointers.
Changed
- Discourage comparing
str
withEncoding
usingPartialEq
. 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::DoubleComplex
andEncoding::LongDoubleComplex
. - Implement
RefEncode
for all number types that implementEncode
(bool
,i8
,usize
,f32
,NonZeroU32
, and so on). - Implement
RefEncode
for*const c_void
and*mut c_void
(allowingvoid**
in C). - Implement
Encode
andRefEncode
forWrapping<T>
, whereT
is 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::ENCODING
instead. - Discourage using
()::ENCODING
for anything other than as a function return type.
2.0.0-alpha.1 - 2021-09-01
Added
- Improved documentation.
- Add
RefEncode
trait, which represents types whoose pointers has an encoding. This means you now only have to implementRefEncode
, and not both&Encode
and&mut Encode
. Additionally, encodings of pointers to pointers (to pointers, and so on) are now supported. - Implement
Encode
forNonZeroX
andOption<NonZeroX>
integer types. - Implement
RefEncode
for arrays. - Implement
Encode
andRefEncode
for (whereT
is properly bound):ManuallyDrop<T>
Pin<T>
NonNull<T>
Option<NonNull<T>>
- Add
EncodeArguments
trait, to represent an ordered group of functions arguments, where each argument has an Objective-C type-encoding. Previously in theobjc
crate. - Implement
Encode
andRefEncode
for someextern "C" fn
pointers.
Removed
-
BREAKING: Removed automatic
*const T: Encode
and*mut T: Encode
impls when when&T: Encode
and&mut T: Encode
was implemented.Implement
T: RefEncode
instead!
2.0.0-alpha.0 - 2021-09-01
Added
- Improved documentation.
- Support for targets with pointer-width 16
- Implement
Encode
for all array lengths using const-generics. - Implement
Encode
for 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::BitField
fromu32
tou8
. - BREAKING: Changed type in
Encoding::Array
fromu32
tousize
. - BREAKING: Loosen
'static
bounds on references implementingEncode
.
1.1.0 (objc-encode
crate) - 2019-10-16
Added
- Implement
Encode
for arrays with up to 32 elements.
Changed
- Simplify internal encoding comparison.
1.0.0 (objc-encode
crate) - 2019-03-25
Added
- Implement
PartialEq
betweenEncoding
and&str
.
Changed
- BREAKING: Make
Encoding
an enum instead of a trait, yielding a vastly different design. This makes use of associated constants. - BREAKING: Rename
Encode::CODE
toEncode::ENCODING
. - Update to Rust 2018.
Removed
libc
dependency.
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:
Display
requirement for encodings. - Implement
PartialEq
for encodings. - Implement
Encode
for pointers when references do.
Fixed
IndexEncodingsComparator
.- Compilation with older Rust versions.
0.0.1 (objc-encode
crate) - 2017-02-19
Initial version.