;;> Library for weak data structures.

;;> \procedure{(make-ephemeron key value)}

;;> Returns a new ephemeron.  This ephemeron holds a weak reference to
;;> \var{key}, such that \var{value} will only be traced by the GC if
;;> \var{key} is referenced from an external object.

;;> \procedure{(ephemeron? x)}
;;> Returns true iff \var{x} is an ephemeron.

;;> \procedure{(ephemeron-broken? ephemeron)}
;;> Returns true iff \var{ephemeron}s \var{key} has been GCed.

;;> \procedure{(ephemeron-key ephemeron)}
;;> Returns \var{ephemeron}s \var{key}, or \scheme{#f} if it has been GCed.

;;> \procedure{(ephemeron-value ephemeron)}
;;> Returns \var{ephemeron}s \var{value}.

(define-library (chibi weak)
  (export make-ephemeron ephemeron? ephemeron-broken?
          ephemeron-key ephemeron-value
          ;; make-weak-vector weak-vector? weak-vector-length
          ;; weak-vector-ref weak-vector-set!
          )
  (include-shared "weak"))