Steve Klabnik [Tue, 9 Jun 2015 21:24:43 +0000 (17:24 -0400)]
Rollup merge of #26125 - nsimplex:master, r=steveklabnik
The text claimed 'any borrow must last for a _smaller_ scope than the
owner', however the accurate way of describing the comparison is
inclusive (i.e., 'less than or equal to' vs. 'less than').
bors [Tue, 9 Jun 2015 20:00:32 +0000 (20:00 +0000)]
Auto merge of #26039 - SimonSapin:case-mapping, r=alexcrichton
* Add “complex” mappings to `char::to_lowercase` and `char::to_uppercase`, making them yield sometimes more than on `char`: #25800. `str::to_lowercase` and `str::to_uppercase` are affected as well.
* Add `char::to_titlecase`, since it’s the same algorithm (just different data). However this does **not** add `str::to_titlecase`, as that would require UAX#29 Unicode Text Segmentation which we decided not to include in of `std`: https://github.com/rust-lang/rfcs/pull/1054 I made `char::to_titlecase` immediately `#[stable]`, since it’s so similar to `char::to_uppercase` that’s already stable. Let me know if it should be `#[unstable]` for a while.
* Add a special case for upper-case Sigma in word-final position in `str::to_lowercase`: #26035. This is the only language-independent conditional mapping currently in `SpecialCasing.txt`.
* Stabilize `str::to_lowercase` and `str::to_uppercase`. The `&self -> String` on `str` signature seems straightforward enough, and the only relevant issue I’ve found is #24536 about naming. But `char` already has stable methods with the same name, and deprecating them for a rename doesn’t seem worth it.
bors [Tue, 9 Jun 2015 18:26:26 +0000 (18:26 +0000)]
Auto merge of #25995 - alexcrichton:msvc-md, r=brson
On MSVC there are two ways that the CRT can be linked, either statically or
dynamically. Each object file produced by the compiler is compiled against
msvcrt (a dll) or libcmt (a static library). When the linker is dealing with
more than one object file, it requires that all object files link to the same
CRT, or else the linker will spit out some errors.
For now, compile code with `-MD` as it seems to appear more often in C libraries
so we'll stick with the same trend.
simplex [Tue, 9 Jun 2015 16:08:16 +0000 (13:08 -0300)]
Semantic accuracy in borrow scope rules.
The text claimed 'any borrow must last for a _smaller_ scope than the
owner', however the accurate way of describing the comparison is
inclusive (i.e., 'less than or equal to' vs. 'less than').
bors [Tue, 9 Jun 2015 09:12:09 +0000 (09:12 +0000)]
Auto merge of #26068 - bluss:bench-sigfigs, r=huonw
test: Display benchmark results with thousands separators
Example display:
```
running 9 tests
test a ... bench: 0 ns/iter (+/- 0)
test b ... bench: 52 ns/iter (+/- 0)
test c ... bench: 88 ns/iter (+/- 0)
test d ... bench: 618 ns/iter (+/- 111)
test e ... bench: 5,933 ns/iter (+/- 87)
test f ... bench: 59,280 ns/iter (+/- 1,052)
test g ... bench: 588,672 ns/iter (+/- 3,381)
test h ... bench: 5,894,227 ns/iter (+/- 303,489)
test i ... bench: 59,112,382 ns/iter (+/- 1,500,110)
```
bors [Tue, 9 Jun 2015 04:28:57 +0000 (04:28 +0000)]
Auto merge of #25627 - murarth:execution-engine-fix, r=nrc
* Removes `RustJITMemoryManager` from public API.
This was really sort of an implementation detail to begin with.
* `__morestack` is linked to C++ wrapper code and this pointer
is used when resolving the symbol for `ExecutionEngine` code.
* `__morestack_addr` is also resolved for `ExecutionEngine` code.
This function is sometimes referenced in LLVM-generated code,
but was not able to be resolved on Mac OS systems.
* Added Windows support to `ExecutionEngine` API.
* Added a test for basic `ExecutionEngine` functionality.
Ulrik Sverdrup [Sun, 7 Jun 2015 17:23:56 +0000 (19:23 +0200)]
test: Display benchmark results with thousands separators
Example display:
```
running 9 tests
test a ... bench: 0 ns/iter (+/- 0)
test b ... bench: 52 ns/iter (+/- 0)
test c ... bench: 88 ns/iter (+/- 0)
test d ... bench: 618 ns/iter (+/- 111)
test e ... bench: 5,933 ns/iter (+/- 87)
test f ... bench: 59,280 ns/iter (+/- 1,052)
test g ... bench: 588,672 ns/iter (+/- 3,381)
test h ... bench: 5,894,227 ns/iter (+/- 303,489)
test i ... bench: 59,112,382 ns/iter (+/- 1,500,110)
```
Rollup merge of #26073 - chuckSMASH:trpl-5-4-comments, r=steveklabnik
For a user following the path of reading Chapter 5: Syntax & Symantics
prior to Chapter 4: Learn Rust, this will be the first time they have
encountered executable tests inside documentation comments.
The test will fail because the `add_one` function is not defined in
the context of the doctest. This might not be the optimal place to
introduce and explain the `/// #` notation but I think it is important
that this snippet pass as a test when `rustdoc --test` is run against
it.
Rollup merge of #25909 - frankamp:patch-1, r=steveklabnik
The doc indicates that you can replace 'before' with 'after' showing the use of try!. The two examples should be equivalent, but they are not.
In the File::create we were inducing a panic before in case of error, not propagating. It is important for newbies (like myself) to understand that try! propagates failures, while unwrap can induce a panic.
The other alternative is to make the 'before' File::create also manually handle Err like the other calls. Either way it would be consistent.
Rollup merge of #25898 - azerupi:patch-3, r=steveklabnik
As mentioned in #25893 the copy trait is not very well explained for beginners. There is no clear mention that all primitive types implement the copy trait and there are not a lot of examples.
With this change I try to make it more visible and understandable for new users.
I myself have struggled with this, see [my question on stackoverflow](http://stackoverflow.com/questions/30540419/why-are-booleans-copyable-even-though-the-documentation-doesnt-indicate-that). And I want to make it more transparent for others.
I filed issue #25893 but I thought that I could give it a shot myself to relieve some of the work from the devs :)
If it is not well written or there are some changes to be made before it can be merged, let me know.
Murarth [Tue, 19 May 2015 23:00:59 +0000 (16:00 -0700)]
Changes to LLVM `ExecutionEngine` wrapper
* Removes `RustJITMemoryManager` from public API.
This was really sort of an implementation detail to begin with.
* `__morestack` is linked to C++ wrapper code and this pointer
is used when resolving the symbol for `ExecutionEngine` code.
* `__morestack_addr` is also resolved for `ExecutionEngine` code.
This function is sometimes referenced in LLVM-generated code,
but was not able to be resolved on Mac OS systems.
* Added Windows support to `ExecutionEngine` API.
* Added a test for basic `ExecutionEngine` functionality.
bors [Mon, 8 Jun 2015 20:52:33 +0000 (20:52 +0000)]
Auto merge of #26077 - SimonSapin:patch-6, r=alexcrichton
With the latter is provided by the `From` conversion trait, the former is now completely redundant. Their code is identical. Let’s deprecate now and plan to remove in the next cycle. (It’s `#[unstable]`.)
bors [Mon, 8 Jun 2015 19:18:31 +0000 (19:18 +0000)]
Auto merge of #26060 - funkill:fix_rustbook, r=alexcrichton
Case:
Russian translate of trpl use this structure:
```bash
rust_book_ru $ tree
.
├── README.md
├── src
│ ├── academic-research.md
...
└── SUMMARY.md
```
Links in table of content generated relative to the root dir, for example if i'm on the page `http://kgv.github.io/rust_book_ru/src/academic-research.html` link to README.html will be `http://kgv.github.io/rust_book_ru/src/README.html`, not `http://kgv.github.io/rust_book_ru/README.html`.
Now we use old version of rustbook.
Sorry for my english
bors [Mon, 8 Jun 2015 16:09:56 +0000 (16:09 +0000)]
Auto merge of #25989 - jooert:implement_rfc839, r=Gankro
I had to use `impl<'a, V: Copy> Extend<(usize, &'a V)> for VecMap<V>` instead of `impl<'a, V: Copy> Extend<(&'a usize, &'a V)> for VecMap<V>` as that's what is needed for doing
```rust
let mut a = VecMap::new();
let b = VecMap::new();
b.insert(1, "foo");
bors [Mon, 8 Jun 2015 03:22:02 +0000 (03:22 +0000)]
Auto merge of #26018 - nrc:codegen, r=@nikomatsakis
Closes #19826
r? @nikomatsakis
There is still some work to do until parallel codegen is perfect - we don't pass make check due to missing the symbol for registering a macro. But we do bootstrap with codegen_units=4 and pass make check without codegen_units, so I think it should land.
David Voit [Sat, 23 May 2015 21:33:37 +0000 (23:33 +0200)]
rustc_trans: 'assume' intrinsic is only available on LLVM >= 3.6
Based on the patch from Luca Bruno.
Instead of creating an empty C function in the rt, this version creates an shim
noop function using llvm. This function is declared as internal, and the
unsupported assume intrinsic and the shim gets completly removed by the
optimizer.
Luca Bruno [Sat, 24 Jan 2015 11:00:35 +0000 (12:00 +0100)]
rustc_trans: don't hardcode llvm version for conditional intrinsics
This commit introduce a third parameter for compatible_ifn!, as new
intrinsics are being added in recent LLVM releases and there is no
need to hardcode a specific case.
bors [Mon, 8 Jun 2015 01:48:59 +0000 (01:48 +0000)]
Auto merge of #26087 - fitzgen:improve-suggestion-hueristics, r=Aatch
This makes the maximum edit distance of typo suggestions a function of the typo'd name's length. FWIW, clang uses this same hueristic, and I've found their suggestions to be better than rustc's. Without something like this, you end up with suggestions that aren't related at all when there are short variable names.
See also https://github.com/rust-lang/rust/issues/20028#issuecomment-109767159
Chuck Bassett [Sun, 7 Jun 2015 19:06:58 +0000 (15:06 -0400)]
Update doctest in comments.md
For a user following the path of reading Chapter 5: Syntax & Symantics
prior to Chapter 4: Learn Rust, this will be the first time they have
encountered executable tests inside documentation comments.
The test will fail because the `add_one` function is not defined in
the context of the doctest. This might not be the optimal place to
introduce and explain the `/// #` notation but I think it is important
that this snippet pass as a test when `rustdoc --test` is run against
it if it is going to be shown.
bors [Sat, 6 Jun 2015 21:33:43 +0000 (21:33 +0000)]
Auto merge of #26047 - chuckSMASH:patch-1, r=alexcrichton
The sensible default used here for the version number in the
auto-generated Cargo.toml is 0.1.0, not 0.0.1 (at least as of cargo
0.2.0-nightly efb482d).