Commit 432f75c
committed
Implement support for proc macros on wasm32-wasip2
This is an initial draft implementation. A few problems need to be
addressed before this could be merged:
* Figure out testing strategy -- currently, this hardcodes compiletest
to build in wasip2, which clearly won't work to land. Most likely
we'll need an opt-in of some kind, especially given that building the
standard library for wasip2 currently requires downloading a
wasi sysroot.
* This duplicates the proc macro ABI with a WIT file for all the
individual functions. There's not too much complexity inherent to the
WIT approach -- the duplication doesn't seem to cost us much, since
the ABI is pretty simple. But it does mean the base data structures
need replicating, though some of that could be eliminated by always
using the codegen'd struct/enums in the C bridge as well.
* There's also some impedance mismatch, e.g., Span is Copy and so we
end up leaking resources to mitigate the issue there. I think the
right thing is probably to expose it as a u32 wrapper (similar to
the old ABI).
But in the meantime this does pass tests (confirmed on aarch64-apple and
x86_64-linux, the two systems I have readily available), so opening up a
draft PR to share the initial state.
Some not necessarily blocking challenges:
* `cc` crate dependency causes us to need an old wasmtime dependency. I
think we should be able to relax the upstream constraint but haven't
looked into it yet.1 parent 485ec3f commit 432f75c
43 files changed
Lines changed: 3345 additions & 295 deletions
File tree
- compiler
- rustc_builtin_macros
- src
- rustc_codegen_ssa/src/back
- rustc_expand
- src
- rustc_interface/src
- rustc_metadata
- src
- rmeta
- rustc_session/src
- rustc_span/src
- library
- proc_macro
- src
- bridge
- src
- bootstrap/src
- core
- build_steps
- builder
- utils
- doc/unstable-book/src/compiler-flags
- tools/compiletest/src
- tests/ui/proc-macro
- auxiliary
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
| 34 | + | |
| 35 | + | |
34 | 36 | | |
35 | 37 | | |
36 | 38 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
145 | 145 | | |
146 | 146 | | |
147 | 147 | | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
148 | 153 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
89 | 89 | | |
90 | 90 | | |
91 | 91 | | |
92 | | - | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
93 | 100 | | |
94 | 101 | | |
95 | 102 | | |
| |||
270 | 277 | | |
271 | 278 | | |
272 | 279 | | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
273 | 283 | | |
274 | 284 | | |
275 | 285 | | |
| |||
361 | 371 | | |
362 | 372 | | |
363 | 373 | | |
364 | | - | |
365 | | - | |
366 | | - | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
367 | 401 | | |
368 | 402 | | |
369 | 403 | | |
| |||
376 | 410 | | |
377 | 411 | | |
378 | 412 | | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1811 | 1811 | | |
1812 | 1812 | | |
1813 | 1813 | | |
1814 | | - | |
1815 | | - | |
1816 | | - | |
1817 | | - | |
1818 | | - | |
| 1814 | + | |
| 1815 | + | |
| 1816 | + | |
| 1817 | + | |
| 1818 | + | |
| 1819 | + | |
| 1820 | + | |
| 1821 | + | |
| 1822 | + | |
| 1823 | + | |
| 1824 | + | |
| 1825 | + | |
| 1826 | + | |
| 1827 | + | |
| 1828 | + | |
1819 | 1829 | | |
1820 | | - | |
| 1830 | + | |
| 1831 | + | |
| 1832 | + | |
1821 | 1833 | | |
1822 | 1834 | | |
1823 | 1835 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| 35 | + | |
35 | 36 | | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| 25 | + | |
25 | 26 | | |
26 | 27 | | |
27 | 28 | | |
| |||
0 commit comments