objc
Objective-C Runtime bindings and wrapper for Rust.
0.2.7
39M downloads/mo
#1455 most downloaded on crates.io
SSheldon/rust-objc
What this package is like to depend on
Last release 7 years ago
no release in 18 months
Release timing varies
gaps range from 2 weeks to 1.7 years
Some releases are documented
notes for 10 of 24 stable releases
1 version withdrawn
withdrawn after publishing
12 years old
25 releases · first in 2014
0 releases in the last 12 months
see the full history below
Release timeline
25 releases · Nov 2014 to Oct 2019Releases
latest 25-
0.2.718 Oct 2019Release notes
Open source →Fixed
- Uses of
msg_send!will now correctly fail to compile if no return type can be inferred, instead of relying on an edge case of the compiler that will soon change and silently cause undefined behavior.
- Uses of
-
0.2.625 Mar 2019 -
0.2.524 Jul 2018 -
0.2.422 Jul 2018Release notes
Open source →Added
-
Added an
rcmodule with reference counting utilities:StrongPtr,WeakPtr, andautoreleasepool. -
Added some reference counting ABI foreign functions to the
runtimemodule.
Fixed
- Messaging nil under GNUstep now correctly returns zeroed results for all return types.
-
-
0.2.307 Jul 2018Release notes
Open source →Added
-
Added a
class!macro for getting statically-known classes. The result is non-optional (avoiding a need to unwrap) and cached so each usage will only look up the class once. -
Added caching to the
sel!macro so that each usage will only register the selector once.
Fixed
- Fixed the implementation of
objc::runtimestructs so there can't be unsound references to uninhabited types.
-
-
0.2.230 Oct 2016 -
0.2.123 Apr 2016Release notes
Open source →Added
-
Added support for working with protocols with the
Protocolstruct. The protocols a class conforms to can be examined with the newClass::adopted_protocolsandClass::conforms_tomethods. -
Protocols can be declared using the new
ProtocolDeclstruct.
-
-
0.2.020 Mar 2016Release notes
Open source →Added
-
Added verification for the types used when sending messages. This can be enabled for all messages with the
"verify_message"feature, or you can test before sending specific messages with theMessage::verify_messagemethod. Verification errors are reported using the newMessageErrorstruct. -
Added support for the GNUstep runtime! Operating systems besides OSX and iOS will fall back to the GNUstep runtime.
-
Root classes can be declared by using the
ClassDecl::rootconstructor.
Changed
-
C types are now used from
std::os::rawrather thanlibc. This meansEncodemay not be implemented forlibctypes; switch them to thestd::os::rawequivalents instead. This avoids an issue that would arise from simultaneously using different versions of the libc crate. -
Dynamic messaging was moved into the
Messagetrait; instead of().send(obj, sel!(description)), useobj.send_message(sel!(description), ()). -
Rearranged the parameters to
ClassDecl::newfor consistency; instead ofClassDecl::new(superclass, "MyObject"), useClassDecl::new("MyObject", superclass). -
Overhauled the
MethodImplementationtrait. Encodings are now accessed through theMethodImplementation::Argsassociated type. Theimp_formethod was replaced withimpand no longer takes a selector or returns anUnequalArgsError, althoughClassDecl::add_methodstill validates the number of arguments. -
Updated the definition of
Impto not use the old dispatch prototypes. To invoke anImp, it must first be transmuted to the correct type. -
Removed
objc_msgSendfunctions from theruntimemodule; the availability of these functions varies and they shouldn't be called without trasmuting, so they are now hidden as an implementation detail of messaging.
Fixed
-
Corrected alignment of ivars in
ClassDecl; declared classes may now have a smaller size. -
With the
"exception"or"verify_message"feature enabled, panics frommsg_send!will now be triggered from the line and file where the macro is used, rather than from within the implementation of messaging.
-
-
0.1.806 Nov 2015 -
0.1.723 Sep 2015 -
0.1.608 Aug 2015Nothing published for this version
-
0.1.502 May 2015Nothing published for this version
-
0.1.417 Apr 2015Nothing published for this version
-
0.1.311 Apr 2015Nothing published for this version
-
0.1.204 Apr 2015Nothing published for this version
-
0.1.127 Mar 2015Nothing published for this version
-
0.1.022 Mar 2015Nothing published for this version
-
0.0.809 Mar 2015Nothing published for this version
-
0.0.722 Feb 2015Nothing published for this version
-
0.0.617 Feb 2015Nothing published for this version
-
0.0.516 Feb 2015Nothing published for this version
-
0.0.417 Jan 2015Nothing published for this version
-
0.0.313 Jan 2015Nothing published for this version
-
0.0.211 Jan 2015 withdrawnNothing published for this version
-
0.0.123 Nov 2014Nothing published for this version