diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2020-07-12 11:29:33 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2020-07-12 11:29:33 -0700 |
commit | 15740ae6b6c8476cd1a9323ffd50f85a3c8ea245 (patch) | |
tree | f5eac0226a4e57e1383771c862a23efc0eddfb93 /lib.h | |
parent | a6f6072761d124c60793325bc512048b0f31f5a3 (diff) | |
download | txr-15740ae6b6c8476cd1a9323ffd50f85a3c8ea245.tar.gz txr-15740ae6b6c8476cd1a9323ffd50f85a3c8ea245.tar.bz2 txr-15740ae6b6c8476cd1a9323ffd50f85a3c8ea245.zip |
Support weak semantics in symbol packages.
A package is weak if it holds weak references to symbols,
meaning that if there are no references to a symbol other than
its entry in a weak package, it can be removed from the
package and reclaimed by the garbage collector.
* eval.c (eval_init): Update registrations for make-package
and sys:make-anon-package to reflect new optional argument.
* lib.c (make_package_common): New argument weak. If it is
true then both the hashes will have weak values.
(make_package, make_anon_package): New optional argument weak.
(obj_init): Add nil argument to calls to make_package. All the
standard packages are regular, not weak.
* lib.h (make_package, make_anon_package): Declarations
updated.
* txr.1: Documented.
Diffstat (limited to 'lib.h')
-rw-r--r-- | lib.h | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -928,8 +928,8 @@ val compl_span_str(val str, val set); val break_str(val str, val set); val make_sym(val name); val gensym(val prefix); -val make_package(val name); -val make_anon_package(void); +val make_package(val name, val weak); +val make_anon_package(val weak); val packagep(val obj); val find_package(val name); val delete_package(val package); |