-
Notifications
You must be signed in to change notification settings - Fork 10.5k
[Type checker] Introduce directional path consistency algorithm #4485
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
Conversation
DPC algoritm tries to solve individual sub-expressions and combine resolved types as a way to reduce pre-existing OSR domains. Solving is done bottom-up so each consecutive sub-expression tightens possible solution domain even further.
/cc @DougGregor |
@swift-ci Smoke test macOS. |
@xedin We are seeing test failure on Linux:
|
@shahmishal @rudkx I think it would be better to maybe figure out why MacOS allows to "import Foundation" and linux doesn't? I got that code from SR-2102, I can also restructure the test so it doesn't require it, since sin is what is contained in Foundation. |
Please revert for now so we can keep the bots happy. We can resubmit once the test is fixed. |
Swift tests aren't allowed to reference Foundation on Linux, because on Linux you should be able to run the tests without having built Foundation |
Thanks for clarification, @jrose-apple! I obviously didn't know that... Meanwhile I've reformatted the test and removed Foundation dependency with equivalent function overloads... Going to submit it as separate PR and link it here for reference as well. |
* Use Yams 4.0.2 to fix Ubuntu 18.04 build Currently, as can be seen from logs at https://github.com/swiftwasm/swift/runs/6178363121?check_suite_focus=true compilation of Yams fails with this error: ``` /home/runner/work/swift/swift/yams/Sources/Yams/YamlError.swift -Xlinker -soname -Xlinker libYams.so -L /home/runner/work/swift/swift/host-build/Ninja-Release/swiftpm-linux-x86_64/x86_64-unknown-linux-gnu/yams/lib -L /home/runner/work/swift/swift/host-build/Ninja-Release/foundation-linux-x86_64/lib -L /usr/lib/gcc/x86_64-linux-gnu/7 -Xlinker -rpath -Xlinker /home/runner/work/swift/swift/host-build/Ninja-Release/foundation-linux-x86_64/lib: lib/libCYaml.a -ldispatch /home/runner/work/swift/swift/host-build/Ninja-Release/foundation-linux-x86_64/lib/libFoundation.so -lswiftDispatch -lgcc -lgcc_s -lc -lgcc -lgcc_s && : 23585 /usr/bin/ld.gold: error: lib/libCYaml.a(api.c.o): requires dynamic R_X86_64_PC32 reloc against 'yaml_realloc' which may overflow at runtime; recompile with -fPIC 23586 /usr/bin/ld.gold: error: lib/libCYaml.a(scanner.c.o): requires dynamic R_X86_64_PC32 reloc against 'yaml_parser_fetch_more_tokens' which may overflow at runtime; recompile with -fPIC 23587 clang-13: error: linker command failed with exit code 1 (use -v to see invocation) 23588 <unknown>:0: error: link command failed with exit code 1 (use -v to see invocation) ``` * Use Yams 5.0.1 in `swiftwasm-release/5.7` scheme
What's in this pull request?
Improvements to the TypeChecker, namely DPC
(directional path consistency) algoritm which tries to
solve individual sub-expressions and combine
resolved types as a way to reduce pre-existing OSR domains. Solving
is done bottom-up so each consecutive sub-expression tightens
possible solution domain even further.
Resolved bug number: (SR-139)
Resolved bug number: (SR-838)
Resolved bug number: (SR-2102)
And most likely at least couple of others related to "expression is too complex" I haven't seen yet.
Before merging this pull request to apple/swift repository:
Triggering Swift CI
The swift-ci is triggered by writing a comment on this PR addressed to the GitHub user @swift-ci. Different tests will run depending on the specific comment that you use. The currently available comments are:
Smoke Testing
A smoke test on macOS does the following:
device standard libraries are not built.
version of these tests are not run.
A smoke test on Linux does the following:
tests are not run.
Validation Testing
Lint Testing
Note: Only members of the Apple organization can trigger swift-ci.
DPC algoritm tries to solve individual sub-expressions and combine
resolved types as a way to reduce re-existing OSR domains. Solving
is done bottom-up so each consecutive sub-expression tightens
possible solution domain even further.