<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Le 14/01/2013 17:45, Kevin Smith a
      écrit :<br>
    </div>
    <blockquote
cite="mid:CABikueCh4NjdAhjA089QcT0Jka2AESQDQ4xhsh8wZffvJCR6Ug@mail.gmail.com"
      type="cite">
      <div dir="ltr"><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">
              <br>
              No boilerplate, no additional runtime costs than what's
              necessary.</blockquote>
            <div><br>
            </div>
            <div style="">Arguably, all of those examples could be
              addressed by unique symbols.  Where is the need for strong
              runtime enforcement of encapsulation?</div>
          </div>
        </div>
      </div>
    </blockquote>
    The variable was called "s" standing for secret. The example I gave
    was dummy, but examples in the wild are legion. Take your favorite
    node library. Anytime it defines a _property, this is where there
    should be a private name.<br>
    One of the goal was that no one had access to the "s" part of the
    state. You need private symbols for that.<br>
    <br>
    <blockquote
cite="mid:CABikueCh4NjdAhjA089QcT0Jka2AESQDQ4xhsh8wZffvJCR6Ug@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <div> </div>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div class="im"><br>
                <blockquote class="gmail_quote" style="margin:0 0 0
                  .8ex;border-left:1px #ccc solid;padding-left:1ex">
                  I would personally like to see answers to the
                  following questions:<br>
                  <br>
                  - Do private slots enable applications that would
                  otherwise be impossible?<br>
                </blockquote>
              </div>
              I guess applications where you need memory for your actual
              content and not memory to compensate the lack of language
              expressiveness. I have no real idea of how much can be
              saved in terms of memory between the 3 snippets I've
              shared with millions of C instances.</blockquote>
            <div><br>
            </div>
            <div style="">Private symbols are not necessary for this.
               Unique symbols work just fine.</div>
          </div>
        </div>
      </div>
    </blockquote>
    The implicit requirement was that only trusted parties were expected
    to have access to the "s" variable or equivalent in other examples.
    Unique symbols are enumerated, so do not do the job.<br>
    <br>
    <blockquote
cite="mid:CABikueCh4NjdAhjA089QcT0Jka2AESQDQ4xhsh8wZffvJCR6Ug@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <div style=""> </div>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div class="im"><br>
                <blockquote class="gmail_quote" style="margin:0 0 0
                  .8ex;border-left:1px #ccc solid;padding-left:1ex">
                  - What are some examples of real-world applications
                  where the runtime security of private slots is
                  necessary?<br>
                </blockquote>
              </div>
              It really depends on what you mean by "necessary". As far
              as I'm concerned, it'd be all application using
              third-party code and a lot of websites embed a Google
              Analytics script, so that would be a lot of them (looking
              forward to the day GA is being hacked by the way :-) )</blockquote>
            <div><br>
            </div>
            <div style="">I want to see more along these lines.  What is
              the security model for "loading third-party" code and in
              what way do private slots help?<br>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    I'm realizing now that I may be off-topic. I'm not that interested
    whether it's a new type of slot with the non-freezability property.
    I only care that it's private (non-enumerable with
    Object.getOwnPropertyNames)<br>
    <br>
    Thinking more about the loading third-party code, I guess it's
    technically doable to do without private names. It comes to the cost
    of creating proxies doing the encapsulation for you. You provide a
    blacklist of properties that must not be reflected and the third
    party never sees them... In essence, you're listing the private
    properties and the proxy does the book keeping (details about
    non-configurability aside). It'd be more appropriate to define this
    private properties directly on the object if there is a commonality
    to what you wish keeping to your self when considering sharing the
    object.<br>
    <br>
    I don't know whether this justifies a new type of slot. Brendan's
    "none of your business" argument has a point. Additionally, if you
    do not have access to a private symbol, why should you be provided
    by default the right to change related private property descriptors?<br>
    <br>
    David<br>
  </body>
</html>