diff options
-rw-r--r-- | changelog.md | 3 | ||||
-rw-r--r-- | doc/advopt.txt | 3 | ||||
-rw-r--r-- | doc/mm.md | 17 |
3 files changed, 12 insertions, 11 deletions
diff --git a/changelog.md b/changelog.md index 8b9676a3a..5ae8660f3 100644 --- a/changelog.md +++ b/changelog.md @@ -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:" diff --git a/doc/advopt.txt b/doc/advopt.txt index 244fe035b..3f439fdab 100644 --- a/doc/advopt.txt +++ b/doc/advopt.txt @@ -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 diff --git a/doc/mm.md b/doc/mm.md index 2ba854add..9d1fc1955 100644 --- a/doc/mm.md +++ b/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. |