You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: peps/pep-0805.rst
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,7 +27,7 @@ PEP 703, Making the Global Interpreter Lock Optional in CPython, and PEP 554, Mu
27
27
Multiple interpreters are both safe and support parallelism, but they are difficult to use and sharing objects
28
28
between multiple interpreters without copying is impossible.
29
29
PEP 703 supports parallel execution and sharing, but is unsafe as it allows race conditions.
30
-
Race conditions allow dangerous and hard to find bugs. In the most extreme example, Therac-25 [1]_, a race condtion bug resulted in several fatalities. The trouble with race conditions is not that the bugs they introduce are necessarily worse than other bugs,
30
+
Race conditions allow dangerous and hard to find bugs. In the most extreme example, Therac-25 [1]_, a race condition bug resulted in several fatalities. The trouble with race conditions is not that the bugs they introduce are necessarily worse than other bugs,
31
31
but that they can be very hard to detect and may easily slip through testing.
32
32
33
33
Parallelism, without strong support from the language and runtime, is extremely difficult to get right:
@@ -70,7 +70,7 @@ to one thread (the top-left quadrant), or that it is protected by a mutual exclu
70
70
The PEP also proposes changes to CPython to prevent unsafe execution when mutable objects are shared.
71
71
Finally, the PEP provides a generalization of the GIL to allow incrementally moving away from the GIL.
72
72
73
-
This PEP is inspired by ideas from Ocaml, specifically Data Freedom à la Mode [2]_, and the Pyrona project [3]_.
73
+
This PEP is inspired by ideas from OCaml, specifically Data Freedom à la Mode [2]_, and the Pyrona project [3]_.
74
74
Many of the necessary technologies, such as biased and deferred reference counting, have been developed for PEP 703.
75
75
76
76
Specification
@@ -100,7 +100,7 @@ Views, iterators and other objects that depend on the internal state of other mu
100
100
those objects. For example, a ``listiterator`` of a *local* ``list`` will be *local*, but a ``listiterator`` of a *protected*
101
101
``list`` will be *protected*. Views and iterators of *immutable* (including STW mutable) objects will be *local* when created.
102
102
103
-
All objects that not inherently immutable (like tuples or strings) will be created as *local*.
103
+
All objects that are not inherently immutable (like tuples or strings) will be created as *local*.
104
104
These *local* objects can later be made *immutable* or *protected*.
105
105
106
106
Dictionaries and lists will support the ability to be made stop-the-world mutable on a per-object basis.
@@ -156,7 +156,7 @@ The ``__freeze__()`` will be added to all pure Python class as well as most stan
156
156
``list``, ``set`` and ``dict`` classes will gain a ``__freeze__()`` method.
157
157
For immutable objects like ``tuple``, ``__freeze__()`` will be supported, but will have no effect.
158
158
159
-
Note that freezing an object is a shallow operation; ``x.__freeze__()` only freezes ``x`` and not any of the objects
159
+
Note that freezing an object is a shallow operation; ``x.__freeze__()`` only freezes ``x`` and not any of the objects
160
160
that ``x`` refers to.
161
161
162
162
The ``__freeze__`` method can be used to create classes of immutable objects, by calling ``__freeze__`` at the
0 commit comments