[WebAssembly] Update README. NFC.

This is just a cleanup of the very high level stuff.  I'm sure there is
more to update here but I'll leave that to others and/or a followup.

Differential Revision: https://reviews.llvm.org/D100888
This commit is contained in:
Sam Clegg 2021-04-20 13:47:02 -07:00
parent 7208bd4b32
commit 103956170b
1 changed files with 15 additions and 38 deletions

View File

@ -1,19 +1,23 @@
//===-- README.txt - Notes for WebAssembly code gen -----------------------===// //===-- README.txt - Notes for WebAssembly code gen -----------------------===//
This WebAssembly backend is presently under development. The object format emitted by the WebAssembly backed is documented in:
The most notable feature which is not yet stable is the ".o" file format. * https://github.com/WebAssembly/tool-conventions/blob/master/Linking.md
".o" file support is needed for many common ways of using LLVM, such as
using it through "clang -c", so this backend is not yet considered widely
usable. However, this backend is usable within some language toolchain
packages:
Emscripten provides a C/C++ compilation environment that includes standard The C ABI is described in:
libraries, tools, and packaging for producing WebAssembly applications that
can run in browsers and other environments. For more information, see the
Emscripten documentation in general, and this page in particular:
* https://github.com/kripken/emscripten/wiki/New-WebAssembly-Backend * https://github.com/WebAssembly/tool-conventions/blob/master/BasicCABI.md
For more information on WebAssembly itself, see the home page:
* https://webassembly.github.io/
Emscripten provides a C/C++ compilation environment based on clang which
includes standard libraries, tools, and packaging for producing WebAssembly
applications that can run in browsers and other environments.
wasi-sdk provides a more minimal C/C++ SDK based on clang, llvm and a libc based
on musl, for producing WebAssemmbly applictions that use the WASI ABI.
Rust provides WebAssembly support integrated into Cargo. There are two Rust provides WebAssembly support integrated into Cargo. There are two
main options: main options:
@ -25,38 +29,11 @@ main options:
For more information, see: For more information, see:
* https://www.hellorust.com/ * https://www.hellorust.com/
This backend does not yet support debug info. Full DWARF support needs a
design for how DWARF should be represented in WebAssembly. Sourcemap support
has an existing design and some corresponding browser implementations, so it
just needs implementing in LLVM.
Work-in-progress documentation for the ".o" file format is here:
* https://github.com/WebAssembly/tool-conventions/blob/master/Linking.md
A corresponding linker implementation is also under development:
* https://lld.llvm.org/WebAssembly.html
For more information on WebAssembly itself, see the home page:
* https://webassembly.github.io/
The following documents contain some information on the semantics and binary The following documents contain some information on the semantics and binary
encoding of WebAssembly itself: encoding of WebAssembly itself:
* https://github.com/WebAssembly/design/blob/master/Semantics.md * https://github.com/WebAssembly/design/blob/master/Semantics.md
* https://github.com/WebAssembly/design/blob/master/BinaryEncoding.md * https://github.com/WebAssembly/design/blob/master/BinaryEncoding.md
The backend is built, tested and archived on the following waterfall:
https://wasm-stat.us
The backend's bringup is done in part by using the GCC torture test suite, since
it doesn't require C library support. Current known failures are in
known_gcc_test_failures.txt, all other tests should pass. The waterfall will
turn red if not. Once most of these pass, further testing will use LLVM's own
test suite. The tests can be run locally using:
https://github.com/WebAssembly/waterfall/blob/master/src/compile_torture_tests.py
Some notes on ways that the generated code could be improved follow: Some notes on ways that the generated code could be improved follow:
//===---------------------------------------------------------------------===// //===---------------------------------------------------------------------===//