Skip to content

Support deployment to wasm32-unknown-unknown without wasm-bindgen #4320

@lastmjs

Description

@lastmjs

wasm32-unknown-unknown != wasm-bindgen support.

This is one of the main problems we have with RustPython, as the environment we are deploying to is a non-browser strict wasm32-unknown-unknown environment without wasm-bindgen support.

RustPython by default expects wasm32-unknown-unknown to support wasm-bindgen, thus in our fork of RustPython we have to make the following changes that can be seen in this pull request: https://github.com/demergent-labs/RustPython/pull/1/files

1

In vm/Cargo.toml:

We need to change this:

getrandom = { version = "0.2.6", features = ["js"] }

To this:

getrandom = { version = "0.2.6", features = ["custom"] }

The js feature assumes wasm-bindgen support.

2

In vm/Cargo.toml:

We need to change this:

chrono = { version = "0.4.19", features = ["wasmbind"] }

To this, or to a newer version without the wasmbind feature:

chrono = { version = "=0.4.19" }

3

In vm/Cargo.toml we need to comment out the following:

[target.'cfg(target_arch = "wasm32")'.dependencies]
wasm-bindgen = "0.2.80"

4

In vm/src/stdlib/time.rs we need to comment out everything from line 94-102, basically get rid of all of the wasm_bindgen stuff. We also need a way to provide our own time functionality, which comes from a crate called ic_cdk, which has an API ic_cdk::api::time that will give us system time for our environment.

5

In vm/src/vm/vm_object we need to comment out all wasm_bindgen functionality, from lines 45-55.

Assuming wasm-bindgen support requires us to maintain a fork with these many changes, it would be great to upstream the ability to turn off wasm-bindgen so that our fork can be much smaller or even disappear.

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions