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

Make WebAssembly compatible #18

Open
ghost opened this issue Jun 1, 2018 · 3 comments
Open

Make WebAssembly compatible #18

ghost opened this issue Jun 1, 2018 · 3 comments

Comments

@ghost
Copy link

ghost commented Jun 1, 2018

Full tree output using cargo tree
├── Inflector v0.10.0
│   ├── lazy_static v0.2.8
│   └── regex v0.2.1
│       ├── aho-corasick v0.6.3
│       │   └── memchr v1.0.1
│       │       └── libc v0.2.22
│       ├── memchr v1.0.1 (*)
│       ├── regex-syntax v0.4.0
│       ├── thread_local v0.3.3
│       │   ├── thread-id v3.0.0
│       │   │   └── libc v0.2.22 (*)
│       │   └── unreachable v0.1.1
│       │       └── void v1.0.2
│       └── utf8-ranges v1.0.0
├── clap v2.23.3
│   ├── ansi_term v0.9.0
│   ├── atty v0.2.2
│   │   └── libc v0.2.22 (*)
│   ├── bitflags v0.8.2
│   ├── strsim v0.6.0
│   ├── term_size v0.3.0
│   │   └── libc v0.2.22 (*)
│   ├── unicode-segmentation v1.1.0
│   ├── unicode-width v0.1.4
│   └── vec_map v0.7.0
├── error-chain v0.10.0
│   └── backtrace v0.3.0
│       ├── backtrace-sys v0.1.10
│       │   └── libc v0.2.22 (*)
│       │   [build-dependencies]
│       │   └── gcc v0.3.45
│       ├── cfg-if v0.1.0
│       ├── dbghelp-sys v0.2.0
│       │   └── winapi v0.2.8
│       │   [build-dependencies]
│       │   └── winapi-build v0.1.1
│       ├── kernel32-sys v0.2.2
│       │   └── winapi v0.2.8 (*)
│       │   [build-dependencies]
│       │   └── winapi-build v0.1.1 (*)
│       ├── libc v0.2.22 (*)
│       ├── rustc-demangle v0.1.4
│       └── winapi v0.2.8 (*)
├── itertools v0.5.10
│   └── either v1.1.0
├── json v0.11.6
├── lazy_static v0.2.8 (*)
├── matches v0.1.4
├── nom v2.2.1
├── num-bigint v0.1.37
│   ├── num-integer v0.1.34
│   │   └── num-traits v0.1.37
│   ├── num-traits v0.1.37 (*)
│   ├── rand v0.3.15
│   │   └── libc v0.2.22 (*)
│   └── rustc-serialize v0.3.24
├── regex v0.2.1 (*)
├── rustache v0.1.0
│   ├── regex v0.1.80
│   │   ├── aho-corasick v0.5.3
│   │   │   └── memchr v0.1.11
│   │   │       └── libc v0.2.22 (*)
│   │   ├── memchr v0.1.11 (*)
│   │   ├── regex-syntax v0.3.9
│   │   ├── thread_local v0.2.7
│   │   │   └── thread-id v2.0.0
│   │   │       ├── kernel32-sys v0.2.2 (*)
│   │   │       └── libc v0.2.22 (*)
│   │   └── utf8-ranges v0.1.3
│   └── rustc-serialize v0.3.24 (*)
├── serde_json v1.0.1
│   ├── dtoa v0.4.1
│   ├── itoa v0.3.1
│   ├── num-traits v0.1.37 (*)
│   └── serde v1.0.2
└── toml v0.4.0
    └── serde v1.0.2 (*)
[build-dependencies]
└── peg v0.5.2
    └── quote v0.3.15

When compiling using rustc 1.25.0-nightly (b1f8e6fb0 2018-02-22) w/ cargo build --target wasm32-unknown-unknown, these packages seem to be an issue:

  • thread-id, error with get_internal(), this is a dependency of Inflector and rustache
  • rustc-serialize, error with traits not being satisfied, this is a dependency of rustache and num-bigint

Then everything that uses libc is also broken.

@hansihe, what is the best approach here. WebAssembly is the 'next step' for this project (in terms of real world usage). The only things I can think of are:

  • Drop these as dependencies
  • Report these issues to the creators and see if it is possible to drop these problematic dependencies (as it would be advantageous for them to be able to boast WebAssembly compatibility)

Or, I mean, we could fallback to prebuilt dependencies and asm.js (I really, really don't want to do this, especially with the Rust community making WebAssembly such a big deal)

@ghost
Copy link
Author

ghost commented Jun 1, 2018

Ok, so as a good starting point, rustache isn't even needed at all.

@ghost
Copy link
Author

ghost commented Jun 1, 2018

Alright, it seems I have overlooked something important: the wasm32-unknown-emscripten target. I am going to attempt building ProtoDefc using this target. In the mean time though, I had made removed rustache, and made clap an optional dependency (as it's only used for the CLI). I will continue cracking away at this, until the point where I hit a wall, where I will turn to the emscripten target.

@ghost ghost changed the title Make WebAssembly-compatible Make WebAssembly compatible Jun 1, 2018
@ghost
Copy link
Author

ghost commented Jun 1, 2018

I was able to do it! #19

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

0 participants