Skip to content

Commit 34c7aef

Browse files
committed
Update README / Logo
1 parent 6717eab commit 34c7aef

File tree

6 files changed

+31
-22
lines changed

6 files changed

+31
-22
lines changed

Documentation/GettingStarted.md

+7
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ Getting Started
44
This project tries to be consistent with [ReactiveX.io](http://reactivex.io/). The general cross platform documentation and tutorials should also be valid in case of `RxSwift`.
55

66
1. [Observables aka Sequences](#observables-aka-sequences)
7+
1. [Infallible](#infallible)
78
1. [Disposing](#disposing)
89
1. [Implicit `Observable` guarantees](#implicit-observable-guarantees)
910
1. [Creating your first `Observable` (aka observable sequence)](#creating-your-own-observable-aka-observable-sequence)
@@ -667,6 +668,12 @@ This is simply 8
667668
...
668669
```
669670

671+
## Infallible
672+
673+
`Infallible` is another flavor of `Observable` which is identical to it, but is guaranteed to never fail and thus cannot emit errors. This means that when creating your own `Infallible` (Using `Infallible.create` or one of the methods mentioned in [Creating your first `Observable`](#creating-your-own-observable-aka-observable-sequence)), you will not be allowed to emit errors.
674+
675+
`Infallible` is useful when you want to statically model and guarantee a stream of values that is known to never fail, but don't want to commit to using `MainScheduler` and don't want to implicitly use `share()` to share resources and side-effects, such as the case in [`Driver` and `Signal`](Traits.md#rxcocoa-traits).
676+
670677
### Life happens
671678

672679
So what if it's just too hard to solve some cases with custom operators? You can exit the Rx monad, perform actions in imperative world, and then tunnel results to Rx again using `Subject`s.

README.md

+21-21
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,27 @@
1-
<img src="https://raw.githubusercontent.com/ReactiveX/RxSwift/main/assets/Rx_Logo_M.png" alt="Miss Electric Eel 2016" width="36" height="36"> RxSwift: ReactiveX for Swift
2-
======================================
1+
<p align="center">
2+
<img src="assets/RxSwift_Logo.png" width="35%" alt="RxSwift Logo" />
3+
<br />
4+
<a href="https://actions-badge.atrox.dev/ReactiveX/RxSwift/goto" target="_blank"><img src="https://github.com/ReactiveX/RxSwift/workflows/RxSwift/badge.svg?branch=main" alt="Build Status" /></a>
5+
<img src="https://img.shields.io/badge/platforms-iOS%20%7C%20macOS%20%7C%20tvOS%20%7C%20watchOS%20%7C%20Linux-333333.svg" alt="Supported Platforms: iOS, macOS, tvOS, watchOS & Linux" />
6+
<br />
7+
<a href="https://cocoapods.org/pods/RxSwift" alt="RxSwift on CocoaPods" title="RxSwift on CocoaPods"><img src="https://img.shields.io/cocoapods/v/RxSwift.svg" /></a>
8+
<a href="https://github.com/Carthage/Carthage" alt="RxSwift on Carthage" title="RxSwift on Carthage"><img src="https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat" /></a>
9+
<a href="https://github.com/apple/swift-package-manager" alt="RxSwift on Swift Package Manager" title="RxSwift on Swift Package Manager"><img src="https://img.shields.io/badge/Swift%20Package%20Manager-compatible-brightgreen.svg" /></a>
10+
</p>
311

4-
[![Build Status](https://github.com/ReactiveX/RxSwift/workflows/RxSwift/badge.svg?branch=main)](https://actions-badge.atrox.dev/ReactiveX/RxSwift/goto) ![platforms](https://img.shields.io/badge/platforms-iOS%20%7C%20macOS%20%7C%20tvOS%20%7C%20watchOS%20%7C%20Linux-333333.svg) [![pod](https://img.shields.io/cocoapods/v/RxSwift.svg)](https://cocoapods.org/pods/RxSwift) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![Swift Package Manager compatible](https://img.shields.io/badge/Swift%20Package%20Manager-compatible-brightgreen.svg)](https://github.com/apple/swift-package-manager)
12+
Rx is a [generic abstraction of computation](https://youtu.be/looJcaeboBY) expressed through `Observable<Element>` interface, which lets you broadcast and subscribe to values and other events from an `Observable` stream.
513

6-
Rx is a [generic abstraction of computation](https://youtu.be/looJcaeboBY) expressed through `Observable<Element>` interface.
14+
RxSwift is the Swift-specific implementation of the [Reactive Extensions](http://reactivex.io) standard.
715

8-
This is a Swift version of [Rx](https://github.com/Reactive-Extensions/Rx.NET).
16+
<p align="center"><img src="assets/example.png" width="55%" alt="RxSwift Observable Example of a price constantly changing and updating the app's UI" /></p>
917

10-
It tries to port as many concepts from the original version as possible, but some concepts were adapted for more pleasant and performant integration with iOS/macOS environment.
18+
While this version aims to stay true to the original spirit and naming conventions of Rx, this projects also aims to provide a true Swift-first API for Rx APIs.
1119

1220
Cross platform documentation can be found on [ReactiveX.io](http://reactivex.io/).
1321

14-
Like the original Rx, its intention is to enable easy composition of asynchronous operations and event/data streams.
22+
Like other Rx implementation, RxSwift's intention is to enable easy composition of asynchronous operations and streams of data in the form of `Observable` objects and a suite of methods to transform and compose these pieces of asynchronous work.
1523

16-
KVO observing, async operations and streams are all unified under [abstraction of sequence](Documentation/GettingStarted.md#observables-aka-sequences). This is the reason why Rx is so simple, elegant and powerful.
24+
KVO observation, async operations, UI Events and other streams of data are all unified under [abstraction of sequence](Documentation/GettingStarted.md#observables-aka-sequences). This is the reason why Rx is so simple, elegant and powerful.
1725

1826
## I came here because I want to ...
1927

@@ -50,7 +58,9 @@ KVO observing, async operations and streams are all unified under [abstraction o
5058

5159
###### ... understand the structure
5260

53-
RxSwift comprises five separate components depending on each other in the following way:
61+
RxSwift is as compositional as the asynchronous work it drives. The core unit is RxSwift itself, while other dependencies can be added for UI Work, testing, and more.
62+
63+
It comprises five separate components depending on each other in the following way:
5464

5565
```none
5666
┌──────────────┐ ┌──────────────┐
@@ -71,16 +81,6 @@ RxSwift comprises five separate components depending on each other in the follow
7181
* **RxRelay**: Provides `PublishRelay`, `BehaviorRelay` and `ReplayRelay`, three [simple wrappers around Subjects](https://github.com/ReactiveX/RxSwift/blob/master/Documentation/Subjects.md#relays). It depends on `RxSwift`.
7282
* **RxTest** and **RxBlocking**: Provides testing capabilities for Rx-based systems. It depends on `RxSwift`.
7383

74-
###### ... find compatible
75-
76-
* libraries from [RxSwiftCommunity](https://github.com/RxSwiftCommunity).
77-
* [Pods using RxSwift](https://cocoapods.org/?q=uses%3Arxswift).
78-
79-
###### ... see the broader vision
80-
81-
* Does this exist for Android? [RxJava](https://github.com/ReactiveX/RxJava)
82-
* Where is all of this going, what is the future, what about reactive architectures, how do you design entire apps this way? [Cycle.js](https://github.com/cyclejs/cycle-core) - this is javascript, but [RxJS](https://github.com/Reactive-Extensions/RxJS) is javascript version of Rx.
83-
8484
## Usage
8585

8686
<table>
@@ -196,7 +196,7 @@ carthage build RxSwift --platform iOS
196196

197197
### [Swift Package Manager](https://github.com/apple/swift-package-manager)
198198

199-
> **Note**: There is a critical cross-dependency bug affecting many projects including RxSwift in Swift Package Manager. We've [filed a bug (SR-12303)](https://bugs.swift.org/browse/SR-12303) in early 2020 but have eno answer yet. Your mileage may vary.
199+
> **Note**: There is a critical cross-dependency bug affecting many projects including RxSwift in Swift Package Manager. We've [filed a bug (SR-12303)](https://bugs.swift.org/browse/SR-12303) in early 2020 but have no answer yet. Your mileage may vary. A partial workaround can be found [here](https://github.com/ReactiveX/RxSwift/issues/2127#issuecomment-717830502).
200200
201201
Create a `Package.swift` file.
202202

@@ -242,8 +242,8 @@ $ git submodule add [email protected]:ReactiveX/RxSwift.git
242242
* [http://reactivex.io/](http://reactivex.io/)
243243
* [Reactive Extensions GitHub (GitHub)](https://github.com/Reactive-Extensions)
244244
* [RxSwift RayWenderlich.com Book](https://store.raywenderlich.com/products/rxswift-reactive-programming-with-swift)
245+
* [RxSwift: Debunking the myth of hard (YouTube)](https://www.youtube.com/watch?v=GdvLP0ZAhhc)
245246
* [Boxue.io RxSwift Online Course](https://boxueio.com/series/rxswift-101) (Chinese 🇨🇳)
246-
* [Erik Meijer (Wikipedia)](http://en.wikipedia.org/wiki/Erik_Meijer_%28computer_scientist%29)
247247
* [Expert to Expert: Brian Beckman and Erik Meijer - Inside the .NET Reactive Framework (Rx) (video)](https://youtu.be/looJcaeboBY)
248248
* [Reactive Programming Overview (Jafar Husain from Netflix)](https://youtu.be/-8Y1-lE6NSA)
249249
* [Subject/Observer is Dual to Iterator (paper)](http://csl.stanford.edu/~christos/pldi2010.fit/meijer.duality.pdf)

Tests/RxSwiftTests/Observable+JustTests.swift

+3-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ class ObservableJustTest : RxTest {
1616
extension ObservableJustTest {
1717
func testJust_Immediate() {
1818
let scheduler = TestScheduler(initialClock: 0)
19-
19+
20+
let totalPrice: Observable<Decimal>
21+
2022
let res = scheduler.start {
2123
return Observable.just(42)
2224
}

assets/RxSwift_Logo.png

79.8 KB
Loading

assets/Rx_Logo_M.png

-53.5 KB
Binary file not shown.

assets/example.png

74 KB
Loading

0 commit comments

Comments
 (0)