-
Notifications
You must be signed in to change notification settings - Fork 0
try fix release build #357
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
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The changes introduce a release build to the CI pipeline and attempt to fix the release build process. However, the implementation has some issues. The CI workflow for release tests is overly complex and skips tests for one package, which is concerning. Additionally, key compiler optimizations have been disabled in the release build configurations, which could significantly degrade performance and should be addressed.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #357 +/- ##
==========================================
- Coverage 81.80% 81.66% -0.15%
==========================================
Files 378 378
Lines 33237 33222 -15
==========================================
- Hits 27191 27132 -59
- Misses 6046 6090 +44 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
may need to update branch protection rule to fix "Expected — Waiting for status to be reported": https://github.com/orgs/community/discussions/26698#discussioncomment-3252954 |
|
branch protection rule updated |
Release build with default optimization can pass traces tests by extend lifetime in an ffi call, but other similar code don't have this issue, so this could be a special case.
And testing with release build revealed other differences, for instance sth related to weak var in blockchain services, which seems to have no way to fix. I guess we have to turn off some optimization.
I went through swift optimization levels (-O, -Osize, -Onone), with related flags only (trying all flags will take too long since i did not find the specific sets of optimization flags for each level), and run our test that can fail in default release build
-O(performance over code size) does not work no matter which flag is used-Osize(prioritizes code size over perf) does not work no matter which flag is used-Onone(no optimizations) works of course, but can enable some optimization flags after ittested flags:
-disable-actor-data-race-checks-enforce-exclusivity=none-remove-runtime-asserts-disable-dynamic-actor-isolation-strict-concurrency=minimal-whole-module-optimization-no-whole-module-optimization-unavailable-decl-optimization=none-disable-autolinking-runtime-compatibility-concurrency-disable-autolinking-runtime-compatibility-dynamic-replacements-disable-migrator-fixitsAded ci release tests to prevent unexpected release build bugs in future