7.4 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
0.5.1 - 2024-05-21
Deprecated
- Deprecated the
appleCargo feature flag, it is assumed by default on Apple platforms.
0.5.0 - 2024-04-17
Added
- BREAKING: Added
Block::copyto convert blocks toRcBlock. This replacesStackBlock::copy, but sinceStackBlockimplementsDeref, this will likely work as before. - Added
RcBlock::new(closure)as a more efficient and flexible alternative toStackBlock::new(closure).copy(). - Added
BlockFntrait to describe validdyn Fntypes for blocks.
Changed
-
BREAKING: Changed how blocks specify their parameter and return types. We now use
dyn Fnso that it is more clear what the parameter and return types are. This also allows us to support non-'staticblocks.// Before let block: &Block<(), ()>; let block: &Block<(i32,), i32>; let block: &Block<(i32, u32), (i32, u32)>; // After let block: &Block<dyn Fn()>; let block: &Block<dyn Fn(i32) -> i32>; let block: &Block<dyn Fn(i32, u32) -> (i32, u32)>; // Now possible let block: &Block<dyn Fn() + '_>; // Non-'static block -
BREAKING: Make
Block::callsafe, and instead move the upholding of the safety invariant to the type itself. -
BREAKING: Renamed
RcBlock::new(ptr)toRcBlock::from_raw(ptr). -
BREAKING: Made
RcBlockuse the null-pointer optimization;RcBlock::from_rawandRcBlock::copynow return anOption. -
BREAKING: Only expose the actually public symbols
_Block_copy,_Block_release,_Block_object_assign,_Block_object_dispose,_NSConcreteGlobalBlock,_NSConcreteStackBlockandClassinffimodule. -
BREAKING: Renamed
IntoConcreteBlocktoIntoBlock, moved associated typeOutputto be a generic parameter, and added lifetime parameter.` -
No longer use the
block-syscrate for linking to the blocks runtime. -
Renamed
ConcreteBlocktoStackBlock, and added a lifetime parameter. The old name is deprecated. -
Added
Copyimplementation forStackBlock.
Removed
- BREAKING: Removed
BlockArgumentsin favour ofBlockFn, which describes both the parameter types, as well as the return type.
Fixed
- BREAKING:
StackBlock::newnow requires the closure to beClone. If this is not desired, useRcBlock::newinstead. - Relaxed the
F: Debugbound onStackBlock'sDebugimplementation. - BREAKING: Fixed
GlobalBlocknot having the correct variance. This may break if you were using lifetimes in your parameters, as those are now a bit too restrictive.
0.4.0 - 2023-12-03
Changed
- BREAKING: Updated
objc2dependency tov0.5.0.
0.3.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
0.2.0.
0.2.0 - 2023-06-20
Changed
- BREAKING: Updated
objc2dependency tov0.4.0.
0.2.0-alpha.8 - 2023-02-07
Changed
- BREAKING: Use traits from
objc2v0.3.0-beta.5instead ofobjc2-encode. - Updated
ffimodule toblock-sys v0.2.0.
0.2.0-alpha.7 - 2022-12-24
Changed
- Improve efficiency when a block doesn't need to be destroyed.
- BREAKING: Updated
objc2-encodetov2.0.0-pre.3. - Updated
ffimodule toblock-sys v0.1.0-beta.2.
0.2.0-alpha.6 - 2022-08-28
Changed
- BREAKING: Updated
objc2-encodetov2.0.0-pre.2. - Updated
ffimodule toblock-sys v0.1.0-beta.1.
Fixed
- BREAKING: Cleaned up
BlockArgumentstrait, it is now sealed and a subtrait ofEncodeArguments. - BREAKING: Cleaned up
IntoConcreteBlocktrait, it is now sealed and the associated output type has been renamed toOutput.
0.2.0-alpha.5 - 2022-07-19
Added
- Implemented
DebugforBlock,ConcreteBlock,RcBlockandGlobalBlock.
Changed
- BREAKING: Updated
objc2-encodetov2.0.0-pre.1. - Updated
ffimodule toblock-sys v0.1.0-beta.0.
0.2.0-alpha.4 - 2022-06-13
Changed
- BREAKING: Updated
objc2-encodetov2.0.0-pre.0. - BREAKING: Updated
ffimodule toblock-sys v0.0.4. This tweaks the types of a lot of fields and parameters, and makes the apple runtime always be the default.
Removed
- BREAKING: Removed
DerefMutimplementation forConcreteBlock.
0.2.0-alpha.3 - 2022-01-03
Changed
- Changed
global_block!macro to take an optional semicolon at the end. - Improved documentation.
- BREAKING: Updated
ffimodule toblock-sys v0.0.3.
0.2.0-alpha.2 - 2021-12-22
Added
GlobalBlockand correspondingglobal_block!macro, allowing statically creating blocks that don't reference their environment.
Changed
- BREAKING: Updated
ffimodule toblock-sys v0.0.2. This means thatClassis now!UnwindSafe.
0.2.0-alpha.1 - 2021-11-22
Added
- Proper GNUStep support using
block-sys. See that crate for usage. - Export
block-sysasffimodule.
Removed
- Dependency on
objc_test_utils.
Fixed
ConcreteBlockno longer allocates block descriptors on the heap.- Better unwind safety in
ConcreteBlock::copy.
0.2.0-alpha.0 - 2021-10-28
Added
- BREAKING: Blocks now require that parameter and return types implement
objc2_encode::Encode. This is a safety measure to prevent creating blocks with invalid parameters. - Blocks now implements
objc2_encode::RefEncode(and as such can be used in Objective-C message sends). - Update to 2018 edition.
Changed
- BREAKING: Forked the project, so it is now available under the name
block2.
Fixed
- Soundness issues with using empty enums over FFI.
0.1.6 (block crate) - 2016-05-08
Added
- Support for linking to
libBlocksRuntime.
0.1.5 (block crate) - 2016-04-04
Changed
- Minor code changes
0.1.4 (block crate) - 2015-11-12
Removed
libcdependency.
0.1.3 (block crate) - 2015-11-07
Changed
- Updated
libcdependency.
0.1.2 (block crate) - 2015-10-10
Fixed
improper_ctypeswarning.
0.1.1 (block crate) - 2015-09-03
Fixed
- Missing
Sizedbounds on traits.
0.1.0 (block crate) - 2015-05-18
Added
Cloneimplementation forRcBlock.- Improved documentation.
Changed
- BREAKING: Rename
IdBlocktoRcBlock. - BREAKING: Make
Block::calltake self immutably and make itunsafe. - BREAKING: Make
BlockArguments::call_blockunsafe.
Removed
- BREAKING:
DerefMutonRcBlock. objcdependency.Foundationdependency in tests.
0.0.2 (block crate) - 2015-05-02
Changed
- Use
objc_id.
0.0.1 (block crate) - 2015-04-17
Initial version.