Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Xcode 8.3 broke RxSwift releases #1171

Closed
kzaher opened this issue Apr 3, 2017 · 4 comments
Closed

Xcode 8.3 broke RxSwift releases #1171

kzaher opened this issue Apr 3, 2017 · 4 comments

Comments

@kzaher
Copy link
Member

kzaher commented Apr 3, 2017

⚠️ It looks like there is significant number of regressions in Swift 3.1 compiler ⚠️

The problems occur in Release builds when optimizations are turned on.
It looks like Debug versions work ok so far, but more investigations are needed.

The build server didn't detect issues because it's still running compiler 3.0.x version.

Plan:

  • I've removed binary release of RxSwift 3.3.1 (was built using Xcode 8.3 and faulty Swift 3.1 compiler)
  • If you need to ship consider only using 3.0.x version of the Swift compiler (Xcode 8.2.1)
  • If you need to ship using Xcode 8.3, ship using Debug version of the library, looks like unit tests pass on debug configuration

We'll try to create some workarounds :( What a nightmare.

@kzaher
Copy link
Member Author

kzaher commented Apr 4, 2017

By some miracle, it looks like all of the Swift 3.1 compiler bugs have affected only unit tests projects :)

@kzaher
Copy link
Member Author

kzaher commented Apr 4, 2017

We've detected two Swift 3.1 compiler anomalies that were affecting this project.
It seems that both of them only affected unit tests and not the library itself.

We've upgraded travis to Xcode 8.3 and will probably release a small patch release later this week with unit tests officially passing with Xcode 8.3 on build server, just to be on the safe side.

We will also attach a binary in the upcoming patch release.

We've done what we can to make sure the project is compatible with Swift 3.1 compiler, but there are obviously some issues regarding compiler stability in release configuration.

STR 1

        final class LongNight: Error {
        }
        LongNight() as Error as NSError // <-- runtime crash

STR 2

        class Test {
            init() {
                print("Created")
            }
            deinit {
                print("This is never called")
            }
        }

        for _ in [1, 2] {
            let e0 = Test()
            let e1 = Test()

            for e in [e0, e1] {

            }
        }

@tarunon
Copy link
Contributor

tarunon commented Apr 4, 2017

I found a Swift3.1 bug between Error and NSError.
https://bugs.swift.org/browse/SR-4414

Although it is not directly related, I hope to it help you.

kzaher added a commit that referenced this issue Apr 4, 2017
@kzaher
Copy link
Member Author

kzaher commented Apr 4, 2017

Hi @tarunon ,

It would be great if you could also report that other one.

@kzaher kzaher closed this as completed Apr 9, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants