<div dir="ltr"><div dir="ltr" class="gmail_msg"><div class="gmail_msg">I have never tried PEP0523 before so I have just did a quick look and pushed what I got to <a href="https://github.com/sklam/etude_py36_custom_jit">https://github.com/sklam/etude_py36_custom_jit</a>.</div><div class="gmail_msg"><br></div><div class="gmail_msg">If you run <a href="https://github.com/sklam/etude_py36_custom_jit/blob/master/test.py">https://github.com/sklam/etude_py36_custom_jit/blob/master/test.py</a>, you should get the following printouts:</div><div class="gmail_msg"><br></div>Hello <br>Hey <br>Yes <br>** myjit is evaluating frame=0x10c623048 lasti=-1 lineno=10 <br>Enter apple() <br>** myjit is evaluating frame=0x7f9a74e02178 lasti=-1 lineno=16 <br>Enter orange() <br>Exit orange() <br>Exit apple() <br>** myjit is evaluating frame=0x10c460d48 lasti=-1 lineno=27<br class="gmail_msg"><div class="gmail_msg"><div class="gmail_msg"><span style="color:rgb(36,39,41);font-family:arial,"helvetica neue",helvetica,sans-serif;font-size:15px" class="gmail_msg"><br class="gmail_msg"></span></div></div></div><div>The frame is different for each method. </div><div><br></div><div>Can you try your implementation with my test so we can compare?</div><br class="gmail_msg"><div class="gmail_quote gmail_msg"><div dir="ltr" class="gmail_msg">On Thu, Mar 30, 2017 at 11:46 PM Yuheng Zou <<a href="mailto:zouyuheng1998@gmail.com" class="gmail_msg" target="_blank">zouyuheng1998@gmail.com</a>> wrote:<br class="gmail_msg"></div><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg"><p style="margin:0px 0px 1em;padding:0px;border:0px;font-size:15px;clear:both;color:rgb(36,39,41);font-family:arial,"helvetica neue",helvetica,sans-serif" class="gmail_msg">I am building a Python JIT, so I want to change the <code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);white-space:pre-wrap" class="gmail_msg">interp->eval_frame</code> to my own function.</p><p style="margin:0px 0px 1em;padding:0px;border:0px;font-size:15px;clear:both;color:rgb(36,39,41);font-family:arial,"helvetica neue",helvetica,sans-serif" class="gmail_msg">I built a C++ library which contains <code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);white-space:pre-wrap" class="gmail_msg">EvalFrame</code> function, and then use <code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);white-space:pre-wrap" class="gmail_msg">dlopen</code> and <code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);white-space:pre-wrap" class="gmail_msg">dlsym</code> to use it. It looks like this:</p><pre class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-default m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-prettyprint m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-prettyprinted gmail_msg" style="white-space:pre-wrap;margin-top:0px;margin-bottom:1em;padding:5px;border:0px;font-size:13px;width:auto;max-height:600px;overflow:auto;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);color:rgb(57,51,24);word-wrap:normal"><code style="margin:0px;padding:0px;border:0px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;white-space:inherit" class="gmail_msg"><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-kwd gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(16,16,148)">extern</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-str gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">"C"</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-typ gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(43,145,175)">PyObject</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">*</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-typ gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(43,145,175)">EvalFrame</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">(</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-typ gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(43,145,175)">PyFrameObject</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">*</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">f</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-kwd gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(16,16,148)">int</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> throwflag</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">)</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">{</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-kwd gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(16,16,148)">return</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-typ gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(43,145,175)">_PyEval_EvalFrameDefault</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">(</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">f</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> throwflag</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">);</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">}</span></code></pre><p style="margin:0px 0px 1em;padding:0px;border:0px;font-size:15px;clear:both;color:rgb(36,39,41);font-family:arial,"helvetica neue",helvetica,sans-serif" class="gmail_msg">I added following code to <code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);white-space:pre-wrap" class="gmail_msg">Python/pylifecycle.c</code> at function <code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);white-space:pre-wrap" class="gmail_msg">_Py_InitializeEx_Private</code>(Python version is 3.6.1):</p><pre class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-default m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-prettyprint m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-prettyprinted gmail_msg" style="white-space:pre-wrap;margin-top:0px;margin-bottom:1em;padding:5px;border:0px;font-size:13px;width:auto;max-height:600px;overflow:auto;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);color:rgb(57,51,24);word-wrap:normal"><code style="margin:0px;padding:0px;border:0px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;white-space:inherit" class="gmail_msg"><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-kwd gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(16,16,148)">void</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">*</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">pyjit </span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">=</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> NULL</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">;</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
pyjit </span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">=</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> dlopen</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">(</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-str gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">"../cmake-build-debug/libPubbon.dylib"</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-lit gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">0</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">);</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-kwd gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(16,16,148)">if</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">(</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">pyjit </span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">!=</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> NULL</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">)</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">{</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
interp</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">-></span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">eval_frame </span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">=</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">(</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-typ gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(43,145,175)">_PyFrameEvalFunction</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">)</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">dlsym</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">(</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">pyjit</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-str gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">"EvalFrame"</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">);</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-com gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(133,140,147)">//interp->eval_frame = _PyEval_EvalFrameDefault;</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pun gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">}</span><span class="m_-6158873506829184945m_5173675461372407811gmail-m_-8045967235770156253gmail-pln gmail_msg" style="margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span></code></pre><p style="margin:0px 0px 1em;padding:0px;border:0px;font-size:15px;clear:both;color:rgb(36,39,41);font-family:arial,"helvetica neue",helvetica,sans-serif" class="gmail_msg">Then something strange happened. I used LLDB to trace the variables. When it ran at <code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);white-space:pre-wrap" class="gmail_msg">EvalFrame</code>, the address of <code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);white-space:pre-wrap" class="gmail_msg">f</code> pointer didn't change, but <code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:consolas,menlo,monaco,"lucida console","liberation mono","dejavu sans mono","bitstream vera sans mono","courier new",monospace,sans-serif;background-color:rgb(239,240,241);white-space:pre-wrap" class="gmail_msg">f->f_lineno</code> changed.</p><p style="margin:0px 0px 1em;padding:0px;border:0px;font-size:15px;clear:both;color:rgb(36,39,41);font-family:arial,"helvetica neue",helvetica,sans-serif" class="gmail_msg">Why the address of the pointer didn't change, but the context change?</p><p style="margin:0px 0px 1em;padding:0px;border:0px;font-size:15px;clear:both;color:rgb(36,39,41);font-family:arial,"helvetica neue",helvetica,sans-serif" class="gmail_msg">I am working on Mac OS X and Python 3.6.1. I want to know how to replace _PyEval_EvalFrameDefault in interp->eval_frame with my own function.</p></div>
_______________________________________________<br class="gmail_msg">
Python-compilers mailing list<br class="gmail_msg">
<a href="mailto:Python-compilers@python.org" class="gmail_msg" target="_blank">Python-compilers@python.org</a><br class="gmail_msg">
<a href="https://mail.python.org/mailman/listinfo/python-compilers" rel="noreferrer" class="gmail_msg" target="_blank">https://mail.python.org/mailman/listinfo/python-compilers</a><br class="gmail_msg">
</blockquote></div></div><div dir="ltr">-- <br></div><div data-smartmail="gmail_signature"><div dir="ltr">Siu Kwan Lam<div>Software Engineer</div><div>Continuum Analytics</div></div></div>