summary refs log tree commit diff
path: root/src/etc
AgeCommit message (Collapse)AuthorLines
2017-12-21Correct the return type for `x86_mm256_sad_epu8`varkor-1/+1
Fixes #43439.
2017-12-17Distribute intrinsic.natvis with the compiler for windows-msvc.Antal Szabó-1/+1
2017-12-02Use more convenient and UNIX-agnostic shebangSébastien Santoro-1/+1
When using bash-specific features, scripts using env to call bash are more convenient, as bash be installed in different places according the OS. Same applies for other languages' interpreters.
2017-11-28Auto merge of #46207 - kennytm:kill-grep, r=alexcrichtonbors-0/+89
Replace most call to grep in run-make by a script that cat the input. Introduced a new `src/etc/cat-and-grep.sh` script (called in run-make as `$(CGREP)`), which prints the input and do a grep simultaneously. This is mainly used to debug spurious failures in run-make, such as the spurious error in #45810, as well as real errors such as #46126. (cc #40713) Some `grep` still remains, mainly the `grep -c` calls that count the number of matches and print the result to stdout.
2017-11-28ci: Start running wasm32 tests on TravisAlex Crichton-10/+6
This commit allocates a builder to running wasm32 tests on Travis. Not all test suites pass right now so this is starting out with just the run-pass and the libcore test suites. This'll hopefully give us a pretty broad set of coverage for integration in rustc itself as well as a somewhat broad coverage of the llvm backend itself through integration/unit tests.
2017-11-28Replace most call to grep in run-make by a script that cat the input.kennytm-0/+89
Introduced a new src/etc/cat-and-grep.sh script (called in run-make as $(CGREP)), which prints the input and do a grep simultaneously. This is mainly used to debug spurious failures in run-make, such as the sanitizer error in #45810, as well as real errors such as #46126.
2017-11-21fix some typosMartin Lindhe-1/+1
2017-11-20Auto merge of #45905 - alexcrichton:add-wasm-target, r=aturonbors-0/+119
std: Add a new wasm32-unknown-unknown target This commit adds a new target to the compiler: wasm32-unknown-unknown. This target is a reimagining of what it looks like to generate WebAssembly code from Rust. Instead of using Emscripten which can bring with it a weighty runtime this instead is a target which uses only the LLVM backend for WebAssembly and a "custom linker" for now which will hopefully one day be direct calls to lld. Notable features of this target include: * There is zero runtime footprint. The target assumes nothing exists other than the wasm32 instruction set. * There is zero toolchain footprint beyond adding the target. No custom linker is needed, rustc contains everything. * Very small wasm modules can be generated directly from Rust code using this target. * Most of the standard library is stubbed out to return an error, but anything related to allocation works (aka `HashMap`, `Vec`, etc). * Naturally, any `#[no_std]` crate should be 100% compatible with this new target. This target is currently somewhat janky due to how linking works. The "linking" is currently unconditional whole program LTO (aka LLVM is being used as a linker). Naturally that means compiling programs is pretty slow! Eventually though this target should have a linker. This target is also intended to be quite experimental. I'm hoping that this can act as a catalyst for further experimentation in Rust with WebAssembly. Breaking changes are very likely to land to this target, so it's not recommended to rely on it in any critical capacity yet. We'll let you know when it's "production ready". ### Building yourself First you'll need to configure the build of LLVM and enable this target ``` $ ./configure --target=wasm32-unknown-unknown --set llvm.experimental-targets=WebAssembly ``` Next you'll want to remove any previously compiled LLVM as it needs to be rebuilt with WebAssembly support. You can do that with: ``` $ rm -rf build ``` And then you're good to go! A `./x.py build` should give you a rustc with the appropriate libstd target. ### Test support Currently testing-wise this target is looking pretty good but isn't complete. I've got almost the entire `run-pass` test suite working with this target (lots of tests ignored, but many passing as well). The `core` test suite is [still getting LLVM bugs fixed](https://reviews.llvm.org/D39866) to get that working and will take some time. Relatively simple programs all seem to work though! In general I've only tested this with a local fork that makes use of LLVM 5 rather than our current LLVM 4 on master. The LLVM 4 WebAssembly backend AFAIK isn't broken per se but is likely missing bug fixes available on LLVM 5. I'm hoping though that we can decouple the LLVM 5 upgrade and adding this wasm target! ### But the modules generated are huge! It's worth nothing that you may not immediately see the "smallest possible wasm module" for the input you feed to rustc. For various reasons it's very difficult to get rid of the final "bloat" in vanilla rustc (again, a real linker should fix all this). For now what you'll have to do is: cargo install --git https://github.com/alexcrichton/wasm-gc wasm-gc foo.wasm bar.wasm And then `bar.wasm` should be the smallest we can get it! --- In any case for now I'd love feedback on this, particularly on the various integration points if you've got better ideas of how to approach them!
2017-11-19std: Add a new wasm32-unknown-unknown targetAlex Crichton-0/+119
This commit adds a new target to the compiler: wasm32-unknown-unknown. This target is a reimagining of what it looks like to generate WebAssembly code from Rust. Instead of using Emscripten which can bring with it a weighty runtime this instead is a target which uses only the LLVM backend for WebAssembly and a "custom linker" for now which will hopefully one day be direct calls to lld. Notable features of this target include: * There is zero runtime footprint. The target assumes nothing exists other than the wasm32 instruction set. * There is zero toolchain footprint beyond adding the target. No custom linker is needed, rustc contains everything. * Very small wasm modules can be generated directly from Rust code using this target. * Most of the standard library is stubbed out to return an error, but anything related to allocation works (aka `HashMap`, `Vec`, etc). * Naturally, any `#[no_std]` crate should be 100% compatible with this new target. This target is currently somewhat janky due to how linking works. The "linking" is currently unconditional whole program LTO (aka LLVM is being used as a linker). Naturally that means compiling programs is pretty slow! Eventually though this target should have a linker. This target is also intended to be quite experimental. I'm hoping that this can act as a catalyst for further experimentation in Rust with WebAssembly. Breaking changes are very likely to land to this target, so it's not recommended to rely on it in any critical capacity yet. We'll let you know when it's "production ready". --- Currently testing-wise this target is looking pretty good but isn't complete. I've got almost the entire `run-pass` test suite working with this target (lots of tests ignored, but many passing as well). The `core` test suite is still getting LLVM bugs fixed to get that working and will take some time. Relatively simple programs all seem to work though! --- It's worth nothing that you may not immediately see the "smallest possible wasm module" for the input you feed to rustc. For various reasons it's very difficult to get rid of the final "bloat" in vanilla rustc (again, a real linker should fix all this). For now what you'll have to do is: cargo install --git https://github.com/alexcrichton/wasm-gc wasm-gc foo.wasm bar.wasm And then `bar.wasm` should be the smallest we can get it! --- In any case for now I'd love feedback on this, particularly on the various integration points if you've got better ideas of how to approach them!
2017-11-16fix some python3 incompatibilitiesCollin Anderson-4/+8
2017-10-26regenerate libcore/char_private.rsZack M. Davis-2/+2
char_private.rs is generated programmatically by char_private.py, using data retrieved from the Unicode Consortium's website. The motivation here was to make `is_printable` crate-visible (with `pub(crate)`), but it would seem that the Unicode data has changed slightly since char_private.rs was last generated.
2017-10-25Update compile-fail tests for error message deduplication.Michael Woerister-2/+2
2017-10-16rustbuild: Allow setting rls/rustfmt to "broken"Alex Crichton-0/+14
This commit enables configuring the RLS/rustfmt tools to the "broken" state and actually get it past CI. The main changes here were to update all dist-related code to handle the situation where the RLS isn't available. This in turn involved a homegrown preprocessor-like-function to edit the configuration files we pass to the various combined installer tools.
2017-10-10Rollup merge of #45071 - tromey:use-gdb-lazy-string, r=michaelwoeristerSteve Klabnik-4/+11
Implement display_hint in gdb pretty printers A few pretty-printers were returning a quoted string from their to_string method. It's preferable in gdb to return a lazy string and to let gdb handle the display by having a "display_hint" method that returns "string" -- it lets gdb settings (like "set print ...") work, it handles corrupted strings a bit better, and it passes the information along to IDEs.
2017-10-08debuginfo-test: Fix #45086.kennytm-1/+1
LLDB's output may be None instead of '', and that will cause type mismatch when normalize_whitespace() expects a string instead of None. This commit simply ensures we do pass '' even if the output is None.
2017-10-06Implement display_hint in gdb pretty printersTom Tromey-4/+11
A few pretty-printers were returning a quoted string from their to_string method. It's preferable in gdb to return a lazy string and to let gdb handle the display by having a "display_hint" method that returns "string" -- it lets gdb settings (like "set print ...") work, it handles corrupted strings a bit better, and it passes the information along to IDEs.
2017-10-03Auto merge of #44949 - QuietMisdreavus:rustdoctest-dirs, r=nikomatsakisbors-0/+18
let htmldocck.py check for directories Since i messed this up during https://github.com/rust-lang/rust/pull/44613, i wanted to codify this into the rustdoc tests to make sure that doesn't happen again.
2017-10-02Auto merge of #44885 - lu-zero:master, r=alexcrichtonbors-0/+70
More Altivec Intrinsics Float-specific intrinsics
2017-09-30let htmldocck.py check for directoriesQuietMisdreavus-0/+18
2017-09-27Add support for Vector Negative Multiply Subtract Float on PowerPCLuca Barbato-0/+7
2017-09-27Add support for Vector Truncate on PowerPCLuca Barbato-0/+7
2017-09-27Add support for Vector Round on PowerPCLuca Barbato-0/+7
2017-09-27Add support for Vector Ceiling on PowerPCLuca Barbato-0/+7
2017-09-27Add support for Vector Reciprocal Square Root Estimate Float on PowerPCLuca Barbato-0/+7
2017-09-27Add support for Vector Reciprocal Estimate Float on PowerPCLuca Barbato-0/+7
2017-09-27Add support for Vector Log2 Estimate Float on PowerPCLuca Barbato-0/+7
2017-09-27Add support for Vector Floor on PowerPCLuca Barbato-0/+7
2017-09-27Add support for Vector 2 Raised to the Exponent Estimate Float on PowerPCLuca Barbato-0/+7
2017-09-27Add support for Vector Multiply Add Float on PowerPCLuca Barbato-0/+7
2017-09-06Rollup merge of #44351 - lu-zero:master, r=nikomatsakisMark Simulacrum-0/+63
More PowerPC Altivec intrinsics
2017-09-05Add support for Vector Sum Saturated on PowerPCLuca Barbato-0/+7
2017-09-05Add support for Vector Sum Across Partial 1/4 Saturated on PowerPCLuca Barbato-0/+14
2017-09-05Add support for Vector Sum Across Partial 1/2 Saturated on PowerPCLuca Barbato-0/+7
2017-08-31Add support for Vector Multiply Sum Saturated on PowerPCLuca Barbato-0/+7
2017-08-31Add support for Vector Multiply Sum on PowerPCLuca Barbato-0/+21
2017-08-31Add support for Vector Multiply Add Saturated on PowerPCLuca Barbato-0/+7
2017-08-26Allow htmldocck to run using Python 3.kennytm-13/+20
2017-08-16Add support for Vector Unpack High and Low on PowerPCLuca Barbato-0/+14
2017-08-16Add support for Vector Pack Pixel on PowerPCLuca Barbato-0/+7
The llvm intrinsic uses signed integers.
2017-08-16Add support for Vector Pack Saturated Unsigned on PowerPCLuca Barbato-0/+7
2017-08-16Add support for Vector Pack Saturated on PowerPCLuca Barbato-0/+7
2017-08-07Add support for Vector Average on PowerPCLuca Barbato-0/+7
2017-08-07Add support for Vector Multiply Odd on PowerPCLuca Barbato-0/+7
2017-08-07Add support for Vector Multiply Even on PowerPCLuca Barbato-0/+7
2017-08-07Narrow or widen the vector element without changing the vector sizeLuca Barbato-1/+9
2017-08-06Add support for Vector Add Carryout on PowerPCLuca Barbato-0/+7
2017-08-06Add support for Vector Add Saturated on PowerPCLuca Barbato-0/+7
2017-08-04Add support for Vector Subtract Carryout on PowerPCLuca Barbato-0/+7
2017-08-04Add support for Vector Subtract Saturated on PowerPCLuca Barbato-0/+7
2017-07-29Auto merge of #43492 - lu-zero:master, r=alexcrichtonbors-2/+58
More Altivec Intrinsics