Commit graph

319 commits

Author SHA1 Message Date
Phoebe Bell
ca2fae8edb Elaborate on SAFETY comments 2020-01-16 18:32:21 -08:00
Phoebe Bell
a93e99cae7 Fix typo "gurantees -> guarantees" 2020-01-16 18:27:08 -08:00
Phoebe Bell
19fdc6e091 Document unsafe blocks in core::{cell, str, sync} 2020-01-16 18:26:14 -08:00
Mark Rousskov
a06baa56b9 Format the world 2019-12-22 17:42:47 -05:00
Mark Rousskov
82184440ec Propagate cfg bootstrap 2019-12-18 12:16:19 -05:00
Oliver Scherer
5e17e39881 Require stable/unstable annotations for the constness of all stable functions with a const modifier 2019-12-13 11:27:02 +01:00
Ralf Jung
861698a493 make things ugly 2019-11-13 09:31:08 +01:00
Ralf Jung
5b5ae01340 expand docs 2019-11-13 09:11:09 +01:00
Ralf Jung
19ebe2fb6d clarify why we can do the ptr cast 2019-11-13 09:07:52 +01:00
Ralf Jung
aba385abbd
Trailing full stop
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-11-13 09:05:57 +01:00
Ralf Jung
1b8b2ee6f9 add raw ptr variant of UnsafeCell::get 2019-11-09 12:34:29 +01:00
Mazdak Farrokhzad
379b19c17f
Rollup merge of #63793 - oli-obk:🧹, r=dtolnay
Have tidy ensure that we document all `unsafe` blocks in libcore

cc @rust-lang/libs

I documented a few and added ignore flags on the other files. We can incrementally document the files, but won't regress any files this way.
2019-11-07 14:27:20 +01:00
Oliver Scherer
02f9167f94 Have tidy ensure that we document all unsafe blocks in libcore 2019-11-06 11:04:42 +01:00
Oleg Nosov
6a5931921c
Fixed libcore/cell.rs example 2019-11-06 01:03:31 +03:00
Oleg Nosov
45f281d461
Reverted PhantomData in LinkedList, fixed PhantomData markers in Rc and Arc 2019-11-05 23:36:54 +03:00
Shotaro Yamada
375469149c Reorder methods of Cell
To make `new` method appear first in documentation.
2019-10-03 15:24:00 +09:00
bors
0e9b465d72 Auto merge of #62748 - luca-barbieri:optimize-refcell-borrow, r=RalfJung
Optimize RefCell read borrowing

Instead of doing two comparisons we can do only one with a bit of cleverness.

LLVM currently can't do this optimization itself on x86-64.
2019-07-27 09:32:44 +00:00
Luca Barbieri
44c165074b fix comment 2019-07-21 12:50:16 +02:00
Luca Barbieri
c7928f5af0 Expand comment on BorrowRef::new 2019-07-21 11:49:36 +02:00
Luca Barbieri
f0b3c02d81 Optimize RefCell read borrowing
Instead of doing two comparisons we can do only one with a bit of
cleverness.

LLVM currently can't do this optimization itself on x86-64.
2019-07-17 13:25:34 +02:00
Ralf Jung
d30b36efc5 state also in the intro that UnsafeCell has no effect on &mut 2019-07-16 14:47:51 +02:00
Dodo
4e1d467700 add spaces in front of trait requirements 2019-07-13 17:15:16 +02:00
Simon Sapin
2ce9440368 Stabilize Cell::from_mut and as_slice_of_cells
FCP: https://github.com/rust-lang/rust/issues/43038#issuecomment-499900463
2019-06-07 16:25:41 +02:00
Alexander Regueiro
35585c499f Aggregation of drive-by cosmetic changes. 2019-06-05 21:09:26 +01:00
Mazdak Farrokhzad
74b359373c
Rollup merge of #60850 - SimonSapin:unguarded, r=alexcrichton
Stabilize RefCell::try_borrow_unguarded

Servo has been using this since https://github.com/servo/servo/pull/23196 to add a runtime check to some unsafe code, as discussed in PR https://github.com/rust-lang/rust/pull/59211. Stabilizing would help do more of the same in libraries that also have users on Stable.
2019-05-30 10:52:51 +02:00
Brent Kerby
d3c73ddec9 typo 2019-05-23 19:36:06 -06:00
Brent Kerby
e641fb47c4 Simplify RefCell minimum_spanning_tree example 2019-05-21 21:52:21 -06:00
Simon Sapin
9fd4d48b5e Stabilize RefCell::try_borrow_unguarded
Servo has been using this since https://github.com/servo/servo/pull/23196 to add a runtime check to some unsafe code, as discussed in PR https://github.com/rust-lang/rust/pull/59211. Stabilizing would help do more of the same in libraries that also have users on Stable.
2019-05-15 11:54:16 +02:00
Mazdak Farrokhzad
dbfbadeac4 libcore: deny more... 2019-04-19 01:37:12 +02:00
Taiki Endo
360432f1e8 libcore => 2018 2019-04-18 14:47:35 +09:00
bors
850912704e Auto merge of #59211 - nox:refcell-borrow-state, r=KodrAus
Introduce RefCell::try_borrow_unguarded

