-
Notifications
You must be signed in to change notification settings - Fork 24
[skiplang/skc] Re-enable clang inlining. #744
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
Draft
beauby
wants to merge
4,040
commits into
SkipLabs:main
Choose a base branch
from
beauby:reenable-clang-inlining
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
WebAssembly.instantiate like it as much as Uint8Array Saves a conversion
simplifies code
With initial docs on code formatting and git pre-commit hook.
With initial docs on code formatting and git pre-commit hook.
`userID` -> `UserID`
Alternative to SkipLabs#642
Some basic package READMEs. which will then render in the browser on npmjs.com for our packages. close SkipLabs#712
This takes all of our Skip runtime packages to 0.0.10, increments all of our core `@skip-wasm/*` and `@skiplang/*` packages (some of which are already at 1.0.x, and none of which users will install, so I left out of the everything-to-0.0.10 edict), and stops versioning the test package.json.
Temporary disconnect hackernews lib check
- Internal packages are managed with symbolic links.
When calling `runWithGc()` without a `synchronizer`, the global lock was released after each iteration, and never re-acquired.
When calling `runWithGc()` without a `synchronizer`, the global lock was released after each iteration, and never re-acquired. The code path did not seem to be actively used, as it would systematically crash.
Increase buffer times to de-flake the expectation tests on our examples, leaving enough time for servers to spin up fully before clients start hitting them. This passed 20x in a row locally just now, but circleCI seems more inconsistent in general so testing up there as well. Marking as draft for now as I expect this may require a couple iterations.
This PR adds a git submodule for the docs_site repo and adjusts the docs workflow to update its contents, removing the need to manually sync the generated files between repos. The workflow for publishing the docs to the docs site is now (from www/README.md): ``` - $ make docs-publish ``` which will suggest to run: ``` Test locally: make docs-serve Push to live site: cd www/docs_site/; git add -A; git commit -m 'update to <commit>'; git push; cd - ``` Once the suggested command ending in `git push` is executed, the live docs site will update in a few seconds.
Before this PR the following reliably fails for me: ``` $ npm install && npm run build $ git clean -Xdf $ npm install && npm run build ``` In the final step, the build sees the symlinks created in the first step that were deleted in the second step as some sort of zombie, where `fs.exists` thinks they do not exist but `fs.symlink` fails because they do. Checking in a shell shows that `ls` is similarly confused. This PR changes the build from checking if the link exists and only if not calling symlink to creating a symlink with a temporary name and then renaming it to the desired name. The temporary names are randomly generated, and POSIX requires the rename to be atomic.
Before this PR the following reliably fails for me: ``` $ npm install && npm run build $ git clean -Xdf $ npm install && npm run build ``` In the final step, the build sees the symlinks created in the first step that were deleted in the second step as some sort of zombie, where `fs.exists` thinks they do not exist but `fs.symlink` fails because they do. Checking in a shell shows that `ls` is similarly confused. This PR changes the build from checking if the link exists and only if not calling symlink to creating a symlink with a temporary name and then renaming it to the desired name. The temporary names are randomly generated, and POSIX requires the rename to be atomic.
Inlining in clang was disabled because the inlining heuristics had changed in clang 15, leading to compile time blowups. The situation seems to have been fixed in clang 19 (possibly in an earlier version). Compile times for stage 2 skc: - Before this commit: clang 15, without inlining: 160.805s - After this commit: clang 15, with inlining: 600.047s clang 19, with inlining: 173.062s
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Inlining in clang was disabled because the inlining heuristics had changed in clang 15, leading to compile time blowups. The situation seems to have been fixed in clang 19 (possibly in an earlier version, we need to check with clang 16 once #736 is merged).
Compile times for stage 2 skc:
clang 15, without inlining: 160.805s
clang 15, with inlining: 600.047s
clang 19, with inlining: 173.062s