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:
20
examples/weak-tables.janet
Normal file
20
examples/weak-tables.janet
Normal 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)
|
Reference in New Issue
Block a user