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

Merge with upstream #241

Merged
merged 12 commits into from
Oct 23, 2024
Merged

Merge with upstream #241

merged 12 commits into from
Oct 23, 2024

Conversation

dhil
Copy link
Member

@dhil dhil commented Oct 23, 2024

No description provided.

saulecabrera and others added 12 commits October 21, 2024 09:32
…#9480)

This commit simply removes some `#[allow(dead_code)]` which are no
longer needed as well as the the notion of callee-saved registers.

The notion of callee-saved registers was primarily used in the early
days when Winch generated its own trampolines, however, trampolines are
now emitted through Cranelift.
…ance#9234)

* Add pytorch backend, tests, examples

* Update cargo.lock file with tch dependencies prtest:full

* document set_input parameters usage

* vet: exempt all crates with 10K+ daily downloads

As described in the [contribution guidelines], Wasmtime will exempt
dependencies from vetting that receive at least 10,000 downloads a day.
This substantially reduces the burden for vetting this PR, so I've
tallied up daily downloads (across all versions) for the crates in this
PR, listed below. This change then exempts the new dependencies that
meet the 10K+ criteria.

[contribution guidelines]: https://docs.wasmtime.dev/contributing-coding-guidelines.html#policy-for-adding-cargo-vet-entries

```
> aes
2024-10-02      111734
2024-10-03      107324
2024-10-04      104299
2024-10-05      32397
2024-10-06      29507
2024-10-07      123368
2024-10-08      125732

> base64ct
2024-10-02      179848
2024-10-03      157938
2024-10-04      149495
2024-10-05      48118
2024-10-06      43389
2024-10-07      183254
2024-10-08      175378

> bzip2
2024-10-02      89309
2024-10-03      85112
2024-10-04      76573
2024-10-05      27152
2024-10-06      24124
2024-10-07      90228
2024-10-08      93314

> bzip2-sys
2024-10-02      109664
2024-10-03      102677
2024-10-04      94485
2024-10-05      33196
2024-10-06      28417
2024-10-07      110195
2024-10-08      110951

> cipher
2024-10-02      1119
2024-10-03      377
2024-10-04      270
2024-10-05      178
2024-10-06      271
2024-10-07      2105
2024-10-08      1777

> constant_time_eq
2024-10-02      137462
2024-10-03      126300
2024-10-04      121927
2024-10-05      169156
2024-10-06      139559
2024-10-07      304529
2024-10-08      246533

> crunchy
2024-10-02      197832
2024-10-03      176586
2024-10-04      172053
2024-10-05      187875
2024-10-06      153647
2024-10-07      359240
2024-10-08      304777

> deranged
2024-10-02      319691
2024-10-03      285298
2024-10-04      267760
2024-10-05      104537
2024-10-06      92306
2024-10-07      309831
2024-10-08      308869

> digest
2024-10-02      2128
2024-10-03      1335
2024-10-04      1474
2024-10-05      594
2024-10-06      726
2024-10-07      3079
2024-10-08      2855

> half
2024-10-02      161525
2024-10-03      144013
2024-10-04      137296
2024-10-05      49246
2024-10-06      42437
2024-10-07      157366
2024-10-08      165013

> hmac
2024-10-02      1254
2024-10-03      394
2024-10-04      322
2024-10-05      230
2024-10-06      424
2024-10-07      2068
2024-10-08      1907

> inout
2024-10-02      1114
2024-10-03      366
2024-10-04      281
2024-10-05      184
2024-10-06      285
2024-10-07      2000
2024-10-08      1782

> matrixmultiply
2024-10-02      52273
2024-10-03      49931
2024-10-04      48408
2024-10-05      17219
2024-10-06      13950
2024-10-07      53916
2024-10-08      52644

> ndarray
2024-10-02      28922
2024-10-03      29354
2024-10-04      27397
2024-10-05      10480
2024-10-06      9074
2024-10-07      30988
2024-10-08      32344

> num-complex
2024-10-02      178444
2024-10-03      159144
2024-10-04      146722
2024-10-05      48522
2024-10-06      39138
2024-10-07      171363
2024-10-08      172915

> num-conv
2024-10-02      298495
2024-10-03      267134
2024-10-04      250350
2024-10-05      97809
2024-10-06      87399
2024-10-07      293150
2024-10-08      290661

> num-integer
2024-10-02      333731
2024-10-03      300418
2024-10-04      287516
2024-10-05      227416
2024-10-06      190413
2024-10-07      487348
2024-10-08      433744

> password-hash
2024-10-02      22429
2024-10-03      20702
2024-10-04      21550
2024-10-05      9061
2024-10-06      8660
2024-10-07      25743
2024-10-08      22404

> pbkdf2
2024-10-02      77885
2024-10-03      76192
2024-10-04      72278
2024-10-05      148944
2024-10-06      119322
2024-10-07      248354
2024-10-08      190649

> powerfmt
2024-10-02      310293
2024-10-03      277178
2024-10-04      259885
2024-10-05      101195
2024-10-06      89789
2024-10-07      302058
2024-10-08      300192

> rawpointer
2024-10-02      53917
2024-10-03      50649
2024-10-04      48439
2024-10-05      17375
2024-10-06      14761
2024-10-07      56228
2024-10-08      55013

> safetensors
2024-10-02      2253
2024-10-03      1737
2024-10-04      1798
2024-10-05      1085
2024-10-06      1544
2024-10-07      1742
2024-10-08      2024

> sha1
2024-10-02      1410
2024-10-03      673
2024-10-04      772
2024-10-05      230
2024-10-06      416
2024-10-07      2125
2024-10-08      2204

> tch
2024-10-02      1930
2024-10-03      2295
2024-10-04      2834
2024-10-05      1274
2024-10-06      455
2024-10-07      2290
2024-10-08      2181

> time
2024-10-02      303042
2024-10-03      271434
2024-10-04      255795
2024-10-05      100194
2024-10-06      88810
2024-10-07      297807
2024-10-08      295315

> time-core
2024-10-02      334979
2024-10-03      302165
2024-10-04      282918
2024-10-05      109319
2024-10-06      96522
2024-10-07      324779
2024-10-08      322102

> torch-sys
2024-10-02      1911
2024-10-03      2300
2024-10-04      2843
2024-10-05      1271
2024-10-06      452
2024-10-07      2292
2024-10-08      2177

> zip
2024-10-02      22520
2024-10-03      23201
2024-10-04      20946
2024-10-05      9067
2024-10-06      8470
2024-10-07      24674
2024-10-08      24870

> zstd
2024-10-02      175155
2024-10-03      167766
2024-10-04      157489
2024-10-05      52753
2024-10-06      44844
2024-10-07      177411
2024-10-08      173785

> zstd-safe
2024-10-02      179288
2024-10-03      170379
2024-10-04      159352
2024-10-05      52820
2024-10-06      45835
2024-10-07      180535
2024-10-08      177703
```

