Updates changelog with 2.0.0-rc.0 changes.
This commit is contained in:
parent
f4475a7bcf
commit
8b8d32dc23
97
CHANGELOG.md
97
CHANGELOG.md
|
|
@ -5,11 +5,19 @@ All notable changes to this project will be documented in this file.
|
|||
|
||||
## [2.0.0-rc.0](https://github.com/ReactiveX/RxSwift/releases/tag/2.0.0-rc.0)
|
||||
|
||||
#### Updated
|
||||
#### Features
|
||||
|
||||
* Adds generic `public func rx_sentMessage(selector: Selector) -> Observable<[AnyObject]>` that enables observing of messages
|
||||
sent to any object. (This is enabled if DISABLE_SWIZZLING isn't set).
|
||||
* Adds new `RxTests` library to enable testing of custom rx operators.
|
||||
* use cases like `cell.rx_sentMessage("prepareForReuse")` are now supported.
|
||||
* Linux support (proof of concept, but single threaded mode works)
|
||||
* more info in [Documentation/Linux.md](https://github.com/ReactiveX/RxSwift/blob/master/Documentation/Linux.md)
|
||||
* Initial support for `Swift Package Manager` (works on `Linux`, still can't compile `RxCocoa` on `OSX`)
|
||||
* Project content is linked to `Sources` automagically using custom tool
|
||||
* Adds `VirtualTimeScheduler` to `RxSwift`
|
||||
* Adds `HistoricalScheduler` to `RxSwift`
|
||||
* Improves performance of virtual schedulers using priority queue.
|
||||
* Adds new `RxTests` library to enable testing of custom Rx operators.
|
||||
This library contains everything needed to write unit tests in the following way:
|
||||
```swift
|
||||
func testMap() {
|
||||
|
|
@ -42,38 +50,95 @@ func testMap() {
|
|||
XCTAssertEqual(xs.subscriptions, correctSubscriptions)
|
||||
}
|
||||
```
|
||||
* Changes `ConnectableObservable`, generic argument is now type of elements in observable sequence and not type of underlying subject. (BREAKING CHANGE)
|
||||
* Removes `RxBox` and `RxMutable` box from public interface. (BREAKING CHANGE)
|
||||
* Deprecates versions of operators with hidden external parameters (scheduler, count) in favor of ones with explicit parameter names.
|
||||
E.g.
|
||||
|
||||
`.debounce(0.2, scheduler: MainScheduler.sharedInstance)` instead of
|
||||
* Adds test project for `RxExample-iOS` that demonstrates how to easily write marble tests using `RxTests` project.
|
||||
```swift
|
||||
let (
|
||||
usernameEvents,
|
||||
passwordEvents,
|
||||
repeatedPasswordEvents,
|
||||
loginTapEvents,
|
||||
|
||||
`.debounce(0.2, MainScheduler.sharedInstance)`
|
||||
expectedValidatedUsernameEvents,
|
||||
expectedSignupEnabledEvents
|
||||
) = (
|
||||
scheduler.parseEventsAndTimes("e---u1----u2-----u3-----------------", values: stringValues).first!,
|
||||
scheduler.parseEventsAndTimes("e----------------------p1-----------", values: stringValues).first!,
|
||||
scheduler.parseEventsAndTimes("e---------------------------p2---p1-", values: stringValues).first!,
|
||||
scheduler.parseEventsAndTimes("------------------------------------", values: events).first!,
|
||||
|
||||
`range(0, count: 10)` instead of `range(0, 10)`
|
||||
scheduler.parseEventsAndTimes("e---v--f--v--f---v--o----------------", values: validations).first!,
|
||||
scheduler.parseEventsAndTimes("f--------------------------------t---", values: booleans).first!
|
||||
)
|
||||
```
|
||||
|
||||
`interval(1, scheduler: MainScheduler.sharedInstance)` instead of
|
||||
|
||||
`interval(1, MainScheduler.sharedInstance)`
|
||||
|
||||
...
|
||||
* Deprecates `rx_controlEvents` in favor of `rx_controlEvent`. (consistency)
|
||||
* Adds example app for GitHub signup example that shows the same example written with and without `Driver`.
|
||||
* Documents idea behind units and `Driver` in `Units.md`.
|
||||
* Example of table view with editing is polished to use more functional approach.
|
||||
* Adds `deferred` to `Driver` unit.
|
||||
* Removes implicitly unwrapped optionals from `CLLocationManager` extensions.
|
||||
* Removes implicitly unwrapped optionals from `NSURLSession` extensions.
|
||||
* Polishes the `debug` operator format.
|
||||
* Documents idea behind units in `Units.md`.
|
||||
* Adds optional `cellType` parameter to Table/Collection view `rx_itemsWithCellIdentifier` method.
|
||||
* Polish for calculator example in `RxExample` app.
|
||||
* Documents and adds unit tests for tail recursive optimizations of `concat` operator.
|
||||
* Moves `Event` equality operator to `RxTests` project.
|
||||
* Adds `seealso` references to `reactivex.io`.
|
||||
* Polishes headers in source files and adds tests to enforce standard header format.
|
||||
* Adds `driveOnScheduler` to enable scheduler mocking for `Driver` during unit tests.
|
||||
* Adds assertions to `drive*` family of functions that makes sure they are always called from main thread.
|
||||
* Refactoring and polishing of internal ObjC runtime interception architecture.
|
||||
|
||||
#### Deprecated
|
||||
|
||||
* Changes `ConnectableObservable`, generic argument is now type of elements in observable sequence and not type of underlying subject. (BREAKING CHANGE)
|
||||
* Removes `RxBox` and `RxMutable` box from public interface. (BREAKING CHANGE)
|
||||
* `SchedulerType` now isn't parametrized on `Time` and `TimeInterval`.
|
||||
* Deprecates `Variable` implementing `ObservableType` in favor of `asObservable()`.
|
||||
* Now variable also sends `.Completed` to observable sequence returned from `asObservable` when deallocated.
|
||||
If you were (mis)using variable to return single value
|
||||
```
|
||||
Variable(1).map { x in ... }
|
||||
```
|
||||
... you can just use `just` operator
|
||||
```
|
||||
Observable.just(1).map { x in ... }
|
||||
```
|
||||
* Deprecates free functions in favor of `Observable` factory methods, and deprecates versions of operators with hidden external parameters (scheduler, count) in favor of ones with explicit parameter names.
|
||||
E.g.
|
||||
|
||||
`Observable.just(1)` instead of `just(1)`
|
||||
|
||||
`Observable.empty()` instead of `empty()`
|
||||
|
||||
`Observable.error()` instead of `failWith()`
|
||||
|
||||
`Observable.of(1, 2, 3)` instead of `sequenceOf(1, 2, 3)`
|
||||
|
||||
`.debounce(0.2, scheduler: MainScheduler.sharedInstance)` instead of `.debounce(0.2, MainScheduler.sharedInstance)`
|
||||
|
||||
`Observable.range(start:0, count: 10)` instead of `range(0, 10)`
|
||||
|
||||
`Observable.generate(initialState: 0, condition: { $0 < 10 }) { $0 + 1 }` instead of `generate(0, condition: { $0 < 10 }) { $0 + 1 }`
|
||||
|
||||
`Observable<Int>.interval(1, scheduler: MainScheduler.sharedInstance)` instead of `interval(1, MainScheduler.sharedInstance)`
|
||||
|
||||
...
|
||||
|
||||
If you want to continue using free functions form, you can define your free function aliases for `Observable` factory methods (basically copy deprecated methods).
|
||||
* Deprecates `rx_controlEvents` in favor of `rx_controlEvent`.
|
||||
* Deprecates `MainScheduler.sharedInstance` in favor of `MainScheduler.instance`
|
||||
* Deprecates `ConcurrentMainScheduler.sharedInstance` in favor of `ConcurrentMainScheduler.instance`
|
||||
* Deprecates factory methods from `Drive` in favor of `Driver` factory methods.
|
||||
* Deprecates `sampleLatest` in favor of `withLatestFrom`.
|
||||
|
||||
#### Fixed
|
||||
|
||||
* Improves and documents resource leak code in `RxExample`.
|
||||
* Replaces `unowned` reference with `weak` references in `RxCocoa` project.
|
||||
* Fixes `debug` operator not using `__FILE__` and `__LINE__` properly.
|
||||
* Fixes anomaly with `timeout` operator.
|
||||
* Fixes problem with spell-checker and `UIText*` losing focus.
|
||||
|
||||
## [2.0.0-beta.4](https://github.com/ReactiveX/RxSwift/releases/tag/2.0.0-beta.4)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue