bors
7375f4d842
auto merge of #16038 : nham/rust/collections_partialord, r=alexcrichton
...
cc #15294
2014-07-29 07:56:41 +00:00
bors
23466b04f9
auto merge of #16034 : sfackler/rust/test-reexport-fix, r=alexcrichton
...
We previously reexported entire modules, which caused private things to
become reachable and trip the dead code and private items in public API
lints.
Closes #15912
2014-07-29 06:11:41 +00:00
bors
f653d9f9bf
auto merge of #16033 : nham/rust/hash_tuple_impl, r=alexcrichton
...
Previously the implementation of Hash was limited to tuples of up to arity 8. This increases it to tuples of up to arity 12.
Also, the implementation macro for `Hash` used to expand to something like this:
impl Hash for (a7,)
impl Hash for (a6, a7)
impl Hash for (a5, a6, a7)
...
This style is inconsistent with the implementations in core::tuple, which look like this:
impl Trait for (A,)
impl Trait for (A, B)
impl Trait for (A, B, C)
...
This is perhaps a minor point, but it does mean the documentation pages are inconsistent. Compare the tuple implementations in the documentation for [Hash](http://static.rust-lang.org/doc/master/std/hash/trait.Hash.html ) and [PartialOrd](http://static.rust-lang.org/doc/master/core/cmp/trait.PartialOrd.html )
This changes the Hash implementation to be consistent with `core::tuple`.
2014-07-29 04:26:42 +00:00
bors
9e250109f9
auto merge of #16032 : treeman/rust/doc-treecollection, r=alexcrichton
2014-07-29 02:41:41 +00:00
bors
b2bd998607
auto merge of #16027 : treeman/rust/doc-string, r=alexcrichton
2014-07-28 22:36:39 +00:00
bors
279a780804
auto merge of #15983 : brson/rust/fail, r=alexcrichton
...
A few refactorings to decrease text size and increase data size. I'm not sure about this tradeoff. Various stats below. cc @pcwalton
This reduces the code needed to pass arguments for `fail!()`, `fail!("{}", ...)`, and to a lesser extent `fail!("...")`. Still more work to be done on compiler-generated failures and the `fail!("...")` case.
do_fail_empty:
```
#[inline(never)]
fn do_fail_empty() {
fail!()
}
```
do_fail_empty before:
```
leaq 8(%rsp), %rdi
movabsq $13, %rsi
leaq "str\"str\"(1494)"(%rip), %rax
movq %rax, 8(%rsp)
movq $19, 16(%rsp)
callq _ZN6unwind31begin_unwind_no_time_to_explain20h57030457935ab6111SdE@PLT
```
do_fail_empty after:
```
leaq _ZN13do_fail_empty9file_line20h339df6a0541e837eIaaE(%rip), %rdi
callq _ZN6unwind31begin_unwind_no_time_to_explain20h33184cfdcce4dfd8QTdE@PLT
```
do_fail_fmt:
```
#[inline(never)]
fn do_fail_fmt() {
fail!("guh{}", "faw")
}
```
do_fail_fmt before:
```
... (snip lots of fmt stuff)
callq _ZN3fmt22Arguments$LT$$x27a$GT$3new20he09b3a3f473879c41paE
leaq 144(%rsp), %rsi
movabsq $23, %rdx
leaq "str\"str\"(1494)"(%rip), %rax
leaq 32(%rsp), %rcx
movq %rcx, 160(%rsp)
movq 160(%rsp), %rdi
movq %rax, 144(%rsp)
movq $19, 152(%rsp)
callq _ZN6unwind16begin_unwind_fmt20h3ebeb42f4d189b2buQdE@PLT
```
do_fail_fmt after:
```
... (snip lots of fmt stuff)
callq _ZN3fmt22Arguments$LT$$x27a$GT$3new20h42e5bb8d1711ee61OqaE
leaq _ZN11do_fail_fmt7run_fmt9file_line20h339df6a0541e837eFbaE(%rip), %rsi
leaq 32(%rsp), %rax
movq %rax, 144(%rsp)
movq 144(%rsp), %rdi
callq _ZN6unwind16begin_unwind_fmt20hfdcadc14d188656biRdE@PLT
```
File size increases.
file size before:
```
-rw-rw-r-- 1 brian brian 100501740 Jul 24 23:28 /home/brian/dev/rust2/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc-4e7c5e5c.rlib
-rwxrwxr-x 1 brian brian 21201780 Jul 24 23:27 /home/brian/dev/rust2/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc-4e7c5e5c.so
```
file size after:
```
-rw-rw-r-- 1 brian brian 101542484 Jul 25 00:34 x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc-4e7c5e5c.rlib
-rwxrwxr-x 1 brian brian 21348862 Jul 25 00:34 x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc-4e7c5e5c.so
```
Text size decreases by 52486 while data size increases by 143686.
section size before:
```
text data bss dec hex filename
12712262 5924997 368 18637627 11c633b x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc-4e7c5e5c.so
```
section size after:
```
text data bss dec hex filename
12659776 6068683 368 18728827 11dc77b /home/brian/dev/rust/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc-4e7c5e5c.so
```
I don't know if anything can be learned from these benchmarks. Looks like a wash.
std bench before:
```
test collections::hashmap::bench::find_existing ... bench: 43452 ns/iter (+/- 2423)
test collections::hashmap::bench::find_nonexisting ... bench: 42416 ns/iter (+/- 3996)
test collections::hashmap::bench::find_pop_insert ... bench: 214 ns/iter (+/- 11)
test collections::hashmap::bench::hashmap_as_queue ... bench: 123 ns/iter (+/- 6)
test collections::hashmap::bench::insert ... bench: 153 ns/iter (+/- 14)
test collections::hashmap::bench::new_drop ... bench: 547 ns/iter (+/- 259)
test collections::hashmap::bench::new_insert_drop ... bench: 682 ns/iter (+/- 366)
test io::buffered::test::bench_buffered_reader ... bench: 1046 ns/iter (+/- 86)
test io::buffered::test::bench_buffered_stream ... bench: 2156 ns/iter (+/- 801)
test io::buffered::test::bench_buffered_writer ... bench: 1057 ns/iter (+/- 75)
test io::extensions::bench::u64_from_be_bytes_4_aligned ... bench: 80 ns/iter (+/- 5)
test io::extensions::bench::u64_from_be_bytes_4_unaligned ... bench: 81 ns/iter (+/- 6)
test io::extensions::bench::u64_from_be_bytes_7_aligned ... bench: 80 ns/iter (+/- 4)
test io::extensions::bench::u64_from_be_bytes_7_unaligned ... bench: 69 ns/iter (+/- 4)
test io::extensions::bench::u64_from_be_bytes_8_aligned ... bench: 69 ns/iter (+/- 3)
test io::extensions::bench::u64_from_be_bytes_8_unaligned ... bench: 81 ns/iter (+/- 4)
test io::mem::test::bench_buf_reader ... bench: 628 ns/iter (+/- 18)
test io::mem::test::bench_buf_writer ... bench: 478 ns/iter (+/- 19)
test io::mem::test::bench_mem_reader ... bench: 712 ns/iter (+/- 44)
test io::mem::test::bench_mem_writer_001_0000 ... bench: 31 ns/iter (+/- 1)
test io::mem::test::bench_mem_writer_001_0010 ... bench: 51 ns/iter (+/- 3)
test io::mem::test::bench_mem_writer_001_0100 ... bench: 121 ns/iter (+/- 8)
test io::mem::test::bench_mem_writer_001_1000 ... bench: 774 ns/iter (+/- 47)
test io::mem::test::bench_mem_writer_100_0000 ... bench: 756 ns/iter (+/- 50)
test io::mem::test::bench_mem_writer_100_0010 ... bench: 2726 ns/iter (+/- 198)
test io::mem::test::bench_mem_writer_100_0100 ... bench: 8961 ns/iter (+/- 712)
test io::mem::test::bench_mem_writer_100_1000 ... bench: 105673 ns/iter (+/- 24711)
test num::bench::bench_pow_function ... bench: 5849 ns/iter (+/- 371)
test num::strconv::bench::f64::float_to_string ... bench: 662 ns/iter (+/- 202)
test num::strconv::bench::int::to_str_base_36 ... bench: 424 ns/iter (+/- 7)
test num::strconv::bench::int::to_str_bin ... bench: 1227 ns/iter (+/- 80)
test num::strconv::bench::int::to_str_dec ... bench: 466 ns/iter (+/- 13)
test num::strconv::bench::int::to_str_hex ... bench: 498 ns/iter (+/- 22)
test num::strconv::bench::int::to_str_oct ... bench: 502 ns/iter (+/- 229)
test num::strconv::bench::uint::to_str_base_36 ... bench: 375 ns/iter (+/- 7)
test num::strconv::bench::uint::to_str_bin ... bench: 1011 ns/iter (+/- 590)
test num::strconv::bench::uint::to_str_dec ... bench: 407 ns/iter (+/- 17)
test num::strconv::bench::uint::to_str_hex ... bench: 442 ns/iter (+/- 7)
test num::strconv::bench::uint::to_str_oct ... bench: 433 ns/iter (+/- 46)
test path::posix::bench::ends_with_path_home_dir ... bench: 167 ns/iter (+/- 10)
test path::posix::bench::ends_with_path_missmatch_jome_home ... bench: 148 ns/iter (+/- 6)
test path::posix::bench::is_ancestor_of_path_with_10_dirs ... bench: 221 ns/iter (+/- 31)
test path::posix::bench::join_abs_path_home_dir ... bench: 144 ns/iter (+/- 23)
test path::posix::bench::join_home_dir ... bench: 196 ns/iter (+/- 9)
test path::posix::bench::join_many_abs_path_home_dir ... bench: 143 ns/iter (+/- 6)
test path::posix::bench::join_many_home_dir ... bench: 195 ns/iter (+/- 8)
test path::posix::bench::path_relative_from_backward ... bench: 248 ns/iter (+/- 10)
test path::posix::bench::path_relative_from_forward ... bench: 241 ns/iter (+/- 13)
test path::posix::bench::path_relative_from_same_level ... bench: 296 ns/iter (+/- 11)
test path::posix::bench::push_abs_path_home_dir ... bench: 104 ns/iter (+/- 7)
test path::posix::bench::push_home_dir ... bench: 27311 ns/iter (+/- 2727)
test path::posix::bench::push_many_abs_path_home_dir ... bench: 109 ns/iter (+/- 5)
test path::posix::bench::push_many_home_dir ... bench: 23263 ns/iter (+/- 1726)
test rand::bench::rand_isaac ... bench: 884 ns/iter (+/- 31) = 904 MB/s
test rand::bench::rand_isaac64 ... bench: 440 ns/iter (+/- 126) = 1818 MB/s
test rand::bench::rand_shuffle_100 ... bench: 2518 ns/iter (+/- 1371)
test rand::bench::rand_std ... bench: 429 ns/iter (+/- 17) = 1864 MB/s
test rand::bench::rand_xorshift ... bench: 0 ns/iter (+/- 0) = 800000 MB/s
```
std bench after:
```
test collections::hashmap::bench::find_existing ... bench: 43635 ns/iter (+/- 4508)
test collections::hashmap::bench::find_nonexisting ... bench: 42323 ns/iter (+/- 1753)
test collections::hashmap::bench::find_pop_insert ... bench: 216 ns/iter (+/- 11)
test collections::hashmap::bench::hashmap_as_queue ... bench: 125 ns/iter (+/- 8)
test collections::hashmap::bench::insert ... bench: 153 ns/iter (+/- 63)
test collections::hashmap::bench::new_drop ... bench: 517 ns/iter (+/- 282)
test collections::hashmap::bench::new_insert_drop ... bench: 734 ns/iter (+/- 264)
test io::buffered::test::bench_buffered_reader ... bench: 1063 ns/iter (+/- 206)
test io::buffered::test::bench_buffered_stream ... bench: 2321 ns/iter (+/- 2302)
test io::buffered::test::bench_buffered_writer ... bench: 1060 ns/iter (+/- 24)
test io::extensions::bench::u64_from_be_bytes_4_aligned ... bench: 69 ns/iter (+/- 2)
test io::extensions::bench::u64_from_be_bytes_4_unaligned ... bench: 81 ns/iter (+/- 7)
test io::extensions::bench::u64_from_be_bytes_7_aligned ... bench: 70 ns/iter (+/- 5)
test io::extensions::bench::u64_from_be_bytes_7_unaligned ... bench: 69 ns/iter (+/- 5)
test io::extensions::bench::u64_from_be_bytes_8_aligned ... bench: 80 ns/iter (+/- 6)
test io::extensions::bench::u64_from_be_bytes_8_unaligned ... bench: 81 ns/iter (+/- 5)
test io::mem::test::bench_buf_reader ... bench: 663 ns/iter (+/- 44)
test io::mem::test::bench_buf_writer ... bench: 489 ns/iter (+/- 17)
test io::mem::test::bench_mem_reader ... bench: 700 ns/iter (+/- 23)
test io::mem::test::bench_mem_writer_001_0000 ... bench: 31 ns/iter (+/- 3)
test io::mem::test::bench_mem_writer_001_0010 ... bench: 49 ns/iter (+/- 5)
test io::mem::test::bench_mem_writer_001_0100 ... bench: 112 ns/iter (+/- 6)
test io::mem::test::bench_mem_writer_001_1000 ... bench: 765 ns/iter (+/- 59)
test io::mem::test::bench_mem_writer_100_0000 ... bench: 727 ns/iter (+/- 54)
test io::mem::test::bench_mem_writer_100_0010 ... bench: 2586 ns/iter (+/- 215)
test io::mem::test::bench_mem_writer_100_0100 ... bench: 8846 ns/iter (+/- 439)
test io::mem::test::bench_mem_writer_100_1000 ... bench: 105747 ns/iter (+/- 17443)
test num::bench::bench_pow_function ... bench: 5844 ns/iter (+/- 421)
test num::strconv::bench::f64::float_to_string ... bench: 669 ns/iter (+/- 571)
test num::strconv::bench::int::to_str_base_36 ... bench: 417 ns/iter (+/- 24)
test num::strconv::bench::int::to_str_bin ... bench: 1216 ns/iter (+/- 36)
test num::strconv::bench::int::to_str_dec ... bench: 466 ns/iter (+/- 24)
test num::strconv::bench::int::to_str_hex ... bench: 492 ns/iter (+/- 8)
test num::strconv::bench::int::to_str_oct ... bench: 496 ns/iter (+/- 295)
test num::strconv::bench::uint::to_str_base_36 ... bench: 366 ns/iter (+/- 8)
test num::strconv::bench::uint::to_str_bin ... bench: 1005 ns/iter (+/- 69)
test num::strconv::bench::uint::to_str_dec ... bench: 396 ns/iter (+/- 20)
test num::strconv::bench::uint::to_str_hex ... bench: 435 ns/iter (+/- 4)
test num::strconv::bench::uint::to_str_oct ... bench: 436 ns/iter (+/- 451)
test path::posix::bench::ends_with_path_home_dir ... bench: 171 ns/iter (+/- 6)
test path::posix::bench::ends_with_path_missmatch_jome_home ... bench: 152 ns/iter (+/- 6)
test path::posix::bench::is_ancestor_of_path_with_10_dirs ... bench: 215 ns/iter (+/- 8)
test path::posix::bench::join_abs_path_home_dir ... bench: 143 ns/iter (+/- 6)
test path::posix::bench::join_home_dir ... bench: 192 ns/iter (+/- 29)
test path::posix::bench::join_many_abs_path_home_dir ... bench: 144 ns/iter (+/- 9)
test path::posix::bench::join_many_home_dir ... bench: 194 ns/iter (+/- 19)
test path::posix::bench::path_relative_from_backward ... bench: 254 ns/iter (+/- 15)
test path::posix::bench::path_relative_from_forward ... bench: 244 ns/iter (+/- 17)
test path::posix::bench::path_relative_from_same_level ... bench: 293 ns/iter (+/- 27)
test path::posix::bench::push_abs_path_home_dir ... bench: 108 ns/iter (+/- 5)
test path::posix::bench::push_home_dir ... bench: 32292 ns/iter (+/- 4361)
test path::posix::bench::push_many_abs_path_home_dir ... bench: 108 ns/iter (+/- 6)
test path::posix::bench::push_many_home_dir ... bench: 20305 ns/iter (+/- 1331)
test rand::bench::rand_isaac ... bench: 888 ns/iter (+/- 35) = 900 MB/s
test rand::bench::rand_isaac64 ... bench: 439 ns/iter (+/- 17) = 1822 MB/s
test rand::bench::rand_shuffle_100 ... bench: 2582 ns/iter (+/- 1001)
test rand::bench::rand_std ... bench: 431 ns/iter (+/- 93) = 1856 MB/s
test rand::bench::rand_xorshift ... bench: 0 ns/iter (+/- 0) = 800000 MB/s
```
2014-07-28 20:51:33 +00:00
Brian Anderson
f49f1575aa
Use correct conventions for static
2014-07-28 13:40:55 -07:00
bors
8d2e7161ee
auto merge of #16025 : cmr/rust/plugin-fields, r=alexcrichton
...
Some minor changes to the compiler to expose this information. Very
inconvenient since struct fields aren't an item.
2014-07-28 19:06:34 +00:00
Jonas Hietala
3f56846460
doc: Method examples for String
...
Reword comments on unsafe methods regarding UTF-8.
2014-07-28 17:03:12 +02:00
Corey Richardson
8876ce44c5
rustc: encode is_sugared_doc on ast::Attribute
2014-07-28 01:03:38 -07:00
Corey Richardson
fc08779185
rustdoc: remove extraneous .move_iter().collect()s
...
The impl of Clean for Vec obsoleted these long, long ago.
2014-07-28 01:03:38 -07:00
Corey Richardson
531a3c680d
rustdoc: show struct field docs when inlined
...
Some minor changes to the compiler to expose this information. Very
inconvenient since struct fields aren't an item. Adds (yet another) table to
metadata.
Closes #15739
2014-07-28 01:03:38 -07:00
nham
8ebd58cedf
Implement Ord for TrieMap/TrieSet/SmallIntMap/Bitv/BitvSet
2014-07-28 02:53:44 -04:00
nham
935c88ce1c
Implement PartialOrd for Bitv and BitvSet
2014-07-28 00:28:49 -04:00
nham
220f8f6dcb
Implement PartialOrd for SmallIntMap
2014-07-28 00:00:29 -04:00
nham
16acc10bf9
Implement PartialOrd for TrieMap and TrieSet
2014-07-27 23:51:28 -04:00
bors
f4ef36ee42
auto merge of #16031 : arielb1/rust/remove_unneeded_fixme, r=kballard
...
The issue was fixed a month ago - remove the workaround.
2014-07-27 22:41:15 +00:00
bors
79e9f14abf
auto merge of #16026 : ruud-v-a/rust/patch-1, r=steveklabnik
2014-07-27 20:51:16 +00:00
bors
70972832b3
auto merge of #16020 : nham/rust/ringbuf_hash_ord, r=alexcrichton
...
cc #15294
2014-07-27 19:06:16 +00:00
Steven Fackler
97721fa719
Make test expansion induce less reachability
...
We previously reexported entire modules, which caused private things to
become reachable and trip the dead code and private items in public API
lints.
Closes #15912
2014-07-27 12:02:19 -07:00
nham
e7b41caba8
Implement Hash for tuples of up to arity 12. Also change the style to be consistent with core::tuple
2014-07-27 14:41:33 -04:00
Jonas Hietala
58d3f109f8
doc: Small rewording.
2014-07-27 20:02:06 +02:00
bors
769dae0a00
auto merge of #16030 : treeman/rust/doc-hashset-fix, r=sfackler
...
Not sure how this could slip by.
2014-07-27 17:06:17 +00:00
nham
9fa4424b71
Hash the length of the RingBuf before hashing elements
2014-07-27 12:37:32 -04:00
Jonas Hietala
53c639184c
doc: Main example for TreeMap.
2014-07-27 18:19:04 +02:00
Jonas Hietala
8c34a97b37
doc: TreeMap methods with examples.
...
Small corrections for TreeSet examples.
2014-07-27 17:44:07 +02:00
Jonas Hietala
034ef079ef
doc: TreeSet methods and main example.
2014-07-27 17:04:44 +02:00
Ariel Ben-Yehuda
c6b992a53f
Remove an unneeded FIXME in coherence.rs
...
Also, let f; f = ...; is just wrong.
2014-07-27 18:01:19 +03:00
Jonas Hietala
28d543a40f
doc: Correctly onclose code blocks in HashSet
2014-07-27 16:05:53 +02:00
bors
e0d10bb69a
auto merge of #16016 : tomjakubowski/rust/rustdoc-fix-15490, r=alexcrichton
...
Previously, private and `#[doc(hidden)]` struct fields appeared in the
search index despite being hidden from the struct's documentation.
Fix #15490
2014-07-27 09:46:15 +00:00
Ruud van Asseldonk
d7993153a4
docs: Fix typo in container guide.
2014-07-27 10:14:44 +02:00
bors
ad4fa46f5b
auto merge of #16001 : Gankro/rust/rawstrings-proof, r=pnkfelix
...
Stumbled across this and thought it would be cool to prove. I've never used Ogden's Lemma before, but I'm pretty sure I used it right. The pumping lemma definitely doesn't seem sufficient for the job. In particular, when using the pumping lemma, you can always just pump one of the quotes, and it's fine. Ogden's Lemma lets you effectively force the pumper to use certain characters in the string.
@cmr
2014-07-27 08:01:14 +00:00
bors
d114ddac03
auto merge of #15963 : nham/rust/moar_15294, r=alexcrichton
...
Implements PartialEq/Eq/Clone/Hash/FromIterator/Extendable for SmallIntMap and Clone/Show for TrieMap/TrieSet. cc #15294
2014-07-27 06:16:14 +00:00
Alexis Beingessner
6444b5e82b
adding proof of context-sensitivy of raw string literals
2014-07-27 02:13:19 -04:00
bors
2de3fad72c
auto merge of #16021 : brson/rust/mb, r=pcwalton
...
No longer does anything.
2014-07-27 04:21:14 +00:00
Brian Anderson
aa48654740
Remove managed_box gate from tests
...
No longer does anything.
2014-07-26 21:05:29 -07:00
nham
6361577808
Implement PartialOrd for RingBuf
2014-07-26 23:18:56 -04:00
nham
1cfa6569f9
Implement Hash for RingBuf
2014-07-26 22:33:47 -04:00
bors
3d7a7f645f
auto merge of #16006 : TeXitoi/rust/relicense-shootout-k-nucleotide, r=brson
...
Everyone agreed except @thestinger. As @thestinger contribution on this file is trivial,
we can relicense it.
Related to #14248 , close #15330
@brson OK?
2014-07-27 00:31:13 +00:00
Tom Jakubowski
c05cfab7f9
rustdoc: Keep hidden struct fields out of search
...
Previously, private and `#[doc(hidden)]` struct fields appeared in the
search index despite being hidden from the struct's documentation.
Fix #15490
2014-07-26 16:13:01 -07:00
nham
fadbc0b88b
Manually implement Hash for SmallIntMap
2014-07-26 18:47:33 -04:00
bors
32e521ffab
auto merge of #15941 : treeman/rust/doc-lru, r=alexcrichton
2014-07-26 22:46:13 +00:00
bors
e6e544f261
auto merge of #15936 : alexcrichton/rust/stability, r=brson
...
This commit applies stability attributes to the contents of these modules,
summarized here:
* The `unit` and `bool` modules have become #[unstable] as they are purely meant
for documentation purposes and are candidates for removal.
* The `ty` module has been deprecated, and the inner `Unsafe` type has been
renamed to `UnsafeCell` and moved to the `cell` module. The `marker1` field
has been removed as the compiler now always infers `UnsafeCell` to be
invariant. The `new` method i stable, but the `value` field, `get` and
`unwrap` methods are all unstable.
* The `tuple` module has its name as stable, the naming of the `TupleN` traits
as stable while the methods are all #[unstable]. The other impls in the module
have appropriate stability for the corresponding trait.
* The `arc` module has received the exact same treatment as the `rc` module
previously did.
* The `any` module has its name as stable. The `Any` trait is also stable, with
a new private supertrait which now contains the `get_type_id` method. This is
to make the method a private implementation detail rather than a public-facing
detail.
The two extension traits in the module are marked #[unstable] as they will not
be necessary with DST. The `is` method is #[stable], the as_{mut,ref} methods
have been renamed to downcast_{mut,ref} and are #[unstable].
The extension trait `BoxAny` has been clarified as to why it is unstable as it
will not be necessary with DST.
This is a breaking change because the `marker1` field was removed from the
`UnsafeCell` type. To deal with this change, you can simply delete the field and
only specify the value of the `data` field in static initializers.
[breaking-change]
2014-07-26 21:01:15 +00:00
Alex Crichton
e5da6a71a6
std: Stabilize unit, bool, ty, tuple, arc, any
...
This commit applies stability attributes to the contents of these modules,
summarized here:
* The `unit` and `bool` modules have become #[unstable] as they are purely meant
for documentation purposes and are candidates for removal.
* The `ty` module has been deprecated, and the inner `Unsafe` type has been
renamed to `UnsafeCell` and moved to the `cell` module. The `marker1` field
has been removed as the compiler now always infers `UnsafeCell` to be
invariant. The `new` method i stable, but the `value` field, `get` and
`unwrap` methods are all unstable.
* The `tuple` module has its name as stable, the naming of the `TupleN` traits
as stable while the methods are all #[unstable]. The other impls in the module
have appropriate stability for the corresponding trait.
* The `arc` module has received the exact same treatment as the `rc` module
previously did.
* The `any` module has its name as stable. The `Any` trait is also stable, with
a new private supertrait which now contains the `get_type_id` method. This is
to make the method a private implementation detail rather than a public-facing
detail.
The two extension traits in the module are marked #[unstable] as they will not
be necessary with DST. The `is` method is #[stable], the as_{mut,ref} methods
have been renamed to downcast_{mut,ref} and are #[unstable].
The extension trait `BoxAny` has been clarified as to why it is unstable as it
will not be necessary with DST.
This is a breaking change because the `marker1` field was removed from the
`UnsafeCell` type. To deal with this change, you can simply delete the field and
only specify the value of the `data` field in static initializers.
[breaking-change]
2014-07-26 13:12:20 -07:00
bors
ecce58c6fd
auto merge of #15762 : nham/rust/ringbuf_docs, r=alexcrichton
...
This adds examples for get(), get_mut(), swap(), iter() and mut_iter()
2014-07-26 19:16:16 +00:00
nham
ebe8097128
Add examples for RingBuf methods get, get_mut, iter, mut_iter
2014-07-26 13:42:55 -04:00
bors
d4dfb7d84c
auto merge of #16000 : emkay/rust/lifetimes-guide-typo, r=alexcrichton
2014-07-26 17:31:16 +00:00
nham
3f1c37e96d
Small fixes for tests
2014-07-26 12:06:52 -04:00
bors
7aa407958b
auto merge of #15998 : luqmana/rust/nmnnbd, r=thestinger
...
LLVM recently added a new attribute, dereferenceable: http://reviews.llvm.org/D4449
>This patch adds a dereferencable attribute. In some sense, this is a companion to the nonnull attribute, but specifies that the pointer is known to be dereferencable in the same sense as a pointer generated by alloca is known to be dereferencable.
With rust, everywhere that we previously marked `nonnull` we can actually mark as `dereferenceable` (which implies nonnull) since we know the size. That is, except for one case: when generating calls for TyVisitor. It seems like we haven't substituted the self type (so we have `ty_param`) and just treat it as an opaque pointer so I just left that bit as nonnull.
With this, LLVM can for example hoist a load out of a loop where it previously couldn't:
```Rust
pub fn baz(c: &uint, n: uint) -> uint {
let mut res = 0;
for i in range(0, n) {
if i > 0 {
res += *c * i;
}
}
res
}
```
Before:
```llvm
define i64 @baz(i64* noalias nocapture nonnull readonly, i64) unnamed_addr #0 {
entry-block:
br label %for_loopback.outer
for_loopback.outer: ; preds = %then-block-33-, %entry-block
%.ph = phi i64 [ %.lcssa, %then-block-33- ], [ 0, %entry-block ]
%res.0.ph = phi i64 [ %8, %then-block-33- ], [ 0, %entry-block ]
br label %for_loopback
for_exit: ; preds = %for_loopback
%res.0.ph.lcssa = phi i64 [ %res.0.ph, %for_loopback ]
ret i64 %res.0.ph.lcssa
for_loopback: ; preds = %for_loopback.outer, %for_body
%2 = phi i64 [ %4, %for_body ], [ %.ph, %for_loopback.outer ]
%3 = icmp ult i64 %2, %1
br i1 %3, label %for_body, label %for_exit
for_body: ; preds = %for_loopback
%4 = add i64 %2, 1
%5 = icmp eq i64 %2, 0
br i1 %5, label %for_loopback, label %then-block-33-
then-block-33-: ; preds = %for_body
%.lcssa = phi i64 [ %4, %for_body ]
%.lcssa15 = phi i64 [ %2, %for_body ]
%6 = load i64* %0, align 8 ; <------- this load
%7 = mul i64 %6, %.lcssa15
%8 = add i64 %7, %res.0.ph
br label %for_loopback.outer
}
```
After:
```llvm
define i64 @baz(i64* noalias nocapture readonly dereferenceable(8), i64) unnamed_addr #0 {
entry-block:
%2 = load i64* %0, align 8 ; <------- load once instead
br label %for_loopback.outer
for_loopback.outer: ; preds = %then-block-33-, %entry-block
%.ph = phi i64 [ %.lcssa, %then-block-33- ], [ 0, %entry-block ]
%res.0.ph = phi i64 [ %8, %then-block-33- ], [ 0, %entry-block ]
br label %for_loopback
for_exit: ; preds = %for_loopback
%res.0.ph.lcssa = phi i64 [ %res.0.ph, %for_loopback ]
ret i64 %res.0.ph.lcssa
for_loopback: ; preds = %for_loopback.outer, %for_body
%3 = phi i64 [ %5, %for_body ], [ %.ph, %for_loopback.outer ]
%4 = icmp ult i64 %3, %1
br i1 %4, label %for_body, label %for_exit
for_body: ; preds = %for_loopback
%5 = add i64 %3, 1
%6 = icmp eq i64 %3, 0
br i1 %6, label %for_loopback, label %then-block-33-
then-block-33-: ; preds = %for_body
%.lcssa = phi i64 [ %5, %for_body ]
%.lcssa15 = phi i64 [ %3, %for_body ]
%7 = mul i64 %2, %.lcssa15
%8 = add i64 %7, %res.0.ph
br label %for_loopback.outer
}
```
2014-07-26 15:46:18 +00:00
bors
50c62b4667
auto merge of #15996 : nham/rust/smallintmap_not_hashmap, r=sanxiyn
...
SmallIntMap doesn't involve hashing?
2014-07-26 14:01:22 +00:00