1
0
mirror of https://github.com/janet-lang/janet synced 2025-09-04 20:08:04 +00:00

Add weak references in the form of weak tables.

Any references exclusively held by a weak table may be collected
without the programmer needing to free references manually. A table
can be setup to have weak keys, weak values, or both.
This commit is contained in:
Calvin Rose
2023-09-27 23:27:48 -05:00
parent b63d41102e
commit b3a6e25ce0
6 changed files with 170 additions and 9 deletions

View File

@@ -0,0 +1,20 @@
(def weak-k (table/new 10 :k))
(def weak-v (table/new 10 :v))
(def weak-kv (table/new 10 :kv))
(put weak-kv (gensym) 10)
(put weak-kv :hello :world)
(put weak-k :abc123zz77asda :stuff)
(put weak-k true :abc123zz77asda)
(put weak-k :zyzzyz false)
(put weak-v (gensym) 10)
(put weak-v 20 (gensym))
(print "before gc")
(tracev weak-k)
(tracev weak-v)
(tracev weak-kv)
(gccollect)
(print "after gc")
(tracev weak-k)
(tracev weak-v)
(tracev weak-kv)