<div dir="ltr">On Tue, Jan 22, 2013 at 9:01 AM, David Bruant <span dir="ltr"><<a href="mailto:bruant.d@gmail.com" target="_blank">bruant.d@gmail.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div text="#000000" bgcolor="#FFFFFF">    class WeakMapWithoutClear {</div></blockquote><div><br></div><div>Yep. Glad to see we are thinking along the same lines.<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF"><div class="im">What this and my previous show is an semantics equivalence between
    clearable and clear-less weakmaps. Which should be chosen as
    default?<br></div>
    * clear-less weakmaps have better integrity properties.<br>
    * clearable weakmaps may have better performance characteristics
    (I'm still not entirely convinced)<br></div></blockquote><div><br></div><div>Well, I disagree a little with the wording here! I'd put it like this:<br><br></div><div>* clear-less weakmaps are more convenient when you need<br>
  a particular invariant, useful in implementing rights amplification;<br></div><div><br>* clearable weakmaps are more convenient when you want<br>  to clear a WeakMap.[*]<br><br></div><div>To me, the wording "better integrity properties" suggests an integrity property that benefits all code using WeakMaps. But as far as I can tell, very few use cases would really benefit.<br>
<br></div><div>Separately: APIs should make easy things easy and hard things possible, right? So far, all the proposed use cases of non-clearable weakmaps are complex and security-sensitive. If you're already doing something that exciting, you can write WeakMapWithoutClear with your eyes closed. By contrast, use cases for .clear() are pretty simple. Clearing caches. The sort of thing where having to write a wrapper class might actually be an annoying marginal cost.<br>
</div><div><br></div><div>Cheers,<br></div><div>-j<br><br></div><div>[*] Also some sort of performance thing that will totally check out if you take the time to look into it! :)<br><br></div></div></div></div>