*Come sit next to the fireplace with me, this is going to be a long story.*

So, you may already be aware that Servo has weird design constraints that forces us developers working on it to do weird things. The thing that interests us today is that we do layout on a separate thread with its own thread pool to do some things in parallel, whereas the data it uses comes from the script thread, which implements the entire DOM and related pieces, with `!Sync` data types such as `RefCell<T>`.

The invariant we maintain is that script does not do anything ever with the DOM data as long as layout is doing its job. That's all nice and all, but one thing we don't ensure is that we don't actually know if script was currently mutably borrowing some `RefCell<T>` prior to starting layout, which may lead to aliasing mutable memory and obviously undefined behaviour.

This PR reinstates `RefCell::borrow_state` so that [this method](https://github.com/servo/servo/blob/master/components/script/dom/bindings/cell.rs#L23-L30) can make use of it and return `None` if the cell was mutably borrowed.

Cc @SimonSapin
2019-04-11 12:49:49 +00:00
Mazdak Farrokhzad
9d198db339
Rollup merge of #59581 - jmcomets:stabilize-refcell_replace_swap, r=Centril
Stabilize refcell_replace_swap feature

Please be kind, this is my first time contributing. 😄

I noticed #43570 only needs stabilizing (and I need it for a side project I'm working on), so I followed the [guide](https://rust-lang.github.io/rustc-guide/stabilization_guide.html#stabilization-pr) to move things forward.

I'm happy to amend things if needed, let me know!
2019-03-31 19:19:53 +02:00
Jean-Marie Comets
c789a539a2 refcell_replace_swap: remove feature gate & obsolete documentation item 2019-03-31 14:50:06 +02:00
Jean-Marie Comets
70fa616a23 Stabilize refcell_replace_swap feature, closes #43570 2019-03-31 10:54:14 +02:00
Fabian Drinck
8fb0549151 Fix doc tests 2019-03-30 22:37:02 +01:00
Anthony Ramine
38811a1d31 Introduce RefCell::try_borrow_unguarded
This replaces RefCell::borrow_state to something that encodes the use
case of Servo better.
2019-03-19 12:24:38 +01:00
Joshua Liebow-Feeser
de4be2cd85 Stabilize refcell_map_split feature
- Closes #51476
2019-03-18 15:06:34 -07:00
Anthony Ramine
a9388c28c2 Tweak documentation of RefCell::borrow_state 2019-03-16 12:16:25 +01:00
Anthony Ramine
fab71dd046 Revert "Deprecate std::cell::RefCell::borrow_state"
This reverts commit dc2d5058e9.
2019-03-15 15:01:48 +01:00
Anthony Ramine
1c365cedf8 Revert "Remove RefCell::borrow_state"
This reverts commit 313aab8fbe.
2019-03-15 15:01:48 +01:00
Alexander Regueiro
99ed06eb88 libs: doc comments 2019-02-10 23:57:25 +00:00
Alexander Regueiro
b87363e763 tests: doc comments 2019-02-10 23:42:32 +00:00
Mark Rousskov
2a663555dd Remove licenses 2018-12-25 21:08:33 -07:00
Alexander Regueiro
ee89c088b0 Various minor/cosmetic improvements to code 2018-12-07 23:53:34 +00:00
Ralf Jung
25d46f3091 add comment explaining why what we do is legal 2018-11-17 10:20:28 +01:00
Ralf Jung
41434e001b avoid shared ref in UnsafeCell::get 2018-11-16 22:17:26 +01:00
Mazdak Farrokhzad
e15c62d61f revert making internal APIs const fn. 2018-11-10 01:10:07 +01:00
Mazdak Farrokhzad
5b89877dda constify parts of libcore. 2018-11-10 01:07:32 +01:00
Geoffry Song
6df57a7d68 Slight copy-editing for std::cell::Cell docs
Hopefully this is a bit more precise and also more correct English.
2018-10-26 12:09:41 -07:00
Scott McMurray
0a3bd9b6ab Use impl_header_lifetime_elision in libcore 2018-09-29 21:33:35 -07:00