about summary refs log tree commit diff
path: root/src/etc
AgeCommit message (Collapse)AuthorLines
2018-06-04slightly improve rustdoc xml path errorGuillaume Gomez-9/+13
2018-05-21rust-gdb: work around the re-used -d argument in cgdbBenjamin Lamowski-1/+1
Use --directory= instead of -d, because cgdb reuses the short option.
2018-04-25Use UFCSvarkor-1/+1
2018-04-25Ensure derive(PartialOrd) is no longer accidentally exponentialvarkor-1/+1
Previously, two comparison operations would be generated for each field, each of which could delegate to another derived PartialOrd. Now we use ordering and optional chaining to ensure each pair of fields is only compared once.
2018-04-15Auto merge of #49881 - varkor:partialord-opt, r=Manishearthbors-1/+1
Fix derive(PartialOrd) and optimise final field operation ```rust // Before (`lt` on 2-field struct) self.f1 < other.f1 || (!(other.f1 < self.f1) && (self.f2 < other.f2 || (!(other.f2 < self.f2) && (false) )) ) // After self.f1 < other.f1 || (!(other.f1 < self.f1) && self.f2 < other.f2 ) // Before (`le` on 2-field struct) self.f1 < other.f1 || (!(other.f1 < self.f1) && (self.f2 < other.f2 || (!(other.f2 < self.f2) && (true) )) ) // After self.f1 < other.f1 || (self.f1 == other.f1 && self.f2 <= other.f2 ) ``` (The big diff is mainly because of a past faulty rustfmt application that I corrected 😒) Fixes #49650 and fixes #49505.
2018-04-14Rollup merge of #49886 - varkor:generate-deriving-span-tests-usability, ↔kennytm-6/+19
r=nikomatsakis Ignore copyright year when generating deriving span tests Previously, generate-deriving-span-tests.py would regenerate all the tests anew, even if they hadn't changed. This creates unnecessary diffs that only change the copyright year. Now we check to see if any of the content of the test has changed before generating the new one.
2018-04-12Move the core::char module to its own directorySimon Sapin-254/+0
2018-04-11Update compile-fail testsvarkor-1/+1
These now spit out errors for `<=` and `>=` as well.
2018-04-11Ignore copyright year when generating deriving span testsvarkor-6/+19
Previously, generate-deriving-span-tests.py would regenerate all the tests anew, even if they hadn't changed. This creates unnecessary diffs that only change the copyright year. Now we check to see if any of the content of the test has changed before generating the new one.
2018-03-22Use GNU version of fgrep/egrep tool if availableSébastien Marie-0/+5
It is mostly for BSD system. Some tests (run-make/issue-35164 and run-make/cat-and-grep-sanity-check) are failing with BSD fgrep, whereas they pass with gnu version (gfgrep).
2018-03-06Remove unused 'src/etc/ziggurat_tables.py' Python script.Corey Farwell-127/+0
This Python script was used to generate a `ziggurat_tables.rs` file in librand, but librand was moved out of the repo. * https://github.com/rust-lang/rust/commits/master/src/librand/distributions/ziggurat_tables.rs * https://github.com/rust-lang-nursery/rand/blob/master/utils/ziggurat_tables.py
2018-03-05Remove seemingly unused sugarise-doc-comments Python script.Corey Farwell-93/+0
This Python script converts documentation comments from the `#[doc = "..."]` attribute to the `///` syntax. It was added six years ago, presumably to help with the transition when `///` was implemented and hasn't really been touched since. I don't think there's much value in keeping it around at this point.
2018-03-03rust: Import LLD for linking wasm objectsAlex Crichton-0/+2
This commit imports the LLD project from LLVM to serve as the default linker for the `wasm32-unknown-unknown` target. The `binaryen` submoule is consequently removed along with "binaryen linker" support in rustc. Moving to LLD brings with it a number of benefits for wasm code: * LLD is itself an actual linker, so there's no need to compile all wasm code with LTO any more. As a result builds should be *much* speedier as LTO is no longer forcibly enabled for all builds of the wasm target. * LLD is quickly becoming an "official solution" for linking wasm code together. This, I believe at least, is intended to be the main supported linker for native code and wasm moving forward. Picking up support early on should help ensure that we can help LLD identify bugs and otherwise prove that it works great for all our use cases! * Improvements to the wasm toolchain are currently primarily focused around LLVM and LLD (from what I can tell at least), so it's in general much better to be on this bandwagon for bugfixes and new features. * Historical "hacks" like `wasm-gc` will soon no longer be necessary, LLD will [natively implement][gc] `--gc-sections` (better than `wasm-gc`!) which means a postprocessor is no longer needed to show off Rust's "small wasm binary size". LLD is added in a pretty standard way to rustc right now. A new rustbuild target was defined for building LLD, and this is executed when a compiler's sysroot is being assembled. LLD is compiled against the LLVM that we've got in tree, which means we're currently on the `release_60` branch, but this may get upgraded in the near future! LLD is placed into rustc's sysroot in a `bin` directory. This is similar to where `gcc.exe` can be found on Windows. This directory is automatically added to `PATH` whenever rustc executes the linker, allowing us to define a `WasmLd` linker which implements the interface that `wasm-ld`, LLD's frontend, expects. Like Emscripten the LLD target is currently only enabled for Tier 1 platforms, notably OSX/Windows/Linux, and will need to be installed manually for compiling to wasm on other platforms. LLD is by default turned off in rustbuild, and requires a `config.toml` option to be enabled to turn it on. Finally the unstable `#![wasm_import_memory]` attribute was also removed as LLD has a native option for controlling this. [gc]: https://reviews.llvm.org/D42511
2018-02-10fix typos in src/{bootstrap,ci,etc,lib{backtrace,core,fmt_macros}}Matthias KrĂŒger-4/+4
2018-01-30Implement extensible syscall interface for wasmDiggory Blake-65/+84
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