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

wasm support #18

Open
asimpletune opened this issue Jun 24, 2023 · 5 comments
Open

wasm support #18

asimpletune opened this issue Jun 24, 2023 · 5 comments

Comments

@asimpletune
Copy link

Hello, thanks for taking time to make these great libraries. Is wasm support something that's possible?

I was able to use mail-parser in a wasm environment, but haven't had the same luck for mail-auth.

Thank you!

@mdecimus
Copy link
Member

Hi, the default crypto backend of mail-auth uses the ring crate which might not compile to WASM as it includes some Assembler code. You can try disabling the default features and enabling the rust-crypto feature which uses a different library in pure Rust so you'll probably have better luck.

@asimpletune
Copy link
Author

Ok, thank you for the suggestion. I will try it out.

@asimpletune
Copy link
Author

Do you have any suggestions for

error: failed to run custom build command for `zstd-sys v2.0.8+zstd.1.5.5`

@asimpletune
Copy link
Author

Actually, the above error only happens intermittently, but that part succeeds most of them time. Where I get blocked, even with rust-crypto feature specified and default features turned off is a bunch of error messages mostly around sys.

error[E0432]: unresolved import `crate::sys::IoSourceState`
  --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/io_source.rs:12:5
   |
12 | use crate::sys::IoSourceState;
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^ no `IoSourceState` in `sys`

error[E0432]: unresolved import `crate::sys::tcp`
  --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/net/tcp/listener.rs:15:17
   |
15 | use crate::sys::tcp::{bind, listen, new_for_addr};
   |                 ^^^ could not find `tcp` in `sys`

error[E0432]: unresolved import `crate::sys::tcp`
  --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/net/tcp/stream.rs:13:17
   |
13 | use crate::sys::tcp::{connect, new_for_addr};
   |                 ^^^ could not find `tcp` in `sys`

error[E0433]: failed to resolve: could not find `Selector` in `sys`
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/poll.rs:300:18
    |
300 |             sys::Selector::new().map(|selector| Poll {
    |                  ^^^^^^^^ could not find `Selector` in `sys`

error[E0433]: failed to resolve: could not find `event` in `sys`
  --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/event.rs:24:14
   |
24 |         sys::event::token(&self.inner)
   |              ^^^^^ could not find `event` in `sys`

error[E0433]: failed to resolve: could not find `event` in `sys`
  --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/event.rs:38:14
   |
38 |         sys::event::is_readable(&self.inner)
   |              ^^^^^ could not find `event` in `sys`

error[E0433]: failed to resolve: could not find `event` in `sys`
  --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/event.rs:43:14
   |
43 |         sys::event::is_writable(&self.inner)
   |              ^^^^^ could not find `event` in `sys`

error[E0433]: failed to resolve: could not find `event` in `sys`
  --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/event.rs:68:14
   |
68 |         sys::event::is_error(&self.inner)
   |              ^^^^^ could not find `event` in `sys`

error[E0433]: failed to resolve: could not find `event` in `sys`
  --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/event.rs:99:14
   |
99 |         sys::event::is_read_closed(&self.inner)
   |              ^^^^^ could not find `event` in `sys`

error[E0433]: failed to resolve: could not find `event` in `sys`
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/event.rs:129:14
    |
129 |         sys::event::is_write_closed(&self.inner)
    |              ^^^^^ could not find `event` in `sys`

error[E0433]: failed to resolve: could not find `event` in `sys`
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/event.rs:151:14
    |
151 |         sys::event::is_priority(&self.inner)
    |              ^^^^^ could not find `event` in `sys`

error[E0433]: failed to resolve: could not find `event` in `sys`
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/event.rs:173:14
    |
173 |         sys::event::is_aio(&self.inner)
    |              ^^^^^ could not find `event` in `sys`

error[E0433]: failed to resolve: could not find `event` in `sys`
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/event.rs:183:14
    |
183 |         sys::event::is_lio(&self.inner)
    |              ^^^^^ could not find `event` in `sys`

error[E0433]: failed to resolve: could not find `event` in `sys`
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/event.rs:221:26
    |
221 |                     sys::event::debug_details(f, self.0)
    |                          ^^^^^ could not find `event` in `sys`

error[E0433]: failed to resolve: could not find `tcp` in `sys`
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/net/tcp/listener.rs:103:18
    |
103 |             sys::tcp::accept(inner).map(|(stream, addr)| (TcpStream::from_std(stream), addr))
    |                  ^^^ could not find `tcp` in `sys`

error[E0433]: failed to resolve: could not find `udp` in `sys`
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/net/udp.rs:122:14
    |
122 |         sys::udp::bind(addr).map(UdpSocket::from_std)
    |              ^^^ could not find `udp` in `sys`

error[E0433]: failed to resolve: could not find `udp` in `sys`
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/net/udp.rs:544:14
    |
544 |         sys::udp::only_v6(&self.inner)
    |              ^^^ could not find `udp` in `sys`

error[E0412]: cannot find type `Selector` in module `sys`
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/poll.rs:254:20
    |
254 |     selector: sys::Selector,
    |                    ^^^^^^^^ not found in `sys`

error[E0412]: cannot find type `Selector` in module `sys`
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/poll.rs:688:44
    |
688 |     pub(crate) fn selector(&self) -> &sys::Selector {
    |                                            ^^^^^^^^ not found in `sys`

error[E0412]: cannot find type `Waker` in module `sys`
  --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/waker.rs:79:17
   |
79 |     inner: sys::Waker,
   |                 ^^^^^ not found in `sys`
   |
help: consider importing one of these items
   |
1  | use core::task::Waker;
   |
1  | use crate::Waker;
   |
1  | use std::task::Waker;
   |
help: if you import `Waker`, refer to it directly
   |
79 -     inner: sys::Waker,
79 +     inner: Waker,
   |

error[E0433]: failed to resolve: could not find `Waker` in `sys`
  --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/waker.rs:87:14
   |
87 |         sys::Waker::new(registry.selector(), token).map(|inner| Waker { inner })
   |              ^^^^^ could not find `Waker` in `sys`
   |
help: consider importing one of these items
   |
1  | use core::task::Waker;
   |
1  | use crate::Waker;
   |
1  | use std::task::Waker;
   |
help: if you import `Waker`, refer to it directly
   |
87 -         sys::Waker::new(registry.selector(), token).map(|inner| Waker { inner })
87 +         Waker::new(registry.selector(), token).map(|inner| Waker { inner })
   |

error[E0412]: cannot find type `Event` in module `sys`
  --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/event.rs:18:17
   |
18 |     inner: sys::Event,
   |                 ^^^^^ not found in `sys`
   |
help: consider importing this struct
   |
1  | use crate::event::Event;
   |
help: if you import `Event`, refer to it directly
   |
18 -     inner: sys::Event,
18 +     inner: Event,
   |

error[E0412]: cannot find type `Event` in module `sys`
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/event.rs:187:55
    |
187 |     pub(crate) fn from_sys_event_ref(sys_event: &sys::Event) -> &Event {
    |                                                       ^^^^^ not found in `sys`
    |
help: consider importing this struct
    |
1   | use crate::event::Event;
    |
help: if you import `Event`, refer to it directly
    |
187 -     pub(crate) fn from_sys_event_ref(sys_event: &sys::Event) -> &Event {
187 +     pub(crate) fn from_sys_event_ref(sys_event: &Event) -> &Event {
    |

error[E0412]: cannot find type `Event` in module `sys`
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/event.rs:191:41
    |
191 |             &*(sys_event as *const sys::Event as *const Event)
    |                                         ^^^^^ not found in `sys`
    |
help: consider importing this struct
    |
1   | use crate::event::Event;
    |
help: if you import `Event`, refer to it directly
    |
191 -             &*(sys_event as *const sys::Event as *const Event)
191 +             &*(sys_event as *const Event as *const Event)
    |

error[E0412]: cannot find type `Event` in module `sys`
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/event.rs:217:46
    |
217 |             struct EventDetails<'a>(&'a sys::Event);
    |                                              ^^^^^ not found in `sys`
    |
help: consider importing this struct
    |
1   | use crate::event::Event;
    |
help: if you import `Event`, refer to it directly
    |
217 -             struct EventDetails<'a>(&'a sys::Event);
217 +             struct EventDetails<'a>(&'a Event);
    |

error[E0412]: cannot find type `Events` in module `sys`
  --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/events.rs:43:17
   |
43 |     inner: sys::Events,
   |                 ^^^^^^ not found in `sys`
   |
help: consider importing this struct
   |
1  | use crate::Events;
   |
help: if you import `Events`, refer to it directly
   |
43 -     inner: sys::Events,
43 +     inner: Events,
   |

error[E0433]: failed to resolve: could not find `Events` in `sys`
  --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/events.rs:94:25
   |
94 |             inner: sys::Events::with_capacity(capacity),
   |                         ^^^^^^ could not find `Events` in `sys`
   |
help: consider importing this struct
   |
1  | use crate::Events;
   |
help: if you import `Events`, refer to it directly
   |
94 -             inner: sys::Events::with_capacity(capacity),
94 +             inner: Events::with_capacity(capacity),
   |

error[E0412]: cannot find type `Events` in module `sys`
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/events.rs:189:47
    |
189 |     pub(crate) fn sys(&mut self) -> &mut sys::Events {
    |                                               ^^^^^^ not found in `sys`
    |
help: consider importing this struct
    |
1   | use crate::Events;
    |
help: if you import `Events`, refer to it directly
    |
189 -     pub(crate) fn sys(&mut self) -> &mut sys::Events {
189 +     pub(crate) fn sys(&mut self) -> &mut Events {
    |

error[E0425]: cannot find value `listener` in this scope
  --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/net/tcp/listener.rs:74:24
   |
74 |         set_reuseaddr(&listener.inner, true)?;
   |                        ^^^^^^^^ not found in this scope

error[E0425]: cannot find value `listener` in this scope
  --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/net/tcp/listener.rs:76:15
   |
76 |         bind(&listener.inner, addr)?;
   |               ^^^^^^^^ not found in this scope

error[E0425]: cannot find value `listener` in this scope
  --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/net/tcp/listener.rs:77:17
   |
77 |         listen(&listener.inner, 1024)?;
   |                 ^^^^^^^^ not found in this scope

error[E0425]: cannot find value `listener` in this scope
  --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/net/tcp/listener.rs:78:12
   |
78 |         Ok(listener)
   |            ^^^^^^^^ not found in this scope

error[E0425]: cannot find value `stream` in this scope
  --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/net/tcp/stream.rs:90:18
   |
90 |         connect(&stream.inner, addr)?;
   |                  ^^^^^^ not found in this scope

error[E0425]: cannot find value `stream` in this scope
  --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/net/tcp/stream.rs:91:12
   |
91 |         Ok(stream)
   |            ^^^^^^ not found in this scope

error[E0425]: cannot find function `set_reuseaddr` in this scope
  --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/net/tcp/listener.rs:74:9
   |
74 |         set_reuseaddr(&listener.inner, true)?;
   |         ^^^^^^^^^^^^^ not found in this scope

error[E0599]: no method named `register` found for struct `IoSource<TcpListener>` in the current scope
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/net/tcp/listener.rs:146:20
    |
146 |         self.inner.register(registry, token, interests)
    |                    ^^^^^^^^ method not found in `IoSource<TcpListener>`
    |
   ::: /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/io_source.rs:62:1
    |
62  | pub struct IoSource<T> {
    | ---------------------- method `register` not found for this struct
    |
    = help: items from traits can only be used if the trait is implemented and in scope
note: `Source` defines an item `register`, perhaps you need to implement it
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/source.rs:75:1
    |
75  | pub trait Source {
    | ^^^^^^^^^^^^^^^^

error[E0599]: no method named `reregister` found for struct `IoSource<TcpListener>` in the current scope
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/net/tcp/listener.rs:155:20
    |
155 |         self.inner.reregister(registry, token, interests)
    |                    ^^^^^^^^^^ method not found in `IoSource<TcpListener>`
    |
   ::: /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/io_source.rs:62:1
    |
62  | pub struct IoSource<T> {
    | ---------------------- method `reregister` not found for this struct
    |
    = help: items from traits can only be used if the trait is implemented and in scope
note: `Source` defines an item `reregister`, perhaps you need to implement it
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/source.rs:75:1
    |
75  | pub trait Source {
    | ^^^^^^^^^^^^^^^^

error[E0599]: no method named `deregister` found for struct `IoSource<TcpListener>` in the current scope
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/net/tcp/listener.rs:159:20
    |
159 |         self.inner.deregister(registry)
    |                    ^^^^^^^^^^ method not found in `IoSource<TcpListener>`
    |
   ::: /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/io_source.rs:62:1
    |
62  | pub struct IoSource<T> {
    | ---------------------- method `deregister` not found for this struct
    |
    = help: items from traits can only be used if the trait is implemented and in scope
note: `Source` defines an item `deregister`, perhaps you need to implement it
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/source.rs:75:1
    |
75  | pub trait Source {
    | ^^^^^^^^^^^^^^^^

error[E0599]: no method named `register` found for struct `IoSource<TcpStream>` in the current scope
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/net/tcp/stream.rs:325:20
    |
325 |         self.inner.register(registry, token, interests)
    |                    ^^^^^^^^ method not found in `IoSource<TcpStream>`
    |
   ::: /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/io_source.rs:62:1
    |
62  | pub struct IoSource<T> {
    | ---------------------- method `register` not found for this struct
    |
    = help: items from traits can only be used if the trait is implemented and in scope
note: `Source` defines an item `register`, perhaps you need to implement it
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/source.rs:75:1
    |
75  | pub trait Source {
    | ^^^^^^^^^^^^^^^^

error[E0599]: no method named `reregister` found for struct `IoSource<TcpStream>` in the current scope
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/net/tcp/stream.rs:334:20
    |
334 |         self.inner.reregister(registry, token, interests)
    |                    ^^^^^^^^^^ method not found in `IoSource<TcpStream>`
    |
   ::: /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/io_source.rs:62:1
    |
62  | pub struct IoSource<T> {
    | ---------------------- method `reregister` not found for this struct
    |
    = help: items from traits can only be used if the trait is implemented and in scope
note: `Source` defines an item `reregister`, perhaps you need to implement it
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/source.rs:75:1
    |
75  | pub trait Source {
    | ^^^^^^^^^^^^^^^^

error[E0599]: no method named `deregister` found for struct `IoSource<TcpStream>` in the current scope
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/net/tcp/stream.rs:338:20
    |
338 |         self.inner.deregister(registry)
    |                    ^^^^^^^^^^ method not found in `IoSource<TcpStream>`
    |
   ::: /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/io_source.rs:62:1
    |
62  | pub struct IoSource<T> {
    | ---------------------- method `deregister` not found for this struct
    |
    = help: items from traits can only be used if the trait is implemented and in scope
note: `Source` defines an item `deregister`, perhaps you need to implement it
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/source.rs:75:1
    |
75  | pub trait Source {
    | ^^^^^^^^^^^^^^^^

error[E0599]: no method named `register` found for struct `IoSource<UdpSocket>` in the current scope
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/net/udp.rs:622:20
    |
622 |         self.inner.register(registry, token, interests)
    |                    ^^^^^^^^ method not found in `IoSource<UdpSocket>`
    |
   ::: /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/io_source.rs:62:1
    |
62  | pub struct IoSource<T> {
    | ---------------------- method `register` not found for this struct
    |
    = help: items from traits can only be used if the trait is implemented and in scope
note: `Source` defines an item `register`, perhaps you need to implement it
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/source.rs:75:1
    |
75  | pub trait Source {
    | ^^^^^^^^^^^^^^^^

error[E0599]: no method named `reregister` found for struct `IoSource<UdpSocket>` in the current scope
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/net/udp.rs:631:20
    |
631 |         self.inner.reregister(registry, token, interests)
    |                    ^^^^^^^^^^ method not found in `IoSource<UdpSocket>`
    |
   ::: /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/io_source.rs:62:1
    |
62  | pub struct IoSource<T> {
    | ---------------------- method `reregister` not found for this struct
    |
    = help: items from traits can only be used if the trait is implemented and in scope
note: `Source` defines an item `reregister`, perhaps you need to implement it
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/source.rs:75:1
    |
75  | pub trait Source {
    | ^^^^^^^^^^^^^^^^

error[E0599]: no method named `deregister` found for struct `IoSource<UdpSocket>` in the current scope
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/net/udp.rs:635:20
    |
635 |         self.inner.deregister(registry)
    |                    ^^^^^^^^^^ method not found in `IoSource<UdpSocket>`
    |
   ::: /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/io_source.rs:62:1
    |
62  | pub struct IoSource<T> {
    | ---------------------- method `deregister` not found for this struct
    |
    = help: items from traits can only be used if the trait is implemented and in scope
note: `Source` defines an item `deregister`, perhaps you need to implement it
   --> /Users/spence/.cargo/registry/src/github.com-1ecc6299db9ec823/mio-0.8.8/src/event/source.rs:75:1
    |
75  | pub trait Source {

@mdecimus
Copy link
Member

Do you have any suggestions for

error: failed to run custom build command for `zstd-sys v2.0.8+zstd.1.5.5`

Not really, you should ask the developers of zstd to see if there is a way to compile their library for WASM.

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

No branches or pull requests

2 participants