Skip to content

Commit c94d479

Browse files
committed
die 'managed'
1 parent 84bd6bb commit c94d479

File tree

1 file changed

+14
-34
lines changed

1 file changed

+14
-34
lines changed

src/doc/reference.md

Lines changed: 14 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1144,9 +1144,9 @@ standard library.
11441144
Rust's type system is a conservative approximation of the dynamic safety
11451145
requirements, so in some cases there is a performance cost to using safe code.
11461146
For example, a doubly-linked list is not a tree structure and can only be
1147-
represented with managed or reference-counted pointers in safe code. By using
1148-
`unsafe` blocks to represent the reverse links as raw pointers, it can be
1149-
implemented with only owned pointers.
1147+
represented with reference-counted pointers in safe code. By using `unsafe`
1148+
blocks to represent the reverse links as raw pointers, it can be implemented
1149+
with only boxes.
11501150

11511151
##### Behavior considered unsafe
11521152

@@ -2216,8 +2216,6 @@ These types help drive the compiler's analysis
22162216

22172217
* `begin_unwind`
22182218
: ___Needs filling in___
2219-
* `managed_bound`
2220-
: This type implements "managed"
22212219
* `no_copy_bound`
22222220
: This type does not implement "copy", even if eligible
22232221
* `no_send_bound`
@@ -2242,8 +2240,6 @@ These types help drive the compiler's analysis
22422240
: ___Needs filling in___
22432241
* `exchange_heap`
22442242
: ___Needs filling in___
2245-
* `managed_heap`
2246-
: ___Needs filling in___
22472243
* `iterator`
22482244
: ___Needs filling in___
22492245
* `contravariant_lifetime`
@@ -2472,13 +2468,6 @@ The currently implemented features of the reference compiler are:
24722468
likely to change slightly in the future, so they are
24732469
currently hidden behind this feature.
24742470

2475-
* `managed_boxes` - Usage of `@` is gated due to many
2476-
planned changes to this feature. In the past, this has
2477-
meant "a GC pointer", but the current implementation uses
2478-
reference counting and will likely change drastically over
2479-
time. Additionally, the `@` syntax will no longer be used
2480-
to create GC boxes.
2481-
24822471
* `non_ascii_idents` - The compiler supports the use of non-ascii identifiers,
24832472
but the implementation is a little rough around the
24842473
edges, so this can be seen as an experimental feature
@@ -3949,33 +3938,24 @@ A task's _stack_ consists of activation frames automatically allocated on entry
39493938
to each function as the task executes. A stack allocation is reclaimed when
39503939
control leaves the frame containing it.
39513940

3952-
The _heap_ is a general term that describes two separate sets of boxes: managed
3953-
boxes — which may be subject to garbage collection — and boxes. The
3954-
lifetime of an allocation in the heap depends on the lifetime of the box values
3955-
pointing to it. Since box values may themselves be passed in and out of frames,
3956-
or stored in the heap, heap allocations may outlive the frame they are
3957-
allocated within.
3941+
The _heap_ is a general term that describes boxes. The lifetime of an
3942+
allocation in the heap depends on the lifetime of the box values pointing to
3943+
it. Since box values may themselves be passed in and out of frames, or stored
3944+
in the heap, heap allocations may outlive the frame they are allocated within.
39583945

39593946
### Memory ownership
39603947

39613948
A task owns all memory it can *safely* reach through local variables, as well
3962-
as managed, boxes and references.
3949+
as boxes and references.
39633950

39643951
When a task sends a value that has the `Send` trait to another task, it loses
39653952
ownership of the value sent and can no longer refer to it. This is statically
39663953
guaranteed by the combined use of "move semantics", and the compiler-checked
39673954
_meaning_ of the `Send` trait: it is only instantiated for (transitively)
3968-
sendable kinds of data constructor and pointers, never including managed boxes
3969-
or references.
3955+
sendable kinds of data constructor and pointers, never including references.
39703956

39713957
When a stack frame is exited, its local allocations are all released, and its
3972-
references to boxes (both managed and owned) are dropped.
3973-
3974-
A managed box may (in the case of a recursive, mutable managed type) be cyclic;
3975-
in this case the release of memory inside the managed structure may be deferred
3976-
until task-local garbage collection can reclaim it. Code can ensure no such
3977-
delayed deallocation occurs by restricting itself to owned boxes and similar
3978-
unmanaged kinds of data.
3958+
references to boxes are dropped.
39793959

39803960
When a task finishes, its stack is necessarily empty and it therefore has no
39813961
references to any boxes; the remainder of its heap is immediately freed.
@@ -4052,10 +4032,10 @@ races on memory are prohibited by the type system.
40524032

40534033
When you wish to send data between tasks, the values are restricted to the
40544034
[`Send` type-kind](#type-kinds). Restricting communication interfaces to this
4055-
kind ensures that no references or managed pointers move between tasks. Thus
4056-
access to an entire data structure can be mediated through its owning "root"
4057-
value; no further locking or copying is required to avoid data races within the
4058-
substructure of such a value.
4035+
kind ensures that no references move between tasks. Thus access to an entire
4036+
data structure can be mediated through its owning "root" value; no further
4037+
locking or copying is required to avoid data races within the substructure of
4038+
such a value.
40594039

40604040
### Task lifecycle
40614041

0 commit comments

Comments
 (0)