summaryrefslogtreecommitdiffstats
path: root/third_party/rust/objc/CHANGELOG.md
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/objc/CHANGELOG.md')
-rw-r--r--third_party/rust/objc/CHANGELOG.md117
1 files changed, 117 insertions, 0 deletions
diff --git a/third_party/rust/objc/CHANGELOG.md b/third_party/rust/objc/CHANGELOG.md
new file mode 100644
index 0000000000..c8b1bf8944
--- /dev/null
+++ b/third_party/rust/objc/CHANGELOG.md
@@ -0,0 +1,117 @@
+## 0.2.7
+
+### 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.
+
+## 0.2.6
+
+### Fixed
+
+* Suppressed a deprecation warning in `sel!`, `msg_send!`, and `class!`.
+
+## 0.2.5
+
+### Added
+
+* `autoreleasepool` returns the value returned by its body closure.
+
+## 0.2.4
+
+### Added
+
+* Added an `rc` module with reference counting utilities:
+ `StrongPtr`, `WeakPtr`, and `autoreleasepool`.
+
+* Added some reference counting ABI foreign functions to the `runtime` module.
+
+### Fixed
+
+* Messaging nil under GNUstep now correctly returns zeroed results for all
+ return types.
+
+## 0.2.3
+
+### 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::runtime` structs so there can't be unsound
+ references to uninhabited types.
+
+## 0.2.2
+
+### Added
+
+* Implemented `Sync` and `Send` for `Sel`.
+
+## 0.2.1
+
+### Added
+
+* Added support for working with protocols with the `Protocol` struct.
+ The protocols a class conforms to can be examined with the new
+ `Class::adopted_protocols` and `Class::conforms_to` methods.
+
+* Protocols can be declared using the new `ProtocolDecl` struct.
+
+## 0.2.0
+
+### 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 the
+ `Message::verify_message` method. Verification errors are reported using the
+ new `MessageError` struct.
+
+* 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::root` constructor.
+
+### Changed
+
+* C types are now used from `std::os::raw` rather than `libc`. This means
+ `Encode` may not be implemented for `libc` types; switch them to the
+ `std::os::raw` equivalents instead. This avoids an issue that would arise
+ from simultaneously using different versions of the libc crate.
+
+* Dynamic messaging was moved into the `Message` trait; instead of
+ `().send(obj, sel!(description))`, use
+ `obj.send_message(sel!(description), ())`.
+
+* Rearranged the parameters to `ClassDecl::new` for consistency; instead of
+ `ClassDecl::new(superclass, "MyObject")`, use
+ `ClassDecl::new("MyObject", superclass)`.
+
+* Overhauled the `MethodImplementation` trait. Encodings are now accessed
+ through the `MethodImplementation::Args` associated type. The `imp_for`
+ method was replaced with `imp` and no longer takes a selector or returns an
+ `UnequalArgsError`, although `ClassDecl::add_method` still validates the
+ number of arguments.
+
+* Updated the definition of `Imp` to not use the old dispatch prototypes.
+ To invoke an `Imp`, it must first be transmuted to the correct type.
+
+* Removed `objc_msgSend` functions from the `runtime` module; 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 from
+ `msg_send!` will now be triggered from the line and file where the macro is
+ used, rather than from within the implementation of messaging.