Skip to content

Make rust-ipfs more platform agnostic #6

Description

@dariusc93

From where it stands, it seems that rust-ipfs is not exactly platform agnostic in a sense where it could run on every platform without an issue (mostly around wasm). rust-libp2p is platform agnostic, although testing may need to be done around wasm, wasi, etc., but have not seen many reports of issues on those platforms while rust-ipfs, being directly tied in with tokio, which does not support wasm completely, would likely have trouble running on such platforms.

Platforms that rust-ipfs can run on:

What should be done in the future:

  • Gate any IO operations behind features not to conflict with platforms that cannot perform direct IO (eg WASM)
  • Test official protocols against WASM in rust-ipfs to determine what does and doesnt work
  • Test interop with js-ipfs and go-ipfs

Notes:

  1. Under default configuration, DNS would not operate on android due to its attempt to locate /etc/resolve.conf. As a result, we have to check for the target os and use the following lines to use the default dns (which I believe would be google dns)
  2. We can use idb, or gluesql for the data and block store when targetting wasm to make it easier on us.
  3. We may want to utilize send_wrapper when handling any wasm32 libraries as many of them that interact with bindings will not support Send or Sync.
  4. We will prioritize using tokio where possible.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions