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

Upgrade Emscripten on CI to 1.39.20 #75716

Merged
merged 1 commit into from
Aug 20, 2020

Conversation

tlively
Copy link
Contributor

@tlively tlively commented Aug 19, 2020

This Emscripten version was the first to be cut after the LLVM 11
release branch was created, so it should be the most compatible with
LLVM 11. The old version we were using was incompatible with LLVM 11
because its wasm-ld did not understand all the relocations that LLVM
11 emits.

This Emscripten version was the first to be cut after the LLVM 11
release branch was created, so it should be the most compatible with
LLVM 11. The old version we were using was incompatible with LLVM 11
because its wasm-ld did not understand all the relocations that LLVM
11 emits.
@rust-highfive
Copy link
Collaborator

r? @pietroalbini

(rust_highfive has picked a reviewer for you, use r? to override)

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Aug 19, 2020
@tlively
Copy link
Contributor Author

tlively commented Aug 19, 2020

r? @cuviper

The build was canceled with error: .github/workflows/ci.yml is not up to date. Clearly this is because I temporarily added wasm32 to the PR CI, but I'm not sure how to resolve it. If it's not easy to solve, another option would be to revert that temporary change and just send the PR to the merge queue and hope it passes. Please advise!

@cuviper
Copy link
Member

cuviper commented Aug 19, 2020

Just for temporary testing, make your change in src/ci/github-actions/ci.yml instead, then run ./x.py run src/tools/expand-yaml-anchors/ and commit it all.

@cuviper
Copy link
Member

cuviper commented Aug 19, 2020

Also, I'm not familiar with how we handle compatibility for wasm users -- I suppose this and/or LLVM 11 (#73526) will change what we're able to support? Who usually approves that kind of change?

@tlively
Copy link
Contributor Author

tlively commented Aug 19, 2020

Also, I'm not familiar with how we handle compatibility for wasm users -- I suppose this and/or LLVM 11 (#73526) will change what we're able to support? Who usually approves that kind of change?

We don't really have a good story for this, unfortunately. AFAIK the recommended version of Emscripten to use with Rust is not even published anywhere. There shouldn't really be any functional changes in what can be supported on the Rust side, though. It would probably be good to add a comment that users should upgrade their Emscripten installations to at least 1.39.20 to the release notes.

cc @alexcrichton, who has reviewed similar changes previously.

@alexcrichton
Copy link
Member

Yes I think this is fine to land, we should just mention it in the release notes. Other than that seems like a good change to me!

@cuviper
Copy link
Member

cuviper commented Aug 19, 2020

OK, great! The CI hacks should be removed, of course, and I'm running a local build now merged with my LLVM 11 branch to make sure it really solves that issue.

@cuviper
Copy link
Member

cuviper commented Aug 20, 2020

LLVM 11 works with this, hooray!

Let's squash the CI changes away, then r=me.

@tlively
Copy link
Contributor Author

tlively commented Aug 20, 2020

@cuviper I removed the CI commits. This should be good to go now 🎉

@cuviper
Copy link
Member

cuviper commented Aug 20, 2020

@bors r+

@bors
Copy link
Contributor

bors commented Aug 20, 2020

📌 Commit f3585a9 has been approved by cuviper

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Aug 20, 2020
@cuviper
Copy link
Member

cuviper commented Aug 20, 2020

@bors rollup

bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 20, 2020
Rollup of 8 pull requests

Successful merges:

 - rust-lang#75672 (Move to intra-doc links for task.rs and vec.rs)
 - rust-lang#75702 (Clean up E0759 explanation)
 - rust-lang#75703 (Enable stack-overflow detection on musl for non-main threads)
 - rust-lang#75710 (Fix bad printing of const-eval queries)
 - rust-lang#75716 (Upgrade Emscripten on CI to 1.39.20 )
 - rust-lang#75731 (Suppress ty::Float in MIR comments of ty::Const)
 - rust-lang#75733 (Remove duplicated alloc vec bench push_all_move)
 - rust-lang#75743 (Rename rustc_lexer::TokenKind::Not to Bang)

Failed merges:

