<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">On 03/07/2018 12:43 AM, Richard
      Carlsson wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CANKG3znt2mHVj9ZMkXx=CJowKPdej-uWyCXb=Oeuyg+rSoKFdA@mail.gmail.com">
      <div dir="ltr">Using code:is_loaded/1 has the same roundtrip
        overhead as code:ensure_loaded(), so in that case you can just
        use the latter directly without any extra check.
        <div><br>
        </div>
        <div>But as I see it, the warning should just be seen as a
          pointer for average users to primarily use the code module,
          and not as a warning about this function possibly going away
          or being bad for you, as long as you know what you are using
          it for.</div>
      </div>
    </blockquote>
    <br>
    If that really is the case with erlang:module_loaded/1, then it
    would be best to updated the documentation so the warning is less
    severe.  That would make it clear that the function isn't a
    maintenance hazard in the future, because it may disappear or change
    in the future.  The warning currently says "This BIF is intended for
    the code server (see code(3)) and is not to be used elsewhere."
    which is similar to erlang:purge_module/1, erlang:delete_module/1,
    and erlang:load_module/2.  So the same change to the documentation
    should occur with these functions too.<br>
    <br>
    <br>
    <blockquote type="cite"
cite="mid:CANKG3znt2mHVj9ZMkXx=CJowKPdej-uWyCXb=Oeuyg+rSoKFdA@mail.gmail.com">
      <div class="gmail_extra"><br clear="all">
        <div>
          <div class="gmail_signature" data-smartmail="gmail_signature"><br>
                    /Richard</div>
        </div>
        <br>
        <div class="gmail_quote">2018-03-07 8:24 GMT+01:00 Michael Truog
          <span dir="ltr"><<a href="mailto:mjtruog@gmail.com"
              target="_blank" moz-do-not-send="true">mjtruog@gmail.com</a>></span>:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div text="#000000" bgcolor="#FFFFFF"><span class="">
                <div class="m_-7436874537547592371moz-cite-prefix">On
                  03/06/2018 10:54 PM, Metin Akat wrote:<br>
                </div>
                <blockquote type="cite">
                  <div dir="ltr">Thanks all. I went with the solution
                    Richard proposed. And after testing of the full
                    implementation, this check is certainly not the
                    bottleneck of the system, as Jesper suggested.</div>
                </blockquote>
                <br>
              </span> The only problem with that, is that the
              documentation specifies that erlang:module_loaded/1 is
              only really meant to be used by the code server (at <a
                class="m_-7436874537547592371moz-txt-link-freetext"
                href="http://erlang.org/doc/man/erlang.html#module_loaded-1"
                target="_blank" moz-do-not-send="true">http://erlang.org/doc/man/<wbr>erlang.html#module_loaded-1</a>). 
              If that bothers you, you should use the function
              code:is_loaded/1 instead.
              <div>
                <div class="h5"><br>
                  <br>
                  <br>
                  <blockquote type="cite">
                    <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>
                            <div>
                              <div class="m_-7436874537547592371h5">
                                <div><br>
                                </div>
                                <div><br>
                                </div>
                                <div>On Tue, Mar 6, 2018, at 12:23 PM,
                                  Richard Carlsson wrote:<br>
                                </div>
                              </div>
                            </div>
                            <blockquote type="cite">
                              <div>
                                <div class="m_-7436874537547592371h5">
                                  <div dir="ltr">I was actually
                                    considering submitting such a patch
                                    a while back, but one argument
                                    against making that short-cut could
                                    be that operations against the code
                                    server should be serialized. On the
                                    other hand I haven't yet come up
                                    with an example where the short-cut
                                    would make a difference that
                                    couldn't already happen due to
                                    processor scheduling.<br>
                                  </div>
                                  <div>
                                    <div><br>
                                    </div>
                                    <div>
                                      <div>
                                        <div><br>
                                        </div>
                                        <div>        /Richard<br>
                                        </div>
                                      </div>
                                    </div>
                                    <div><br>
                                    </div>
                                    <div>
                                      <div>2018-03-06 16:40 GMT+01:00
                                        Michał Muskała <span dir="ltr"><<a
href="mailto:michal@muskala.eu" target="_blank" moz-do-not-send="true">michal@muskala.eu</a>></span>:<br>
                                      </div>
                                      <blockquote
style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-color:rgb(204,204,204);border-left-style:solid;border-left-width:1px;padding-left:1ex">
                                        <div>
                                          <div><span></span><br>
                                          </div>
                                          <div name="messageBodySection"
style="font-size:14px;font-family:-apple-system,BlinkMacSystemFont,sans-serif"><span>On
                                              6 Mar 2018, 16:36 +0100,
                                              Richard Carlsson <<a
                                                href="mailto:carlsson.richard@gmail.com"
                                                target="_blank"
                                                moz-do-not-send="true">carlsson.richard@gmail.com</a>>,
                                              wrote:</span><br>
                                          </div>
                                          <div><span></span><br>
                                          </div>
                                          <div
                                            name="messageReplySection"
style="font-size:14px;font-family:-apple-system,BlinkMacSystemFont,sans-serif">
                                            <div><span><br>
                                              </span></div>
                                            <blockquote type="cite"
style="margin-top:5px;margin-right:5px;margin-bottom:5px;margin-left:5px;padding-left:10px;border-left-color:rgb(26,188,156);border-left-style:solid;border-left-width:thin">
                                              <div dir="ltr">
                                                <div><span></span><br>
                                                </div>
                                                <div>
                                                  <div><span>is_exported(M,
                                                      F, A) -></span><br>
                                                  </div>
                                                  <div><span>  case
                                                      erlang:module_loaded(M)
                                                      of</span><br>
                                                  </div>
                                                  <div><span>    false
                                                      ->
                                                      code:ensure_loaded(M);</span><br>
                                                  </div>
                                                  <div><span>    true
                                                      -> ok</span><br>
                                                  </div>
                                                  <div><span>  end,</span><br>
                                                  </div>
                                                  <div><span> 
                                                      erlang:function_exported(M,
                                                      F, A).</span><br>
                                                  </div>
                                                  <div><span></span><br>
                                                  </div>
                                                  <div><span>(code:ensure_loaded()
                                                      is slow compared
                                                      to the fast call
                                                      to
                                                      erlang:module_loaded(),
                                                      even if the module
                                                      is already in
                                                      memory).</span><br>
                                                  </div>
                                                  <div> <br>
                                                  </div>
                                                </div>
                                              </div>
                                            </blockquote>
                                            <div><span><br>
                                              </span></div>
                                            <div>I was recently
                                              wondering about this. Is
                                              there a reason
                                              code:ensure_loaded() does
                                              not short circuit using
                                              erlang:module_loaded()? It
                                              could probably even skip
                                              the request to the code
                                              server entirely in case
                                              the module is already
                                              loaded.<br>
                                            </div>
                                            <div><span><span
                                                  class="m_-7436874537547592371m_-7346980260552055001colour"
style="color:rgb(136,136,136)"></span></span><br>
                                            </div>
                                            <div><span><span
                                                  class="m_-7436874537547592371m_-7346980260552055001colour"
style="color:rgb(136,136,136)"></span></span><br>
                                            </div>
                                            <div><span><span
                                                  class="m_-7436874537547592371m_-7346980260552055001colour"
style="color:rgb(136,136,136)">Michał.</span></span><br>
                                            </div>
                                            <div><br>
                                            </div>
                                            <div><span><span
                                                  class="m_-7436874537547592371m_-7346980260552055001colour"
style="color:rgb(136,136,136)"></span></span><br>
                                            </div>
                                          </div>
                                        </div>
                                      </blockquote>
                                    </div>
                                  </div>
                                </div>
                              </div>
                              <span>
                                <div><u>______________________________<wbr>_________________</u><br>
                                </div>
                                <div>erlang-questions mailing list<br>
                                </div>
                                <div><a
                                    href="mailto:erlang-questions@erlang.org"
                                    target="_blank"
                                    moz-do-not-send="true">erlang-questions@erlang.org</a><br>
                                </div>
                                <div><a
                                    href="http://erlang.org/mailman/listinfo/erlang-questions"
                                    target="_blank"
                                    moz-do-not-send="true">http://erlang.org/mailman/list<wbr>info/erlang-questions</a><br>
                                </div>
                              </span></blockquote>
                            <div><br>
                            </div>
                          </div>
                          <br>
                          ______________________________<wbr>_________________<br>
                          erlang-questions mailing list<br>
                          <a href="mailto:erlang-questions@erlang.org"
                            target="_blank" moz-do-not-send="true">erlang-questions@erlang.org</a><br>
                          <a
                            href="http://erlang.org/mailman/listinfo/erlang-questions"
                            rel="noreferrer" target="_blank"
                            moz-do-not-send="true">http://erlang.org/mailman/list<wbr>info/erlang-questions</a><br>
                          <br>
                        </blockquote>
                      </div>
                      <br>
                    </div>
                    <br>
                    <fieldset
                      class="m_-7436874537547592371mimeAttachmentHeader"></fieldset>
                    <br>
                    <pre>______________________________<wbr>_________________
erlang-questions mailing list
<a class="m_-7436874537547592371moz-txt-link-abbreviated" href="mailto:erlang-questions@erlang.org" target="_blank" moz-do-not-send="true">erlang-questions@erlang.org</a>
<a class="m_-7436874537547592371moz-txt-link-freetext" href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank" moz-do-not-send="true">http://erlang.org/mailman/<wbr>listinfo/erlang-questions</a>
</pre>
                  </blockquote>
                  <p><br>
                  </p>
                </div>
              </div>
            </div>
            <br>
            ______________________________<wbr>_________________<br>
            erlang-questions mailing list<br>
            <a href="mailto:erlang-questions@erlang.org"
              moz-do-not-send="true">erlang-questions@erlang.org</a><br>
            <a
              href="http://erlang.org/mailman/listinfo/erlang-questions"
              rel="noreferrer" target="_blank" moz-do-not-send="true">http://erlang.org/mailman/<wbr>listinfo/erlang-questions</a><br>
            <br>
          </blockquote>
        </div>
        <br>
      </div>
    </blockquote>
    <p><br>
    </p>
  </body>
</html>