forked from OSchip/llvm-project
[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:
parent
7208bd4b32
commit
103956170b
|
@ -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:
|
||||||
|
|
||||||
//===---------------------------------------------------------------------===//
|
//===---------------------------------------------------------------------===//
|
||||||
|
|
Loading…
Reference in New Issue