Skip to content

Can not build RustPython to wasm32-wasip2 #5704

Open
@miraclejzd

Description

@miraclejzd

Summary

I am trying to build RustPython into .wasm file which can run Python program with ssl as dependency. I found that wasm32-wasip2 supports std fully, which means it supports socket proposal that wasm32-wasip1 does not.

But I failed.

Details

rustc version:

$ rustc --version
rustc 1.88.0-nightly (38c560ae6 2025-04-15)

I also add #![feature(wasip2)] to the crate attributes and here is the diff:

diff --git a/common/src/lib.rs b/common/src/lib.rs
index 25501e4f5..2ee3a78b5 100644
--- a/common/src/lib.rs
+++ b/common/src/lib.rs
@@ -1,5 +1,5 @@
 //! A crate to hold types and functions common to all rustpython components.
-
+#![feature(wasip2)]
 #![cfg_attr(target_os = "redox", feature(byte_slice_trim_ascii))]
 
 #[macro_use]
diff --git a/stdlib/src/lib.rs b/stdlib/src/lib.rs
index a910c5854..8da304ac6 100644
--- a/stdlib/src/lib.rs
+++ b/stdlib/src/lib.rs
@@ -1,5 +1,6 @@
 // to allow `mod foo {}` in foo.rs; clippy thinks this is a mistake/misunderstanding of
 // how `mod` works, but we want this sometimes for pymodule declarations
+#![feature(wasip2)]
 #![allow(clippy::module_inception)]
 
 #[macro_use]

Then I run the command below:

export RUSTFLAGS="-C linker=wasm-ld"
cargo build --release --target wasm32-wasip2 --features "freeze-stdlib,ssl"

It fails with the log:

warning: unused import: `utils::ToCString`
   --> vm/src/stdlib/os.rs:145:9
    |
145 |         utils::ToCString,
    |         ^^^^^^^^^^^^^^^^
    |
    = note: `#[warn(unused_imports)]` on by default

warning: unused imports: `IntoPyException`, `Py`, and `TryFromBorrowedObject`
  --> vm/src/stdlib/signal.rs:15:19
   |
15 |         convert::{IntoPyException, TryFromBorrowedObject},
   |                   ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^
16 |         signal, Py, PyObjectRef, PyResult, VirtualMachine,
   |                 ^^

warning: `rustpython-vm` (lib) generated 2 warnings (run `cargo fix --lib -p rustpython-vm` to apply 2 suggestions)
   Compiling rustpython-stdlib v0.4.0 (/home/jzd/projects/RustPython/stdlib)
error[E0433]: failed to resolve: use of unresolved module or unlinked crate `ssl`
   --> stdlib/src/lib.rs:154:23
    |
154 |             "_ssl" => ssl::make_module,
    |                       ^^^ use of unresolved module or unlinked crate `ssl`
    |
    = help: if you wanted to use a crate named `ssl`, use `cargo add ssl` to add it to your `Cargo.toml`

For more information about this error, try `rustc --explain E0433`.
error: could not compile `rustpython-stdlib` (lib) due to 1 previous error

What can I do to make it work? I need the feature ssl to enable python library couchdb and redis.

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