зеркало из https://github.com/mozilla/gecko-dev.git
110 строки
3.4 KiB
Markdown
110 строки
3.4 KiB
Markdown
|
## 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.
|