Commit Graph

133 Commits

Author SHA1 Message Date
Simon Sapin
c408b78633 Move the Borrow and BorrowMut traits to libcore. 2015-08-22 13:58:39 +02:00
Alexis Beingessner
4c8d75fd9b don't do deprecations yet 2015-08-19 15:52:12 -07:00
Alexis Beingessner
635f7360b6 Rework Rc for FCP of #27718
* Add `Rc::would_unwrap(&Self) -> bool` to introspect whether try_unwrap would succeed,
  because it's destructive (unlike get_mut).
* Move `rc.downgrade()` to `Rc::downgrade(&Self)` per conventions.
* Deprecate `Rc::weak_count` and `Rc::strong_count` for questionable utility.
* Deprecate `Rc::is_unique` for questionable semantics (there are two kinds of
  uniqueness with Weak pointers in play).
* Rename `rc.make_unique()` to `Rc::make_mut(&mut Self)` per conventions, to
  avoid uniqueness terminology, and to clarify the relation to `Rc::get_mut`.
2015-08-19 15:52:12 -07:00
Alex Crichton
6734c933b5 alloc: Add issues for all unstable features 2015-08-15 18:09:16 -07:00
Alex Crichton
8d90d3f368 Remove all unstable deprecated functionality
This commit removes all unstable and deprecated functions in the standard
library. A release was recently cut (1.3) which makes this a good time for some
spring cleaning of the deprecated functions.
2015-08-12 14:55:17 -07:00
Alex Crichton
938099a7eb Register new snapshots
* Lots of core prelude imports removed
* Makefile support for MSVC env vars and Rust crates removed
* Makefile support for morestack removed
2015-08-11 15:11:13 -07:00
Alex Crichton
5cccf3cd25 syntax: Implement #![no_core]
This commit is an implementation of [RFC 1184][rfc] which tweaks the behavior of
the `#![no_std]` attribute and adds a new `#![no_core]` attribute. The
`#![no_std]` attribute now injects `extern crate core` at the top of the crate
as well as the libcore prelude into all modules (in the same manner as the
standard library's prelude). The `#![no_core]` attribute disables both std and
core injection.

[rfc]: https://github.com/rust-lang/rfcs/pull/1184
2015-08-03 17:23:01 -07:00
bors
db2af71d59 Auto merge of #27174 - Gankro:rc-sat, r=alexcrichton
See https://internals.rust-lang.org/t/rc-is-unsafe-mostly-on-32-bit-targets-due-to-overflow/2120 for detailed discussion of this problem.
2015-07-30 05:54:55 +00:00
Alexis Beingessner
1ffe3453cb make Rc mem::forget safe 2015-07-29 17:05:40 -07:00
Steve Klabnik
ba5fcb726f Show appropriate feature flags in docs 2015-07-27 12:28:13 -04:00
Remi Rampin
8bf4651e2c Implement CoerceUnsized for rc::Weak
Fixes #26704
2015-07-01 15:51:17 -04:00
Huon Wilson
225b116829 Make align_of behave like min_align_of.
This removes a footgun, since it is a reasonable assumption to make that
pointers to `T` will be aligned to `align_of::<T>()`. This also matches
the behaviour of C/C++. `min_align_of` is now deprecated.

Closes #21611.
2015-06-24 17:00:43 -07:00
Alex Crichton
b4a2823cd6 More test fixes and fallout of stability changes 2015-06-17 09:07:17 -07:00
Alex Crichton
aa931e9c6f std: Move free-functions to associated functions
This commit moves the free functions in the `rc`, `arc`, and `boxed` modules to
associated functions on their respective types, following the recent trend
towards this pattern. The previous free functions are all left in-place with
`#[deprecated]` pointers towards the new locations.

This commit also deprecates `arc::get_mut` and `Arc::make_unique` with no
replacement as they are racy in the face of weak pointers.
2015-06-17 09:07:17 -07:00
Alex Crichton
ce1a965cf5 Fallout in tests and docs from feature renamings 2015-06-17 09:07:16 -07:00
Alex Crichton
c44f5399e4 alloc: Split apart the global alloc feature 2015-06-17 09:06:59 -07:00
Alex Crichton
9d6ffbdaa8 Revert "Added AsRef implementations for Arc and Rc"
This reverts commit 7f3ae0aa26.
2015-06-09 16:47:45 -07:00
Markus Westerlind
7f3ae0aa26 Added AsRef implementations for Arc and Rc 2015-06-04 14:35:04 +02:00
Eduard Burtescu
6e8e4f847c Remove #[cfg(stage0)] items. 2015-05-27 11:19:02 +03:00
Steve Klabnik
65ead717a7 she -> they in Dining Philosophers
Also, when checking for common gendered words elsewhere, I found one 'he', moved to 'they' as well.

https://github.com/rust-lang/rust/pull/25640#issuecomment-104304643
2015-05-21 11:53:45 -04:00
bors
720735b943 Auto merge of #25588 - bluss:doc-string-from, r=alexcrichton
Use stable code in doc examples (libcollections)

Main task is to change from String::from_str to String::from in examples for String
(the latter constructor is stable). While I'm at it, also remove redundant feature flags,
fix some other instances of unstable code in examples (in examples for stable
methods), and remove some use of usize in examples too.
2015-05-20 06:03:58 +00:00
Ariel Ben-Yehuda
d9b9f4ee7d fix conflicts 2015-05-19 17:42:14 +03:00
Ulrik Sverdrup
4e4374b7de collections: Avoid unstable code in examples for String
Prefer String::from over from_str; String::from_str is unstable while
String::from is stable. Promote the latter by using it in examples.

Simply migrating unstable function to the closest alternative.
2015-05-19 03:33:17 +02:00
P1start
fa28642de9 Allow ?Sized types in Rc’s impls of {Partial,}{Ord,Eq} and Borrow 2015-05-16 11:01:52 +12:00
Nick Cameron
b799cd83cc Remove SNAP comments 2015-05-13 16:37:17 +12:00
Nick Cameron
5d4cce6cec Rebasing 2015-05-13 14:35:53 +12:00
Nick Cameron
03d4d5f80e Fix a bunch of bugs
* segfault due to not copying drop flag when coercing
* fat pointer casts
* segfault due to not checking drop flag properly
* debuginfo for DST smart pointers
* unreachable code in drop glue
2015-05-13 14:19:51 +12:00
Nick Cameron
7d953538d1 Make Rc DST-compatible 2015-05-13 14:19:51 +12:00
Nick Cameron
843db01bd9 eddyb's changes for DST coercions
+ lots of rebasing
2015-05-13 14:19:51 +12:00
Tamir Duberstein
69abc12b00 Register new snapshots 2015-04-28 17:23:45 -07:00
Corey Farwell
68989918d2 Remove doc-comment default::Default imports
In 8f5b5f94dc, `default::Default` was
added to the prelude, so these imports are no longer necessary.
2015-04-22 09:42:36 -04:00
Richo Healey
a329a61b9b alloc: impl fmt::Pointer for Rc, Arc and Box
Closes #24091
2015-04-07 22:50:36 -07:00
Dzmitry Malyshau
bc1aef3e7b Removed explicit lifetimes for get_mut. Fixed the doc test. 2015-04-04 19:01:48 -04:00
Alex Crichton
df49ea6a83 rollup merge of #23743: Adenilson/addInfoArcClone01
Adding more information about the behavior of Arc/Rc when you perform a clone() call.
2015-03-27 10:07:47 -07:00
Adenilson Cavalcanti
7d3bf47323 Adding more information about the behavior of Arc/Rc
when you perform a clone() call.
2015-03-26 12:05:21 -07:00
Felix S. Klock II
3902190ac4 Switch drop-flag to u8 to allow special tags to instrument state.
Refactored code so that the drop-flag values for initialized
(`DTOR_NEEDED`) versus dropped (`DTOR_DONE`) are given explicit names.

Add `mem::dropped()` (which with `DTOR_DONE == 0` is semantically the
same as `mem::zeroed`, but the point is that it abstracts away from
the particular choice of value for `DTOR_DONE`).

Filling-drop needs to use something other than `ptr::read_and_zero`,
so I added such a function: `ptr::read_and_drop`.  But, libraries
should not use it if they can otherwise avoid it.

Fixes to tests to accommodate filling-drop.
2015-03-26 14:08:54 +01:00
Alex Crichton
29b54387b8 Test fixes and rebase conflicts, round 2 2015-03-23 17:10:19 -07:00
Brian Anderson
e9019101a8 Add #![feature] attributes to doctests 2015-03-23 14:40:26 -07:00
Alex Crichton
fccf5a0005 Register new snapshots 2015-03-18 16:32:32 -07:00
Jorge Aparicio
8afcaabee3 impl<T> *const T, impl<T> *mut T 2015-03-16 21:57:42 -05:00
Steve Klabnik
64ab111b53 Example -> Examples
This brings comments in line with https://github.com/rust-lang/rfcs/blob/master/text/0505-api-comment-conventions.md#using-markdown
2015-03-11 21:11:40 -04:00
Felix S. Klock II
270f0eef73 Add : Box<_> or ::Box<_> type annotations to various places.
This is the kind of change that one is expected to need to make to
accommodate overloaded-`box`.

----

Note that this is not *all* of the changes necessary to accommodate
Issue 22181.  It is merely the subset of those cases where there was
already a let-binding in place that made it easy to add the necesasry
type ascription.

(For unnamed intermediate `Box` values, one must go down a different
route; `Box::new` is the option that maximizes portability, but has
potential inefficiency depending on whether the call is inlined.)

----

There is one place worth note, `run-pass/coerce-match.rs`, where I
used an ugly form of `Box<_>` type ascription where I would have
preferred to use `Box::new` to accommodate overloaded-`box`.  I
deliberately did not use `Box::new` here, because that is already done
in coerce-match-calls.rs.

----

Precursor for overloaded-`box` and placement-`in`; see Issue 22181.
2015-03-03 20:29:01 +01:00
Manish Goregaokar
8eb655b1e6 import boxed for alloc/rc.rs (fixup #22696) 2015-02-23 11:43:59 -08:00
Stepan Koltsov
26d9f0ab1a Use boxed functions instead of transmute
... to convert between Box and raw pointers. E. g. use

```
let b: Box<Foo> = Box::from_raw(p);
```

instead of

```
let b: Box<Foo> = mem::transmute(p);
```

Patch also changes closure release code in `src/libstd/sys/unix/thread.rs`
when `pthread_create` failed. Raw pointer was transmuted to box of
`FnOnce()` instead of `Thunk`. This code was probably never executed,
because `pthread_create` rarely fails in practice.
2015-02-23 02:59:17 +03:00
Alex Crichton
6686f7aa47 Register new snapshots 2015-02-20 22:17:17 -08:00
Alex Crichton
2cdbd288ac rollup merge of #22210: aturon/stab-final-borrow
Conflicts:
	src/libcollections/btree/map.rs
	src/libcollections/str.rs
	src/libcollections/vec.rs
	src/libcore/borrow.rs
	src/libcore/hash/mod.rs
	src/libstd/collections/hash/map.rs
	src/libstd/collections/hash/set.rs
2015-02-18 15:34:48 -08:00
Aaron Turon
a99e698628 Stabilize std::borrow
This commit stabilizes `std::borrow`, making the following modifications
to catch up the API with language changes:

* It renames `BorrowFrom` to `Borrow`, as was originally intended (but
  blocked for technical reasons), and reorders the parameters
  accordingly.

* It moves the type parameter of `ToOwned` to an associated type. This
  is somewhat less flexible, in that each borrowed type must have a
  unique owned type, but leads to a significant simplification for
  `Cow`. Flexibility can be regained by using newtyped slices, which is
  advisable for other reasons anyway.

* It removes the owned type parameter from `Cow`, making the type much
  less verbose.

* Deprecates the `is_owned` and `is_borrowed` predicates in favor of
  direct matching.

The above API changes are relatively minor; the basic functionality
remains the same, and essentially the whole module is now marked
`#[stable]`.

[breaking-change]
2015-02-18 15:23:58 -08:00
Alex Crichton
f83e23ad7c std: Stabilize the hash module
This commit is an implementation of [RFC 823][rfc] which is another pass over
the `std::hash` module for stabilization. The contents of the module were not
entirely marked stable, but some portions which remained quite similar to the
previous incarnation are now marked `#[stable]`. Specifically:

[rfc]: https://github.com/rust-lang/rfcs/blob/master/text/0823-hash-simplification.md

* `std::hash` is now stable (the name)
* `Hash` is now stable
* `Hash::hash` is now stable
* `Hasher` is now stable
* `SipHasher` is now stable
* `SipHasher::new` and `new_with_keys` are now stable
* `Hasher for SipHasher` is now stable
* Many `Hash` implementations are now stable

All other portions of the `hash` module remain `#[unstable]` as they are less
commonly used and were recently redesigned.

This commit is a breaking change due to the modifications to the `std::hash` API
and more details can be found on the [RFC][rfc].

Closes #22467
[breaking-change]
2015-02-18 08:26:20 -08:00
Alex Crichton
47f91a9484 Register new snapshots 2015-02-17 22:04:31 -08:00
Artem
42055e37c5 Rc itself isn't immutable.
An "immutable reference-counted pointer" is confusing, one might think that the `Rc` itself is immutable which isn't the case.
2015-02-17 22:15:46 +03:00