r? @ghost
@bors bors merged commit 02b2f73 into rust-lang:master Aug 20, 2020
@cuviper cuviper added the relnotes Marks issues that should be documented in the release notes of the next release. label Aug 21, 2020
@cuviper cuviper added this to the 1.47 milestone Aug 21, 2020
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Nov 13, 2020
Pkgsrc changes:
 * Remove patches now integrated upstream, many related to SunOS / Illumos.
 * The LLVM fix for powerpc is also now integrated upstream.
 * Adapt those patches where the source has moved or parts are integrated.
 * The randomness patches no longer applies, and I could not find
   where those files went...
 * Provide a separate bootstrap for NetBSD/powerpc 9.0, since apparently
   the C++ ABI is different from 8.0.  Yes, this appears to be specific to
   the NetBSD powerpc ports.

Upstream changes:

Version 1.47.0 (2020-10-08)
==========================

Language
--------
- [Closures will now warn when not used.][74869]

Compiler
--------
- [Stabilized the `-C control-flow-guard` codegen option][73893], which enables
  [Control Flow Guard][1.47.0-cfg] for Windows platforms, and is ignored on
  other platforms.
- [Upgraded to LLVM 11.][73526]
- [Added tier 3\* support for the `thumbv4t-none-eabi` target.][74419]
- [Upgrade the FreeBSD toolchain to version 11.4][75204]
- [`RUST_BACKTRACE`'s output is now more compact.][75048]

\* Refer to Rust's [platform support page][forge-platform-support] for more
information on Rust's tiered platform support.

Libraries
---------
- [`CStr` now implements `Index<RangeFrom<usize>>`.][74021]
- [Traits in `std`/`core` are now implemented for arrays of any length, not just
  those of length less than 33.][74060]
- [`ops::RangeFull` and `ops::Range` now implement Default.][73197]
- [`panic::Location` now implements `Copy`, `Clone`, `Eq`, `Hash`, `Ord`,
  `PartialEq`, and `PartialOrd`.][73583]

Stabilized APIs
---------------
- [`Ident::new_raw`]
- [`Range::is_empty`]
- [`RangeInclusive::is_empty`]
- [`Result::as_deref`]
- [`Result::as_deref_mut`]
- [`Vec::leak`]
- [`pointer::offset_from`]
- [`f32::TAU`]
- [`f64::TAU`]

The following previously stable APIs have now been made const.

- [The `new` method for all `NonZero` integers.][73858]
- [The `checked_add`,`checked_sub`,`checked_mul`,`checked_neg`, `checked_shl`,
  `checked_shr`, `saturating_add`, `saturating_sub`, and `saturating_mul`
  methods for all integers.][73858]
- [The `checked_abs`, `saturating_abs`, `saturating_neg`, and `signum`  for all
  signed integers.][73858]
- [The `is_ascii_alphabetic`, `is_ascii_uppercase`, `is_ascii_lowercase`,
  `is_ascii_alphanumeric`, `is_ascii_digit`, `is_ascii_hexdigit`,
  `is_ascii_punctuation`, `is_ascii_graphic`, `is_ascii_whitespace`, and
  `is_ascii_control` methods for `char` and `u8`.][73858]

Cargo
-----
- [`build-dependencies` are now built with opt-level 0 by default.][cargo/8500]
  You can override this by setting the following in your `Cargo.toml`.
  ```toml
  [profile.release.build-override]
  opt-level = 3
  ```
- [`cargo-help` will now display man pages for commands rather just the
  `--help` text.][cargo/8456]
- [`cargo-metadata` now emits a `test` field indicating if a target has
  tests enabled.][cargo/8478]
- [`workspace.default-members` now respects `workspace.exclude`.][cargo/8485]
- [`cargo-publish` will now use an alternative registry by default if it's the
  only registry specified in `package.publish`.][cargo/8571]

Misc
----
- [Added a help button beside Rustdoc's searchbar that explains rustdoc's
  type based search.][75366]
- [Added the Ayu theme to rustdoc.][71237]

Compatibility Notes
-------------------
- [Bumped the minimum supported Emscripten version to 1.39.20.][75716]
- [Fixed a regression parsing `{} && false` in tail expressions.][74650]
- [Added changes to how proc-macros are expanded in `macro_rules!` that should
  help to preserve more span information.][73084] These changes may cause
  compiliation errors if your macro was unhygenic or didn't correctly handle
  `Delimiter::None`.
- [Moved support for the CloudABI target to tier 3.][75568]
- [`linux-gnu` targets now require minimum kernel 2.6.32 and glibc 2.11.][74163]

Internal Only
--------
- [Improved default settings for bootstrapping in `x.py`.][73964]
  You can read details about this change in the ["Changes to `x.py`
  defaults"](https://blog.rust-lang.org/inside-rust/2020/08/30/changes-to-x-py-defaults.html)
  post on the Inside Rust blog.

- [Added the `rustc-docs` component.][75560] This allows you to install
  and read the documentation for the compiler internal APIs. (Currently only
  available for `x86_64-unknown-linux-gnu`.)

[1.47.0-cfg]: https://docs.microsoft.com/en-us/windows/win32/secbp/control-flow-guard
[76980]: rust-lang/rust#76980
[75048]: rust-lang/rust#75048
[74163]: rust-lang/rust#74163
[71237]: rust-lang/rust#71237
[74869]: rust-lang/rust#74869
[73858]: rust-lang/rust#73858
[75716]: rust-lang/rust#75716
[75908]: rust-lang/rust#75908
[75516]: rust-lang/rust#75516
[75560]: rust-lang/rust#75560
[75568]: rust-lang/rust#75568
[75366]: rust-lang/rust#75366
[75204]: rust-lang/rust#75204
[74650]: rust-lang/rust#74650
[74419]: rust-lang/rust#74419
[73964]: rust-lang/rust#73964
[74021]: rust-lang/rust#74021
[74060]: rust-lang/rust#74060
[73893]: rust-lang/rust#73893
[73526]: rust-lang/rust#73526
[73583]: rust-lang/rust#73583
[73084]: rust-lang/rust#73084
[73197]: rust-lang/rust#73197
[72488]: rust-lang/rust#72488
[cargo/8456]: rust-lang/cargo#8456
[cargo/8478]: rust-lang/cargo#8478
[cargo/8485]: rust-lang/cargo#8485
[cargo/8500]: rust-lang/cargo#8500
[cargo/8571]: rust-lang/cargo#8571
[`Ident::new_raw`]:  https://doc.rust-lang.org/nightly/proc_macro/struct.Ident.html#method.new_raw
[`Range::is_empty`]: https://doc.rust-lang.org/nightly/std/ops/struct.Range.html#method.is_empty
[`RangeInclusive::is_empty`]: https://doc.rust-lang.org/nightly/std/ops/struct.RangeInclusive.html#method.is_empty
[`Result::as_deref_mut`]: https://doc.rust-lang.org/nightly/std/result/enum.Result.html#method.as_deref_mut
[`Result::as_deref`]: https://doc.rust-lang.org/nightly/std/result/enum.Result.html#method.as_deref
[`TypeId::of`]: https://doc.rust-lang.org/nightly/std/any/struct.TypeId.html#method.of
[`Vec::leak`]: https://doc.rust-lang.org/nightly/std/vec/struct.Vec.html#method.leak
[`f32::TAU`]: https://doc.rust-lang.org/nightly/std/f32/consts/constant.TAU.html
[`f64::TAU`]: https://doc.rust-lang.org/nightly/std/f64/consts/constant.TAU.html
[`pointer::offset_from`]: https://doc.rust-lang.org/nightly/std/primitive.pointer.html#method.offset_from
lopopolo added a commit to artichoke/playground that referenced this pull request Nov 28, 2020
Artichoke requires the latest Rust to build, which is based on LLVM
11.0.

Emscripten targets "top of tree" LLVM, which can introduce
incompatibilities with the code generated by Rust's embedded LLVM.

Accoridng to rust-lang/rust#75716, LLVM 11.0-based Rusts work best with
emdsk 1.39.20, which is the Emscripten most close to when LLVM 11.0
branched off of main.
josephlr added a commit to josephlr/cross that referenced this pull request Jan 5, 2021
Emscripten and rustc have to use compatible versions of LLVM to avoid
linker error. With the update to LLVM 11, emscripten also requires an
update, see rust-lang/rust#75716.

Also, now the emscripten is updated, the fix for
emscripten-core/emscripten#4542 is now avalibe, which
means we can delete the node-wasm workaround.

Signed-off-by: Joe Richey <[email protected]>
Emilgardis pushed a commit to Emilgardis/cross that referenced this pull request Feb 6, 2022
Emscripten and rustc have to use compatible versions of LLVM to avoid
linker error. With the update to LLVM 11, emscripten also requires an
update, see rust-lang/rust#75716.

Also, now the emscripten is updated, the fix for
emscripten-core/emscripten#4542 is now avalibe, which
means we can delete the node-wasm workaround.

Signed-off-by: Joe Richey <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
relnotes Marks issues that should be documented in the release notes of the next release. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants