<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>