* vet: audit remaining dependencies

For dependencies that did not have clear 10k+ daily downloads, this
change audits them for `safe-to-deploy`.

* vet: use external audits

This adds external audits pulled in automatically by `cargo vet` for the
remainder of the dependencies not covered by previous commits.

* remove model files, download them instead. Switch from resnet18 to squeezenet1.1

* update cargo lock file with ndarray

---------

Co-authored-by: Andrew Brown <[email protected]>
…ocs on docs.rs (bytecodealliance#9493)

* build docs for cranelift with all features enabled

* build docs for cranelift-codegen with the feature all-arch

* build docs for cranelift-codegen with the feature all-arch
…9477)

* Add permissions to `wasi_config_preopen_dir` C API

The current `wasi_config_preopen_dir` function does not expose the `dir_perms` and `file_perms` parameters that were added to `preopened_dir`. This commit adds them and update the docs for those functions to reflect the current signature.

This is a prerequisite for bytecodealliance/wasmtime-py#251

* Address review comments

* Use early return for parameters
* Switch libunwind detection to using weak symbols

This is an attempt to resolve bytecodealliance#8897.

* Fix warnings

* Run clang-format
This commit handles dead code warnings produced by the compiler when the
macro is invoked as:

    #[wasmtime_test(strategies(not(Cranelift))]

Which occur because Winch currently only offers support for x86_64.

The motivation behind this change comes from
bytecodealliance#9490, which is where
the warnings surfaced.
* winch: Improve tunables/configuration validation

This commit introduces proper validation and documentation to handle the
engine features not currently supported by Winch (e.g., `consume_fuel`,
follow-up to the discussion in
bytecodealliance#9472).

In this commit, the tunables validation is done at the `set_tunables`
method in Winch's `wasmtime_environ::compile::CompilerBuilder`
implemetation, which enables removing Winch specific logic from
`Config::validate`

This change also introduces the question of how to consolidate the
compiler specific flags with Winch (e.g, the user-specified
`cranelift_*` options) given that not all of them are applicable to
Winch (e.g., `cranelift_debug_verifier`,
`cranelift_nan_canonicalization`), this change doesn't introduce any
functionality on this front, however, it's probably something worth
considering/discussing.

* Update the fuzzers

* Use `wasmtime_test` instead of test

This allows a couple of things:
* Pre-configuring `Winch` as the strategy
* Handling the target architetures supported by Winch
* winch: Implement Fuel-Based Interruption

Closes: bytecodealliance#8090

This commit introduces the initial implementation of fuel-based
interruption in Winch.

To maintain consistency with existing fuel semantics, this
implementation closely follows the Wasmtime/Cranelift approach, with the
following exception:

* Local Fuel Cache: Given Winch's emphasis on compilation speed,
  this implementation does not optimize for minimizing loads and stores.
  As a result, checking and incrementing fuel currently requires
  explicit loads and stores. Future optimizations may be considered to
  improve this aspect.

This commit also includes a small refactoring in the visitor, which
introduces more generic "visitor hook" which enable handling the invariants that need
to happen before and after emitting machine code for each Wasm operator.

* Use the vmruntime limits directly

* Remove unsupported fuel warning
* Bump MSRV to 1.80

This commit updates the minimum Rust version required to compile
Wasmtime to 1.80.0 from the previous 1.78.0.

* Update rust installation in CI

* Change MSRV window back to 2 now that oss-fuzz is resolved
* Update the nightly to the latest nightly

* Undo most of the nightly update
This commit is a follow-up to bytecodealliance#9496 to leverage various APIs that the
workspace now has access to. For example most dependencies on the
`once_cell` crate are now removed in favor of the types stabilized in
the standard library: `LazyLock` and `LazyCell`. One dependency remains
in the `wasmtime` crate due to the `get_or_try_init` not being stable
yet.

Some additional helper methods on raw pointer slices are also available
for removing a few minor `unsafe` blocks.
This commit implements the wide-arithmetic proposal for Winch on x64.
This is mostly for me to get my feet wet doing things in Winch. The
proposal itself is relatively modest with just four new instructions.
@dhil dhil merged commit dad0a1c into wasmfx:main Oct 23, 2024
54 checks passed
@dhil dhil deleted the wasmfx-merge branch October 23, 2024 13:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants