Change Log

All notable changes to this project will be documented in this file.


5.0.0

RxSwift 5 is a mostly source-compatible release targeting the Swift 5 compiler.

Xcode 10.2 is the minimum supported version (or Swift 5 on Linux).

If you're using Xcode 10.1 and below, please use RxSwift 4.5.

Anomalies

4.5.0

4.4.2

Anomalies

4.4.1

Anomalies

4.4.0

This release introduces a new framework RxAtomic that enables using C11 atomic primitives in RxSwift as a replacement for deprecated OSAtomic* functions. Carthage users will probably need to include this framework manually.

Anomalies

4.3.1

Anomalies

4.3.0

Anomalies

4.2.0

Anomalies

4.1.2

Anomalies

4.1.1

Anomalies

4.1.0

Anomalies

4.0.0

Anomalies

4.0.0-rc.0

4.0.0-beta.1

Anomalies

4.0.0-beta.0

Anomalies

4.0.0-alpha.1

Anomalies

4.0.0-alpha.0

Anomalies

3.6.1

Anomalies

3.6.0

Anomalies

3.5.0

Anomalies

3.4.1 (Xcode 8.3.1 / Swift 3.1 compatible)

Anomalies

3.4.0 (Xcode 8.3.1 / Swift 3.1 compatible)

Anomalies

3.3.1 (Xcode 8 / Swift 3.0 compatible)

Anomalies

3.3.0 (Xcode 8 / Swift 3.0 compatible)

Anomalies

3.2.0 (Xcode 8 / Swift 3.0 compatible)

Anomalies

3.1.0 (Xcode 8 / Swift 3.0 compatible)

Anomalies

3.0.1 (Xcode 8 / Swift 3.0 compatible)

Anomalies

3.0.0 (Xcode 8 / Swift 3.0 compatible)

Anomalies

3.0.0-rc.1 (Xcode 8 / Swift 3.0 compatible)

textField.rx.text          // <- now has type `ControlProperty<String?>`
textField.rx.text.orEmpty  // <- now has type `ControlProperty<String>`
let text: Observable<String> = Observable.just("")

// Previously `map { $0 }` was needed because of mismatch betweeen sequence `String` type and `String?` type
// on binding `rx.text` observer.
text.bindTo(label.rx.text)  
   .disposed(by: disposeBag)

...

let text = Driver.just("")
text.drive(label.rx.text)
   .disposed(by: disposeBag)

3.0.0-beta.2 (Xcode 8 / Swift 3.0 compatible)

3.0.0-beta.1 (Xcode 8 GM compatible 8A218a)

3.0.0.alpha.1 (Xcode 8 beta 6 compatible 8S201h)

Features

Anomalies

2.6.0

Features

Anomalies

2.5.0

Features

Anomalies

2.4.0

Features

Anomalies

2.3.1

Features

2.3.0

Features

Anomalies

2.2.0

Public Interface anomalies

This is example of those changes:

- public func rx_itemsWithCellFactory<S : Sequence, O : ObservableType where O.E == S>
      (source: O)
      (cellFactory: (UITableView, Int, S.Iterator.Element) -> UITableViewCell) -> Disposable
+ public func rx_itemsWithCellFactory<S : Sequence, O : ObservableType where O.E == S>
      (source: O)
      -> (cellFactory: (UITableView, Int, S.Iterator.Element) -> UITableViewCell) -> Disposable
-    public var rx_didFinishDeferredUpdatesWithError: RxSwift.Observable<NSError> { get }
+    public var rx_didFinishDeferredUpdatesWithError: RxSwift.Observable<NSError?> { get }

Features

Anomalies

2.1.0

Features

Anomalies

2.0.0

Features

Anomalies

2.0.0-rc.0

Features

func testMap() {
    let scheduler = TestScheduler(initialClock: 0)

    let xs = scheduler.createHotObservable([
        next(150, 1),
        next(210, 0),
        next(220, 1),
        next(230, 2),
        next(240, 4),
        completed(300)
        ])

    let res = scheduler.start { xs.map { $0 * 2 } }

    let correctEvents = [
        next(210, 0 * 2),
        next(220, 1 * 2),
        next(230, 2 * 2),
        next(240, 4 * 2),
        completed(300)
    ]

    let correctSubscriptions = [
        Subscription(200, 300)
    ]

    XCTAssertEqual(res.events, correctEvents)
    XCTAssertEqual(xs.subscriptions, correctSubscriptions)
}
let (
    usernameEvents,
    passwordEvents,
    repeatedPasswordEvents,
    loginTapEvents,

    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!,

    scheduler.parseEventsAndTimes("e---v--f--v--f---v--o----------------", values: validations).first!,
    scheduler.parseEventsAndTimes("f--------------------------------t---", values: booleans).first!
)

Deprecated

Fixed

2.0.0-beta.4

Updated

Fixed

2.0.0-beta.3

Updated

Fixed

2.0.0-beta.2

Updated

Fixed

2.0.0-beta.1

Updated

Fixed

2.0.0-alpha.4

Updated

Fixed

2.0.0-alpha.3

Updated

2.0.0-alpha.2

Updated

2.0.0-alpha.1

Fixed

Updated

Fixed

1.9.1

Updated

Fixed