summaryrefslogtreecommitdiff
path: root/doc/refcount.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/refcount.txt')
-rw-r--r--doc/refcount.txt17
1 files changed, 17 insertions, 0 deletions
diff --git a/doc/refcount.txt b/doc/refcount.txt
new file mode 100644
index 00000000..e575142a
--- /dev/null
+++ b/doc/refcount.txt
@@ -0,0 +1,17 @@
+Reference counting uses special words in functions to make it easy to remember
+and follow the rules.
+
+Words that take ownership: new, find, load, open, keep.
+
+Words that release ownership: drop, free, close.
+
+If an object is returned by a function with one of the special words that take
+ownership, you are responsible for freeing it by calling "drop" or "free", or
+"close" before you return. You may pass ownership of an owned object by return
+it only if you name the function using one of the special words.
+
+Any objects returned by functions that do not have any of these special words,
+are borrowed and have a limited life time. Do not hold on to them past the
+duration of the current function, or stow them away inside structs. If you need
+to keep the object for longer than that, you have to either "keep" it or make
+your own copy.