This repository was archived by the owner on Mar 24, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 165
Conversation
This file contains 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
This was previously accepted by the compiler but is being phased out; it will become a hard error in a future rustc release. See rust-lang/rust#66145 >
data-pup
approved these changes
Dec 20, 2019
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.
lgtm!
DeepInThought
added a commit
to DeepInThought/lucet
that referenced
this pull request
Jan 23, 2020
* lucet-idl: moved half of datatype validation & layout code to new side * lucet-idl: datatype validation & layout calculated in new stuff * lucet-idl: port in func validator * lucet-idl: factor module names into their own validator put all validators behind a single module name * lucet-idl: port module datatype tests into new code * lucet-idl: build out cursor, module validation for funcs * lucet-idl: finish up module tests in env * lucet-idl: add package-level validation and tests to new side * lucet-idl: move new repr/cursor stuff to root of crate. codegen disabled! * lucet-idl: a PackageRepr is a Package now unboxing it fixed our lifetime problems * lucet-idl: c generator turned on again and it looks SO MUCH NICER dont you think?? * lucet-idl: build out idiomatic func defintion in C! * lucet-idl: rust datatypes are generated * lucet-idl: add rust guest abi import * lucet-idl: rust backend ported to new cursors * lucet-idl-test: fixup most issues * lucet-idl: move atomtype/abitype parsing from lexer to validator * lucet-idl: parse tree uses &'syntax str rather than String one less clone is good * lucet-idl: reject out-slice bindings cant support these till we make an allocation protocol * lucet-idl: refactor rust backend to be more reasonable * lucet-idl-test: render harnesses for both rust guest and host * bump cargo.lock * lucet-idl-test: many fixes, very nearly works * lucet-idl-test: fix testing! we can now round-trip test the example idl successfully! * lucet-idl: get rid of `io` binding syntax, just support `inout` * lucet-idl: only derive Eq and Ord on structs that do not contain floats * lucet-idl: simplification in parser for func return value / whereclauses * lucet-idl: explain c backend unreachable * lucet-idl: make all of the cursor structs Copy and eliminate a ton of clones as a result * lucet-idl: use a while let * lucet-idl: host func name is a rust-specific thing * lucet-idl: validationerror derives Fail * lucet-idl: prelude tests use PackageBuilder which makes the thing being tested less obvious, but the invariant does have to hold across these two modules. not a great design tbh * lucet-idl: derive default unless contains enum * lucet-idl: use MaybeUninit instead of null for struct member offset assertions * lucet-idl: get rid of Deref impls of Datatype rust should have a non-deref way to delegate method calls to a member * lucet-idl: many code review fixes * delete empty file * lucet-idl: get rid of tons of unnecessary refs/clones of Location * lucet-idl: fixup atom/abi relationships allow i64 abi to represent smaller types * lucet-idl: fix error messages in binding validation tests and add an extra test case or two * lucet-idl-test: fix stub * lucet-idl-test: fixes * lucet-idl: separate parse trees for package-level and syntax-level decls rather than a recursive parse tree. * lucet-idl: finish fixing parser split-up * lucet-idl-test: split test plan into separate module; fixes * lucet-idl: render rust cast to boolean as != 0 * lucet-idl-test: implement trivial test plan * lucet-idl: func validator review comments * lucet-idl: proptest found bug in parser :) * bump cargo.lock * Update the bincode crate to version 1.1 (bytecodealliance#274) Using an old version prevents applications using the lucet crate from also using bincode 1.1. * delete faerie submodule * upgrade to faerie 0.11, and latest cranelift, target-lexicon, wasmparser etc * cargo install with debug to avoid full release build times * Fixes bytecodealliance#288 - Remove cranelift-codegen from the dependencies of the lucet-runtime components such as lucet-module * Fix a few typos * lucet-idl: parse and validate `witx` format (bytecodealliance#275) * lucet-idl: competent sexpr parser * lucet-idl: start implementing grammar from https://github.com/WebAssembly/WASI/pull/74/files * lucet-idl: add dan's wasi_unstable.wati as a test case original commit, from https://github.com/sunfishcode/wasi: commit 383385700a13acc2bc4ad2ac7e78a445d9053d21 (HEAD, refs/remotes/sunfishcode/moduletype) Author: Dan Gohman <[email protected]> Date: Wed Aug 14 22:42:24 2019 -0700 A wasi_unstable description based on module types. This sketches out a description of the current wasi_unstable API, using a syntax which anticipates the "module types" syntax [recently proposed to the CG](https://github.com/WebAssembly/meetings/blob/master/2019/CG-08-06.md#discuss-new-proposal-that-introduces-types-for-modules-and-instances-and-text-format-thereof-as-initially-discussed-in-design1289), though it does use a few extensions which can be easily lowered, and which mostly anticipate the [Interface Types](WebAssembly/interface-types#47 (comment)) proposal. This is derived from [the WatIDL proposal](WebAssembly/WASI#64), though it differs in a few ways: - It doesn't yet do anything special for capabilities, for now. File descriptors are just integers, for now. But the idea is that we could add OCAP concepts later. - It uses a new `(flags ...)` construct in place of structs of Bool fields, to describe flags values. This allows us to explicitly declare the underlying wasm type for flags values. - Types used by the API are declared outside of the moduletype, because we're using wat syntax as much as possible, and there, `(type ...)` inside a module declares an entry in the type section, which isn't what's intended here. The extensions to module types are: - It uses `string`, `array`, and `{s,u}{8,16,32,64}` types, which are expected to be provided in some form by the Interface Types proposal. For now though, they can all be lowered in straightforward ways, by assuming that `string` is always just UTF-8. - It adds `typename` declarations, which can name any wasm type, and of the extra types mentioned in the previous item, or `struct`, `enum`, or `flags`. - It declares functions with multiple return values, which for now will need to be lowered to output (pointer) parameters. * lucet-idl: enough infra to feed wasi_unstable.wati through parser * lucet-idl: fix typo in wasi_unstable lexer found it! cheers * lucet-idl: better error reporting * lucet-idl: parse a bunch more of wati * lucet-idl: @interface is an Annot("interface") * lucet-idl: switch from wasi_unstable.wati to multiple .witx * lucet-idl: interface-types idl files are now called .witx webassembly interface types has claimed the `.wit` file extension for describing just module interfaces. this idl is currently the `.wit` syntax, plus extensions. in lieu of a better name, dan and I decided `.witx` will work for the time being. * lucet-idl: renames of stuff in witx, plus use stmts * lucet-idl: typenames.witx had an extra close paren * lucet-idl: correct path to typenames in wasi_unstable.witx * lucet-idl: change parser to own everything. start implementing use * lucet-idl: witx use directive works! * lucet-idl: better error messages in parser through lookahead * lucet-idl: parser makes it through wasi_unstable * lucet-idl: wasi_unstable.witx: fix two syntax errors in * lucet-idl: witx use decls are now like #pragma once so we dont have to care about cycles, and diamond dependencies will be handled correctly * lucet-idl: witx use resolution moved to toplevel.rs * lucet-idl: make an AST for witx * lucet-idl: rename interfacetypes to witx * lucet-idl witx: file name goes in location, location throughout parse tree * lucet-idl witx: validator is filling out * lucet-idl witx: typenames.witx reorg so names are defined before use this restriction makes it possible to perform validation linearly, which is in line with validation elsewhere in wasm * lucet-idl witx: validation of all datatypes complete * lucet-idl witx: finish validation * lucet-idl witx: fix tests * lucet-idl: fix tests * lucet-idl witx: syntax derives Eq. mock the filesystem to test use more tests required * lucet-idl witx: some fixups, plenty of toplevel tests * lucet-idl witx: add docs, refactor error name, resolve warnings * lucet-idl: add test case to load wasi_unstable.witx * lucet-idl: rustfmt * lucet-idl witx: review comments * lucet-idl witx: really fix the path thing this time * lucet-idl witx: simplify paths one more time not my favorite corner of std!! * split lucet-idl and witx-frontend into two separate crates * Exit dev shell scripts on first command exiting with non-zero return (bytecodealliance#298) * Exit dev shell scripts on first command exiting with non-zero return Fixes issue bytecodealliance#297 * Create stages for Travis * Remove set -e from devenv scripts * add version info to modules version information is comprised of both the current crate version and the current git commit hash (if available). the current git commit hash is only used in release builds to avoid too much furstration in typical development workflows using tools like "git commit --amend" or "git rebase", or just making non-conflicting spot changes to only one of lucetc or lucet-runtime * review comments * Fixes bytecodealliance#299 - WasiCtx should open dev/null read write (bytecodealliance#302) * need to go through the ELF view to read the tables slice too we were going through the mapper to read each table, but incorrectly assumed the pointer in the artifact to look at didn't need translation too * add a CallStackBuilder abstraction to tease apart Context::init also adds documentation on what the guest stack looks like when initialized * upgrade to cranelift 0.43.1, wasmparser 0.39.1 * cranelift 0.44.0 * lucet-benchmarks: use module-level constant to explicitly pin OptLevel * lucet-validate: initial commit * lucet-validate: build up moduletype from parser * lucet-validate: print out type sig of all imports, start func sig * lucet-validate: better api to witx crate is in a branch * upgrade to cranelift 0.43.1, wasmparser 0.39.1 * lucet-validate: calculate module type of InterfaceFunc * lucet-validate: use release of wasmparser 0.39.1 * lucet-validate: parse module type of wasi sdk test program * lucet-validate: use wasi crate to validate against spec * lucet-validate: cranelift 0.44.0 * lucet-wasi-sdk: correct signature of `main` in test c code * lucet-validate: use witx spec from WASI repo as a submodule * lucet-validate: wip... starting to validate sigs against witx * lucet-validate: all lucet-wasi test cases now validate * move the stack guard page between the stack and heap where it was protecting against stack underflow into globals, which are extremely unlikely. Far more likely, are stack overflows into the instance's heap, where we accidentally caught those via heap guard space instead. If an instance's `Limits` had the number of heap guard pages as 0, which is permissible, an instance with full utilization would then map a page that had been acting as a stack guard page as read/write and remove the guard-ness of that page. This commit moves a page to be an outside-of-heap dedicated stack guard page. * adjust signal handler to not always be so stack-hungry Because the Lucet signal handler is run on any arbitrary thread that recives a signal, if the signal handler is installed anywhere in the process, it may be run on a signal stack we didn't set up. This means we are still bound to be careful about how much stack is present, which will often be SIGSTKSZ (observed to be ~8kb on Debian-likes, at least). `handle_signal` is the entrypoint for any signal in the process, so its call frame, locals, etc, are active for any path through the signal handler. For other paths through the signal handler that may involve subsequent calls, and in debug builds of lucet-runtime, the body of the `SignalBehavior::Default` arm would include several `UContext` local variables, as well as a `State` local which itself contains another `UContext`. x86_64 `UContext` are large, resulting in this match arm being responsible for ~5kb of stack usage in `handle_signal`, that is only _actually_ used in this match arm. So, by moving the arm to a closure and immediately calling it, we force Rust to defer that stack usage in debug builds to only be used when the closure is called. In release builds, the closure is likely inlined, but all intermediate copies of UContext _probably_ go away and the entire issue is _probably_ avoided. A subsequent commit will introduce tests around signal handler stack use for these various paths. * switch sigprocmask to pthread_sigmask `pthread_sigmask` is the safe choice for a multithreaded environment. Per `sigprocmask(2)`: > The use of sigprocmask() is unspecified in a multithreaded process; see pthread_sigmask(3). * switch to nightly-2019-09-25, the most recent with all components * lucet-validate: witx_moduletype is now part of witx crate * makefile: add lucet-validate to tests * lucet-validate: latest witx branch, where module types renamed core types * use goblin 0.0.24 everywhere * [lucet-idl] parameterize C test with `WASI_SDK` env var * use lucet-validate in lucetc * lucetc: use lucet-validate Validator * changes to lucetc threaded throughout repo and lucet-wasi-sdk validates that imports work according to witx! * delete witx-frontend: subsumed by wasi repo * upgrade to witx 0.3.0 * delete lucet-validate's wasi-sdk test: that testis now inside lucet-wasi-sdk * lucet-validate: test harness uses new api * Make WASI `poll` test more deterministic, but disable pending debugging (bytecodealliance#320) - Removes a sleep that wasn't relevant for testing poll - Timeout step waits on an in-process pipe rather than stdin, which should make its behavior more consistent across environments - Temporarily ignores the test while we debug its behavior in certain CI environments * address review comments * lucet-validate: add readme * [lucet-validate] ignore non-c/wat files rather than failing test Ephemeral files left around by editors were causing a panic. * package lucet-validate, including wasi unstable witx * rename `lucet-analyze->lucet-objdump`; add debs for it and `lucetc` * skip Lucet build in the container step on travis * 0.2.0 * make bump-global-version.sh gnu sed-friendly -i.previous should be usable on either linux sed or macos sed, but the space leads to linux sed interpreting it as `-i`, which is a valid flag on its own, and `.previous`, as a sed command. * lucetc: fix --opt-level {none, speed, speed_and_size} (bytecodealliance#328) * cargo publish requires versions on dev dependencies to publish * lucet-wasi/README.md doesn't exist any more, don't try to install it (bytecodealliance#330) * dockerfile: use wask-sdk 7 * lucet-wasi-sdk: fix test to reflect behavior of clang-9 * the runtime's module version check was restrictive enough to be annoying In the case that the runtime is a debug or from-cargo version, there's no commit hash, so a build from any lucetc that can include a commit hash would immediately fail the version check. Since lucetc may be installed by `cargo install`, which will build release binaries, this is more likely than initially expected. * grammar * rustfmt * configure CI using Github Actions there are two workflows: * workflows/main.yml defines the Test and Lint jobs, which run in parallel on each push and PR. * Test takes about 19 minutes to complete. * Lint takes about 45 seconds to run `make indent-check`. * workflows/fuzz.yml defines the Fuzz job, which runs nightly at midnight. It only runs on the master branch, so we need to merge this PR to test it. The fuzz smoke-test passes, so I expect that this will work. We will probably have to add some system to report failures it discovers. We may want to run it more often, as well. there is one disabled workflow: * workflows/mac-ci.yml.disabled will run the CI, except for fuzzing, under Mac OS. It is disabled because tests fail on Mac OS at the moment. It should be enabled as part of fixing Mac OS. there is one Action: * actions/test specifies (in action.yml) a job that builds the Dockerfile at the repo root and runs `make test` in the container. The Test job uses the Dockerfile in the repo, but not the devenv scripts to run it. Actions only runs Docker via the This means the devenv scripts themselves have no CI under Actions. Once we have Mac OS support enabled again, there is a lot less reason to maintain the complex set of devenv scripts, which do a lot of fancy and difficult-to-understand stuff to allow using `lucetc`, `lucet-wasi` and other executables on the Mac (or windows, I guess). We could instead document the one-liner invocations of Docker to reproduce our standard developer environment locally. * bump lucet crates to 0.2.1 * Improve lucetc error messages (bytecodealliance#269) * move off debug repr for error reporting this still prints the underlying error, like a wabt error in the case of invalid webassembly text, but does so in a more readable way * Timeouts (bytecodealliance#150) * add termination mechanism and use it to implement timeouts The termination model is described in the `execution` module-level docs, but to reiterate: when in guest code, terminate with a SIGALRM sent immediately, and when in host code, terminate by setting a flag (setting `execution_domain` to `Terminated`) and checking that flag when exiting a hostcall. Hostcalls currently have their safety, with respect to termination, implemented by running the whole hostcall in `uninterruptable`, which effectively makes all hostcalls critical sections. In the future, we may want to expose the idea of interruptable hostcalls, both to avoid overhead of synchronizing `KillState` when entering an exiting hostcalls, and to avoid delayed termination. In the extreme, even though this adds a tool for timeout-style logic, it is at worst a request to stop execution, which requires hostcalls to complete in a reasonable amount of time to guarantee that timeouts are always witnessed promptly. * [lucetc] add very basic JSON formatting for errors This is meant to be a starting point for more semantic error reporting, but in order to get there we'll need to do a broader refactor of our error types * [lucet-runtime] relax unnecessary restrictions on some functions - The `Send + Sync` restriction on the downcast methods was leftover from before the `State` refactor lifted those restrictions from `YieldedVal`s - The mutable borrow on `Instance::get_embed_ctx_mut()` is checked at runtime by the `RefCell`s inside the underlying map. This patch gives us fewer compile-time guarantees, but holding a mutable borrow on the entire instance just to get at an embedding context is way too strict * tests run again * fix the number of magic globals that wasi-sdk clang creates * fix lucet-wasi-sdk test for wask-sdk-7 * allow KillState's `exit_guest_region` to be name-mangled * Bump versions to 0.3.0 (bytecodealliance#340) * 0.3.0 * lucetc error messages include the underlying error from wabt * lucet-runtime supports timeouts * lucetc can emit errors as json * lucet-runtime removes unnecessary restrictions on some functions wabt update is necessary to avoid linker issues with multiple wabt in use at once * [lucet-runtime] add `is_yielded`, etc methods for instances Previously a client would have to keep around the `RunResult` to know which state an instance is in. * [lucetc] json errors report as an array to support multiple errors We don't have the capability to produce multiple errors yet, so this only returns an array of a single element. Returning multiple errors will require refactoring of our code as well as upstream dependencies. * add (currently-failing) test for moving yielded instances * fix the sending-yielded-instances bug in horrendous fashion * move guest data from the guest stack to Instance * run the benchmarks in debug mode for `make test` * [lucet-runtime-internals] refactor guest-specific context data This ended up changing around the interface to initializing and swapping contexts in some important ways. Notably, a pointer to the parent context that `lucet_context_bootstrap` swaps into when the entrypoint function returns is no longer written into the guest stack, but rather is a field on `Context`. This field gets updated in the `to` context when calling `Context::swap()`, so that we can swap `to` a context from different `from` contexts without trying to always swap back to the original context. This also gets us ready to abstract away instance/timeout-specific data from the `Context` struct by making the use of a backstop callback function explicit but optional. * [lucet-benchmarks] slightly simplify a setup iter * bump crate versions to 0.3.1 Keeping this as a minor semver because API changes were restricted to `lucet-runtime-internals` functions that are not exported via `lucet-runtime`. * [lucetc] restore output for the underlying cause of `lucetc::Error`s * update cranelift to current master (0.46.1) This is in preparation for adding an interface to customize machine-dependent features in cranelift's codegen * delete .travis.yml * [lucetc] add CPU feature flags for code generation This introduces a couple new command-line arguments and the associated programmatic APIs for selecting optional CPU features at compile time. Previously, we used `cranelift-native` to automatically detect and use the features available on the host, but this can cause problems when compiling for a different CPU, even if the target triple is constant. Now, we can enable or disable individual features using `--target-feature=+sse3,+avx,-popcnt`, for example. For convenience, we can also specify `--target-cpu=haswell`, for example, which enables a fixed set of individual features. The default behavior of auto-detection and use of features remains the same for now. * [lucetc] add `native` and `sandybridge` CPU profiles This required some reworking of how `CpuFeatures` is represented. * fix rustfmt * crank up the fuzz * Include CPU features in module data (bytecodealliance#351) * write cpu features into modules and verify compatibility when loading * build spectests to ward away evil bit gremlins * bump to 0.4.0 * Use app_from_crate!() instead of hardcoding clap base parameters * Add include_str!("Cargo.toml") to update macros if Cargo.toml changes * bump to 0.4.1 and refine some dependencies There were some problems when trying to publish the crates due to parity-wasm versions differing in our crates and Cranelift's. I went through and updated and/or fixed the versions of some crates that look like they could've caused trouble. * use crates.io version of wasmonkey, and fix parity-wasm version * Replace lucet-wasi with wasi-common + lucet wrappers * lucet-wasi: use pch/working branch of wasi-common * lucet-wasi: export our own __wasi_exitcode_t alias, use master upstream * lucet-wasi: re-export wasi-common's error * lucet-wasi: export start symbol * use nix 0.15 everywhere wasi-common depends on nix 0.15, so upgrade everywhere using 0.13.1 * latest wasi-common master * pin wasi-common to f4ac1299b2001b575cfc99f5544a4a96355a6bff in cargo.toml * Apply suggestions from code review Thank you Adam for a helpful and thorough code review! Co-Authored-By: Adam C. Foltzer <[email protected]> * heap_u32_mut: require a mutable heap (bytecodealliance#359) * replace lucet_runtime ensure_linked in lucet-wasi fixes bytecodealliance#360 where the runtime's C API was being discarded by the linker. * Make it a Bytecode Alliance project * read function names from custom name section * minor grammar fix in runtime docs * specify signature size for module data * pr review: use exported names * pr review: use SecondaryMap for names * delete lucet-idl. superceded by witx * remove lucet-idl from bump-global-version * add `#[lucet_hostcall]` attr macro; deprecate `lucet_hostcalls!` The attribute macro is much more flexible syntactically, and in particular allows hostcall implementations to be properly `rustfmt`ed rather than being stuck in the invocation of a macro. * bump to 0.4.2 Deprecating an existing API and adding a new one are both minor semver changes * redefine `lucet_hostcalls!` in terms of `#[lucet_hostcall]` Prompted by @jedisct1's comment, this will hopefully stave off bitrot as we deprecate `lucet_hostcalls!`. Also tweaks a comment in response to @data-pup's review. Thank you both! * remove some unnecessary cloning in `#[lucet_hostcall]` * use `lucet_runtime` rather than `$crate` in `lucet_hostcalls!` * upgrade cranelift, wasi-common, witx deps, and friends * pull in latest Cranelift release 0.51 * upgrade to wasi-common 0.7, which fixes a lot of the WasiCtxBuilder stuff that required many extra unwraps * pull in latest WASI repo. This moves the preview0 stuff to another directory. Biggest change here is that the lucetc deb, which includes the wasi witx files, has a slightly different file layout now. * transitive upgrades to target-lexicon, faerie * lucet-validate: correct deb paths * CI testing: add cargo-deb packaging * CI: run `make package` on a parallel runner, so CI doesnt get longer * Use actions/checkout@v1 to support submodules checkout This commit fixes the CI by setting `actions/checkout` at version `v1`. The current master of `actions/checkout` now obsoleted the `with: submodules: true` input. See [actions/checkout/releases/tag/v2-beta] for more info. [actions/checkout/releases/tag/v2-beta]: https://github.com/actions/checkout/releases/tag/v2-beta * show unsupported global import in error message * misc. instance lints * replace empty constructor w/ default impl * we can derive default * keep `new()` but defined in terms of default * Make yield methods take `&mut Vmctx`; update semver This prevents resources like embedder contexts or heap views from living across yield points, which is important for safety since the host can modify the data underlying those resources while the instance is suspended. Since this is a semver breaking change, this patch also updates the package versions. * Fixes bytecodealliance#276 - Allow use of aligned heaps * add blank rustfmt config file * into_iter() -> iter() for arrays (bytecodealliance#382) This was previously accepted by the compiler but is being phased out; it will become a hard error in a future rustc release. See rust-lang/rust#66145 > * switch rustc version back to stable; add note about callback safety * add `make test-full` target; make `test` more focused The benchmark and fuzz targets in particular take quite a long time to run, and are usually not the focus of development. They're still worth running in CI, though, to catch bitrot. * clean up symbol data code * move bindings tests into file in tests/ * fix test assertion * ModuleDecls cleanup (bytecodealliance#391) * Addresses two lint warnings about redundant field names, using the shorthand notation instead. * Moves `*_name_for` helper functions nested inside of `declare_funcs` out of a loop body. This is just a small readability fix for our loop. * add `--target` option to lucetc Currently, `lucetc` assumes that the machine that it's compiling for (the "target") is the same as the machine on which `lucetc` is running ("the host"). While this is a reasonable assumption to make, many future uses of `lucetc` may require these machines to be distinct. Towards that end, let's introduce a `--target` option for specifying the machine `lucetc` is supposed to be generating code for, and thread that information through to all the places that require it. * [lucet-runtime] export the `KillSwitch` type from the public API It was already possible to use via the `Instance::kill_switch()` method, but couldn't be named in a type signature or a type declaration. * Fixes bytecodealliance#357: Migrate from using the failure to thiserror + anyhow. (bytecodealliance#374) Co-authored-by: Pat Hickey <[email protected]> * use exact dependencies for crates within the repo Most of our thinking about semver for this project is concerned with the more "public-facing" crates like `lucetc`, `lucet-runtime`, and `lucet-wasi`, as opposed to "implementation detail" crates like `lucet-module`, `lucet-runtime-internals`, etc. As the project matures, we are paying more attention to semver for all of the crates, but this change makes the released sets of packages more consistent. * Fix bad merge in cpu_features.rs. ISA lookup must be invoked on target (bytecodealliance#399) Co-authored-by: Pat Hickey <[email protected]> Co-authored-by: Frank Denis <[email protected]> Co-authored-by: awortman-fastly <[email protected]> Co-authored-by: Shravan Narayan <[email protected]> Co-authored-by: Gabor Greif <[email protected]> Co-authored-by: Eric Kilmer <[email protected]> Co-authored-by: Adam C. Foltzer <[email protected]> Co-authored-by: Tyler McMullen <[email protected]> Co-authored-by: Till Schneidereit <[email protected]> Co-authored-by: data-pup <[email protected]> Co-authored-by: Jakub Konka <[email protected]> Co-authored-by: Nathan Froyd <[email protected]> Co-authored-by: iximeow <[email protected]> Co-authored-by: Tanya L. Crenshaw <[email protected]>
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
This was previously accepted by the compiler but is being phased out;
It will become a hard error in a future
rustc
release.See rust-lang/rust#66145