Commit Graph

42480 Commits

Author SHA1 Message Date
Sean McArthur
8e491ef019 collections: change bounds of SliceConcatExt implementations to use Borrow instead of AsRef 2015-05-08 17:13:54 -07:00
Sean McArthur
093ebd5a62 collections: impl AsRef<[u8]> for String 2015-05-08 17:13:54 -07:00
Sean McArthur
aaa3641754 core: impl AsRef<[u8]> for str 2015-05-08 17:13:54 -07:00
Johannes Oertel
a29dc05c93 Document panic behaviour of BitVec::split_off 2015-05-09 00:41:38 +02:00
bors
d3958c6bc3 Auto merge of #25217 - alexcrichton:fix-distcheck, r=brson
This fixes the `distcheck` target and nightly builds.
2015-05-08 22:29:05 +00:00
Brian Anderson
9b3d315fff std: Update crate docs
Attempted to organize them in a way more relevant to what newbies
would be interested in hearing.
2015-05-08 15:15:03 -07:00
Ulrik Sverdrup
ff4e061049 rustdoc: Link associated items in search index to trait
This is related to isssue #22442 and solves it partly.

This solves the links of associated types and constants, so that they
link to the trait page.
2015-05-09 00:03:42 +02:00
Guillaume Gomez
715f7c3cd2 Add a precision for references 2015-05-08 23:54:24 +02:00
bors
b210aea1d4 Auto merge of #25218 - Manishearth:rollup, r=Manishearth
- Successful merges: #24864, #25140, #25179, #25181, #25190, #25194, #25195, #25198, #25203, #25210, #25211, #25215
- Failed merges: #25200
2015-05-08 20:39:08 +00:00
Brian Anderson
51a1e83cb0 doc: Remove mention of 30 minute intro 2015-05-08 13:19:02 -07:00
Manish Goregaokar
55437b4a57 Rollup merge of #25215 - acgtyrant:patch-2, r=alexcrichton
Fix wrong radius valve from 0.0 to 1.0 as above
2015-05-09 00:37:45 +05:30
Manish Goregaokar
dd37250674 Rollup merge of #25211 - huonw:libc, r=cmr
Many many many people ask in #rust about this libraries, having an
explanatory reason will probably help a lot.
2015-05-09 00:37:45 +05:30
Manish Goregaokar
a3a3d4efad Rollup merge of #25210 - rick68:patch-1, r=alexcrichton
fixed a doc mistake in libcore/marker.mk
2015-05-09 00:37:44 +05:30
Manish Goregaokar
8a6bb9f84e Rollup merge of #25203 - sharnik:fix-sort-authors, r=alexcrichton
Properly sorted, Ł goes between L and M.
2015-05-09 00:37:44 +05:30
Manish Goregaokar
f7980a3aab Rollup merge of #25198 - carols10cents:update-configure-osx, r=alexcrichton
Tiny tiny nitpick that I just noticed after getting a new laptop ( 🍺 + 💻 = 👼 ) and thus needing to ./configure anew on Yosemite. 

It's weird to see a message that says you're on 10.9 if you're on 10.10, in a oh-i-wonder-what-else-is-wrong sort of sense-- easy fix with a `>=` since `gcc --version` on 10.10 with the newest xcode still says it's clang.

❤️
2015-05-09 00:37:43 +05:30
Manish Goregaokar
4b4cb86248 Rollup merge of #25195 - simonkern:master, r=steveklabnik
I deleted one unneccessary 'the' and added the href for [bindings]
2015-05-09 00:37:43 +05:30
Manish Goregaokar
655042052c Rollup merge of #25194 - tshepang:assert-convention, r=steveklabnik
… compared
2015-05-09 00:37:43 +05:30
Manish Goregaokar
638deb3bc3 Rollup merge of #25190 - nham:E0046_E0054, r=alexcrichton
cc #24407
2015-05-09 00:37:43 +05:30
Manish Goregaokar
b02270963c Rollup merge of #25181 - steveklabnik:fix_curlies, r=alexcrichton 2015-05-09 00:37:43 +05:30
Manish Goregaokar
61c1cf7f74 Rollup merge of #25179 - bengesoff:patch-1, r=steveklabnik
Following paragraph says "we've used `*` which..." but code says "rand=\"0.3.0\""
2015-05-09 00:37:42 +05:30
Manish Goregaokar
4c0f7fd6fc Rollup merge of #25140 - kevinmehall:mips, r=steveklabnik
Building with `--target=mipsel-unknown-linux-gnu` currently results in the following errors, fixed by this PR:

```
rustc: x86_64-unknown-linux-gnu/stage2/lib/rustlib/mipsel-unknown-linux-gnu/lib/libstd
/vol/rust/src/libstd/os/linux/raw.rs:76:21: 76:28 error: use of undeclared type name `c_ulong`
/vol/rust/src/libstd/os/linux/raw.rs:76         pub st_dev: c_ulong,
                                                            ^~~~~~~
/vol/rust/src/libstd/os/linux/raw.rs:83:22: 83:29 error: use of undeclared type name `c_ulong`
/vol/rust/src/libstd/os/linux/raw.rs:83         pub st_rdev: c_ulong,
                                                             ^~~~~~~
/vol/rust/src/libstd/sys/common/net2.rs:210:52: 210:70 error: unresolved name `libc::TCP_KEEPIDLE`
/vol/rust/src/libstd/sys/common/net2.rs:210         setsockopt(&self.inner, libc::IPPROTO_TCP, libc::TCP_KEEPIDLE,
```
2015-05-09 00:37:42 +05:30
Manish Goregaokar
8b8cb34747 Rollup merge of #24864 - astraw:patch-1, r=steveklabnik
If you have 0 references (`&T`) to a resource, presumably, you could have a mutable reference (`&mut T`). So this only start to make sense at having 1 reference to a resource.
2015-05-09 00:37:42 +05:30
Barosl Lee
9b91ccffb0 Fix the tests broken by replacing task with thread 2015-05-09 04:04:08 +09:00
bors
7132092ce6 Auto merge of #25187 - alexcrichton:mem-forget-safe, r=brson
This commit is an implementation of [RFC 1066][rfc] where the conclusion was
that leaking a value is a safe operation in Rust code, so updating the signature
of this function follows suit.

[rfc]: https://github.com/rust-lang/rfcs/blob/master/text/1066-safe-mem-forget.md

Closes #25186
2015-05-08 18:21:51 +00:00
Richo Healey
01fc026440 mk: Log that valgrind tests are disabled 2015-05-08 10:49:02 -07:00
Barosl Lee
857b70f3e5 Please the make tidy 2015-05-09 02:24:18 +09:00
Barosl Lee
1e1e6e046a Fix invalid references due to the automated string substitution 2015-05-09 02:24:18 +09:00
Barosl Lee
ff332b6467 Squeeze the last bits of tasks in documentation in favor of thread
An automated script was run against the `.rs` and `.md` files,
subsituting every occurrence of `task` with `thread`. In the `.rs`
files, only the texts in the comment blocks were affected.
2015-05-09 02:24:18 +09:00
Alex Crichton
00204e8a83 mk: Add a missing folder to the dist directory
This fixes the `distcheck` target and nightly builds.
2015-05-08 09:45:16 -07:00
Isaac Ge
962816bc29 Update method-syntax.md
Fix wrong radius valve from 0.0 to 1.0 as above
2015-05-08 22:39:25 +08:00
Isaac Ge
544362c9b8 Update method-syntax.md
make the definition of static methods explicit
2015-05-08 22:30:00 +08:00
Felix S. Klock II
0fa1c1662f Fallout to compile-fail tests.
This change is worrisome to me, both because:

1. I thought the rules in RFC 599 imply that the `Box<Trait>` without `'static`
   in the first case would expand to the second case, but their behaviors
   here differ.  And,

2. The explicit handling of `'static` should mean `dropck` has no application
   here and thus we should have seen no change to the expected error messages.
   Nonetheless, the error messages changed.
