dtolnay / watt

Runtime for executing procedural macros as WebAssembly
Apache License 2.0
1.29k stars 28 forks source link

Implement wasm=>host feature query #37

Closed CAD97 closed 4 years ago

CAD97 commented 4 years ago

Supersedes #36, closes #35

This implements a call from the wasm to the host runtime that queries for a given feature string, returning 0 for a feature that has been shared as false, 1 for true, and any other value (-1) for a flag that has not been shared to the wasm.

Rather than bolting this onto proc_macro2 like was done in the PoC #36, I've created a new micro-crate to link just this functionality, that the macro can use as a path dependency (as is patched for proc_macro2 as well).

For testing/not-in-watt use, the crate should probably only link the watt impl under a feature flag, and just always return Some(true).

CAD97 commented 4 years ago

The way to inform the runtime of what features to forward can, of course, be changed. I do not believe there is a fully implicit/automatic way that this could be done, but I also think that this "opt-in sharing" is in line with the design of wasm of being secure-by-default and share-nothing-by-default.