mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
add a changelog and update the document for ORC (#20415)
* add a changelog and update the document for ORC * hone * back * Apply suggestions from code review Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com> * Update doc/mm.md Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com> * Update doc/mm.md Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com> Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
This commit is contained in:
@@ -50,6 +50,9 @@
|
||||
- Static linking against OpenSSL versions below 1.1, previously done by
|
||||
setting `-d:openssl10`, is no longer supported.
|
||||
|
||||
- ORC is now the default memory management strategy. Use
|
||||
`--mm:refc` for a transition period.
|
||||
|
||||
## Standard library additions and changes
|
||||
|
||||
[//]: # "Changes:"
|
||||
|
||||
@@ -127,8 +127,7 @@ Advanced options:
|
||||
--skipParentCfg:on|off do not read the parent dirs' configuration files
|
||||
--skipProjCfg:on|off do not read the project's configuration file
|
||||
--mm:orc|arc|refc|markAndSweep|boehm|go|none|regions
|
||||
select which memory management to use; default is 'refc'
|
||||
recommended is 'orc'
|
||||
select which memory management to use; default is 'orc'
|
||||
--exceptions:setjmp|cpp|goto|quirky
|
||||
select the exception handling implementation
|
||||
--index:on|off turn index file generation on|off
|
||||
|
||||
17
doc/mm.md
17
doc/mm.md
@@ -28,10 +28,10 @@ To choose the memory management strategy use the `--mm:` switch.
|
||||
ARC/ORC
|
||||
-------
|
||||
|
||||
`--mm:orc` is a memory management mode primarily based on reference counting. Cycles
|
||||
in the object graph are handled by a "cycle collector" which is based on "trial deletion".
|
||||
Since algorithms based on "tracing" are not used, the runtime behavior is oblivious to
|
||||
the involved heap sizes.
|
||||
ORC is the default memory management strategy. It is a memory
|
||||
management mode primarily based on reference counting. Reference cycles are
|
||||
handled by a cycle collection mechanism based on "trial deletion".
|
||||
Since algorithms based on "tracing" are not used, the runtime behavior is oblivious to the involved heap and stack sizes.
|
||||
|
||||
The reference counting operations (= "RC ops") do not use atomic instructions and do not have to --
|
||||
instead entire subgraphs are *moved* between threads. The Nim compiler also aggressively
|
||||
@@ -57,12 +57,11 @@ and leaks memory with `--mm:arc`, in other words, for `async` you need to use `-
|
||||
Other MM modes
|
||||
--------------
|
||||
|
||||
.. note:: The default `refc` GC is incremental, thread-local and not "stop-the-world".
|
||||
.. note:: The `refc` GC is incremental, thread-local and not "stop-the-world".
|
||||
|
||||
--mm:refc This is the default memory management strategy. It's a
|
||||
deferred reference counting based garbage collector
|
||||
with a simple Mark&Sweep backup GC in order to collect cycles. Heaps are thread-local.
|
||||
[This document](refc.html) contains further information.
|
||||
--mm:refc It's a deferred reference counting based garbage collector
|
||||
with a simple Mark&Sweep backup GC in order to collect cycles.
|
||||
Heaps are thread-local. [This document](refc.html) contains further information.
|
||||
--mm:markAndSweep Simple Mark-And-Sweep based garbage collector.
|
||||
Heaps are thread-local.
|
||||
--mm:boehm Boehm based garbage collector, it offers a shared heap.
|
||||
|
||||
Reference in New Issue
Block a user