2015-05-08 16:08:59 +02:00
Felix S. Klock II
d8d4bb4ce3 fallout to run-pass tests. 2015-05-08 15:39:25 +02:00
Felix S. Klock II
ccf12853d8 Regression tests for Issue 25199 (dropck and Box<Trait + 'a>). 2015-05-08 15:22:25 +02:00
Huon Wilson
091ba42d77 Add a reason to the libc & rand instability.
Many many many people ask in #rust about this libraries, having an
explanatory reason will probably help a lot.
2015-05-08 23:20:53 +10:00
Felix S. Klock II
b5b5a17758 dropck: must assume Box<Trait + 'a> has a destructor of interest.
Implements this (previously overlooked) note from [RFC 769]:

> (Note: When encountering a D of the form `Box<Trait+'b>`, we
> conservatively assume that such a type has a Drop implementation
> parametric in 'b.)

Fix #25199.

[breaking-change]

The breakage here falls into both obvious and non-obvious cases.

The obvious case: if you were relying on the unsoundness this exposes
(namely being able to reference dead storage from a destructor, by
doing it via a boxed trait object bounded by the lifetime of the dead
storage), then this change disallows that.

The non-obvious cases: The way dropck works, it causes lifetimes to be
extended to longer extents than they covered before. I.e.  lifetimes
that are attached as trait-bounds may become longer than they were
previously.

* This includes lifetimes that are only *implicitly* attached as
  trait-bounds (due to [RFC 599]). So you may have code that was
  e.g. taking a parameter of type `&'a Box<Trait>` (which expands to
  `&'a Box<Trait+'a>`), that now may need to be assigned type `&'a
  Box<Trait+'static>` to ensure that `'a` is not inadvertantly
  inferred to a region that is actually too long.  (See earlier commit
  in this PR for an example of this.)

[RFC 769]: https://github.com/rust-lang/rfcs/blob/master/text/0769-sound-generic-drop.md#the-drop-check-rule

[RFC 599]: https://github.com/rust-lang/rfcs/blob/master/text/0599-default-object-bound.md
2015-05-08 15:06:16 +02:00
Felix S. Klock II
ee06263f92 Fallout from fixing Issue 25199.
There are two interesting kinds of breakage illustrated here:

1. `Box<Trait>` in many contexts is treated as `Box<Trait + 'static>`,
   due to [RFC 599]. However, in a type like `&'a Box<Trait>`, the
   `Box<Trait>` type will be expanded to `Box<Trait + 'a>`, again due
   to [RFC 599]. This, combined with the fix to Issue 25199, leads to
   a borrowck problem due the combination of this function signature
   (in src/libstd/net/parser.rs):

   ```rust
   fn read_or<T>(&mut self, parsers: &mut [Box<FnMut(&mut Parser) -> Option<T>>]) -> Option<T>;
   ```

   with this call site (again in src/libstd/net/parser.rs):

   ```rust
   fn read_ip_addr(&mut self) -> Option<IpAddr> {
       let ipv4_addr = |p: &mut Parser| p.read_ipv4_addr().map(|v4| IpAddr::V4(v4));
       let ipv6_addr = |p: &mut Parser| p.read_ipv6_addr().map(|v6| IpAddr::V6(v6));
       self.read_or(&mut [Box::new(ipv4_addr), Box::new(ipv6_addr)])
   }
   ```

   yielding borrowck errors like:

   ```
   parser.rs:265:27: 265:69 error: borrowed value does not live long enough
   parser.rs:265         self.read_or(&mut [Box::new(ipv4_addr), Box::new(ipv6_addr)])
                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   ```

   (full log at: https://gist.github.com/pnkfelix/e2e80f1a71580f5d3103 )

   The issue here is perhaps subtle: the `parsers` argument is
   inferred to be taking a slice of boxed objects with the implicit
   lifetime bound attached to the `self` parameter to `read_or`.

   Meanwhile, the fix to Issue 25199 (added in a forth-coming commit)
   is forcing us to assume that each boxed object may have a
   destructor that could refer to state of that lifetime, and
   *therefore* that inferred lifetime is required to outlive the boxed
   object itself.

   In this case, the relevant boxed object here is not going to make
   any such references; I believe it is just an artifact of how the
   expression was built that it is not assigned type:

     `Box<FnMut(&mut Parser) -> Option<T> + 'static>`.

   (i.e., mucking with the expression is probably one way to fix this
   problem).

   But the other way to fix it, adopted here, is to change the
   `read_or` method type to force make the (presumably-intended)
   `'static` bound explicit on the boxed `FnMut` object.

   (Note: this is still just the *first* example of breakage.)

2. In `macro_rules.rs`, the `TTMacroExpander` trait defines a method
   with signature:

   ```rust
   fn expand<'cx>(&self, cx: &'cx mut ExtCtxt, ...) -> Box<MacResult+'cx>;
   ```

   taking a `&'cx mut ExtCtxt` as an argument and returning a
   `Box<MacResult'cx>`.

   The fix to Issue 25199 (added in aforementioned forth-coming
   commit) assumes that a value of type `Box<MacResult+'cx>` may, in
   its destructor, refer to a reference of lifetime `'cx`; thus the
   `'cx` lifetime is forced to outlive the returned value.

   Meanwhile, within `expand.rs`, the old code was doing:

   ```rust
   match expander.expand(fld.cx, ...).make_pat() { ... => immutable borrow of fld.cx ... }
   ```

   The problem is that the `'cx` lifetime, inferred for the
   `expander.expand` call, has now been extended so that it has to
   outlive the temporary R-value returned by `expanded.expand`.  But
   call is also reborrowing `fld.cx` *mutably*, which means that this
   reborrow must end before any immutable borrow of `fld.cx`; but
   there is one of those within the match body. (Note that the
   temporary R-values for the input expression to `match` all live as
   long as the whole `match` expression itself (see Issue #3511 and PR
   #11585).

   To address this, I moved the construction of the pat value into its
   own `let`-statement, so that the `Box<MacResult>` will only live
   for as long as the initializing expression for the `let`-statement,
   and thus allow the subsequent immutable borrow within the `match`.

[RFC 599]: https://github.com/rust-lang/rfcs/blob/master/text/0599-default-object-bound.md
2015-05-08 14:48:26 +02:00
Wei-Ming Yang
a4ec372a1e fixed a mistake 2015-05-08 20:44:11 +08:00
Wojciech Ogrodowczyk
c65a1838cb Fix sort in AUTHORS.txt
Properly sorted, Ł goes between L and M.
2015-05-08 07:38:18 +02:00
Andrew Straw
391d14802e fix logic when describing kinds of borrows
If you have 0 references (`&T`) to a resource, presumably, you could
have a mutable reference (`&mut T`). So this only start to make sense
at having 1 reference to a resource.
2015-05-08 06:12:59 +02:00
bors
cf76e63745 Auto merge of #25136 - alexcrichton:drop-the-two, r=aturon
* Remove the 2-suffix from some modules
* Remove some unused files
* Remove double-boxing for `ReentrantMutex`
2015-05-08 01:32:59 +00:00
Alex Crichton
dd59b1fb4c std: Mark mem::forget as a safe function
This commit is an implementation of [RFC 1066][rfc] where the conclusion was
that leaking a value is a safe operation in Rust code, so updating the signature
of this function follows suit.

[rfc]: https://github.com/rust-lang/rfcs/blob/master/text/1066-safe-mem-forget.md

Closes #25186
2015-05-07 17:25:04 -07:00
Simon Kern
60c0e75e74 fixed href for structs 2015-05-08 01:46:26 +02:00
Simon Kern
3e76f2838a v2 gets a copy of the pointer, not a copy of the data 2015-05-08 01:43:18 +02:00
bors
b402c43f08 Auto merge of #25123 - arielb1:self-inhibiting-error, r=nikomatsakis
Fix #25076.

r? @nikomatsakis
2015-05-07 23:40:55 +00:00
Carol Nichols
468cb052b8 Expand OS X versions referenced in configure message
10.10 is out, so it's weird to see a message that says you're on 10.9.
Change the message to be >=10.9.
2015-05-07 19:35:58 -04:00
Simon Kern
84c7dfa48c deleted unnecessary the 2015-05-08 00:59:45 +02:00
Simon Kern
2213898c19 two minor fixes 2015-05-08 00:42:10 +02:00
Tshepang Lekhonkhobe
7ef46e0dde doc: the prevailing convention is to use assert_eq! when 2 values are compared 2015-05-08 00:14:00 +02:00
bors
5ae026e892 Auto merge of #25157 - alexcrichton:remove-vec-add, r=aturon
Ideally this trait implementation would be unstable, requiring crates to opt-in
if they would like the functionality, but that's not currently how stability
works so the implementation needs to be removed entirely.

This may come back at a future date, but for now the conservative option is to
remove it.

[breaking-change]
2015-05-07 21:45:11 +00:00