<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;
      charset=windows-1252">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>Thanks for the feedback!</p>
    <p><br>
    </p>
    <p>Regarding an official recommended kemi language, I think it would
      rather hard to do it, because it can be an opinionated choice for
      each developer.</p>
    <p><br>
    </p>
    <p>I am more or less going for Lua if it's only about me. It is a
      small interpreter, with a fair large set of extensions and good
      docs/community out there.</p>
    <p><br>
    </p>
    <p>However, many companies I work with have Python dev teams, rather
      than Lua. So if they want Python, I help them to build the SIP
      routing logic in it. But again, it is not a language I use often
      myself. Of course, the ecosystem around Python is enormous
      comparing with Lua (community, docs, extensions, ...).</p>
    <p><br>
    </p>
    <p>Ruby was requested at last Kamailio World Conference edition and
      proved to be easy to write the module for it, so I did it. It is
      the one I tested the least so far.</p>
    <p><br>
    </p>
    <p>JavaScript was added because embedding the JS duktape interpreter
      is more or less like embedding Lua (same approach and similar api
      -- kind of only different data type names and function names).
      However, this I did it because I wanted to have an established
      scripting language (so people can learn easily the syntax and the
      basics of the language) without depending on external libs. That's
      why ducktape JS interpreter code in imported in app_jsdt module
      (they recommend this way anyhow). This is like a fist choice when
      one just need script reload without restart.</p>
    <p><br>
    </p>
    <p>Squirrel support was added more for didactic purposes, it has the
      same embedding API like Lua (and ducktape). Being small, can be
      used as a module to learn how to develop another KEMI interpreter
      module. It can be also an option for using with embedded devices,
      the code for its interpreter (which is also imported in kamailio
      module app_sqlang) is really small comparing with duktape. But
      then, JavaScript is a more complex and complete language.</p>
    <p><br>
    </p>
    <p>The fact is that apart of KSR.x and KSR.pv sub-modules, all the
      functions/sub-modules exported by KSR are exactly the same in any
      of these KEMI scripting languages -- read it like it is the exact
      same c code running behind these functions, no matter which kemi
      scripting language you use.</p>
    <p><br>
    </p>
    <p>Cheers,<br>
      Daniel<br>
    </p>
    <p> <br>
    </p>
    <div class="moz-cite-prefix">On 11.12.18 16:09, Samuel F. wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:DM5PR17MB0986C6CD8649EA9AAE94DDBDC3A60@DM5PR17MB0986.namprd17.prod.outlook.com">
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      <style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        Thanks Daniel, very interesting!</div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        <br>
      </div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        We are running four production instances with Kemi Python v2 and
        will launch two more instances starting next month on Python v3.</div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        <br>
      </div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        So far Python v2 has worked flawlessly!</div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        <br>
      </div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        As a side note, would be great to have a official recommended
        language for KEMI so other devs can share
        modules/codes/tutorials etc.. having too many languages, in my
        opinion, reduces the benefit a community can provide.</div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        <br>
      </div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        All the best,</div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        <br>
      </div>
      <div style="font-family: Calibri, Helvetica, sans-serif;
        font-size: 12pt; color: rgb(0, 0, 0);">
        Samuel</div>
      <hr style="display:inline-block;width:98%" tabindex="-1">
      <div id="divRplyFwdMsg" dir="ltr"><font style="font-size:11pt"
          face="Calibri, sans-serif" color="#000000"><b>From:</b>
          sr-users <a class="moz-txt-link-rfc2396E" href="mailto:sr-users-bounces@lists.kamailio.org"><sr-users-bounces@lists.kamailio.org></a> on behalf
          of Daniel-Constantin Mierla <a class="moz-txt-link-rfc2396E" href="mailto:miconda@gmail.com"><miconda@gmail.com></a><br>
          <b>Sent:</b> Tuesday, December 11, 2018 09:30<br>
          <b>To:</b> Kamailio (SER) - Users Mailing List; Kamailio (SER)
          - Devel Mailing List; <a class="moz-txt-link-abbreviated" href="mailto:business@lists.kamailio.org">business@lists.kamailio.org</a><br>
          <b>Subject:</b> [SR-Users] Performance tests of native vs.
          kemi scripting for SIP routing</font>
        <div> </div>
      </div>
      <div class="BodyFragment"><font size="2"><span
            style="font-size:11pt;">
            <div class="PlainText">Hello,<br>
              <br>
              during the preparations of Kamailio v5.2.0 and the days
              after, I got the<br>
              time to run some tests in order to see the differences of
              running<br>
              similar SIP routing logic when using native configuration
              file scripting<br>
              versus KEMI languages. So far I did it for Lua and Python
              (v2),<br>
              hopefully I will find time to run also for the rest of
              supported<br>
              scripting languages: Python (v3), JavaScript, Ruby,
              Squrrel and Lua with<br>
              LuaJIT.<br>
              <br>
              The pleasant surprise was to see that this time, the
              results of using<br>
              Python were similar to native scripting and Lua. When I
              did some basic<br>
              tests during development of KEMI, using Python seemed
              slower.<br>
              <br>
              More details about how tests were performed, the config
              files/scripts,<br>
              used tools and results were published in a wiki page:<br>
              <br>
                - <a
href="https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.kamailio.org%2Fwiki%2Fkemi%2Fperformance-tests%2F5.2.x&amp;data=02%7C01%7C%7Ca073cd176b784611f1a908d65f434965%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636801139925397334&amp;sdata=GdUdX%2BjUgpJydYvBxP%2BChGbzD4qCJK%2BWJ7fFPNEYeOs%3D&amp;reserved=0"
                moz-do-not-send="true">
https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.kamailio.org%2Fwiki%2Fkemi%2Fperformance-tests%2F5.2.x&amp;data=02%7C01%7C%7Ca073cd176b784611f1a908d65f434965%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636801139925397334&amp;sdata=GdUdX%2BjUgpJydYvBxP%2BChGbzD4qCJK%2BWJ7fFPNEYeOs%3D&amp;reserved=0</a><br>
              <br>
              A news article with further details is on kamailio
              website:<br>
              <br>
                -<br>
              <a
href="https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.kamailio.org%2Fw%2F2018%2F12%2Fperformance-tests-for-kemi-scripting-languages%2F&amp;data=02%7C01%7C%7Ca073cd176b784611f1a908d65f434965%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636801139925397334&amp;sdata=tYxvflkw9hFnVE%2BLe1wqrvvWQ7Nif0E%2F4NeT4hAdTSM%3D&amp;reserved=0"
                moz-do-not-send="true">https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.kamailio.org%2Fw%2F2018%2F12%2Fperformance-tests-for-kemi-scripting-languages%2F&amp;data=02%7C01%7C%7Ca073cd176b784611f1a908d65f434965%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636801139925397334&amp;sdata=tYxvflkw9hFnVE%2BLe1wqrvvWQ7Nif0E%2F4NeT4hAdTSM%3D&amp;reserved=0</a><br>
              <br>
              Should anyhow of you have some time to run the tests in
              own environment<br>
              and share the results (on sr-users mailing list), it would
              be<br>
              appreciated and would help to validate the tests and
              discover if I<br>
              forgot something in any of the configs. Note that the goal
              of the tests<br>
              is not measuring the capacity of Kamailio in your
              environment, but see<br>
              the differences between using different scripting
              languages in the same<br>
              environment (so you can do the tests on raspberry pi, if
              you like).<br>
              <br>
              I would also be interested in knowing if you are using
              Kamailio with<br>
              KEMI or you are planning to, if yes, which scripting
              language. If<br>
              already doing it, is already in production? These are
              useful to plan<br>
              where to allocate developer resources in the future...<br>
              <br>
              And to start, I am running Kamailio with Lua (4 instances)
              and Python<br>
              (1) scripting in production deployments, with very good
              results so far.<br>
              <br>
              Cheers,<br>
              Daniel<br>
              <br>
              -- <br>
              Daniel-Constantin Mierla -- <a
href="https://nam04.safelinks.protection.outlook.com/?url=www.asipto.com&amp;data=02%7C01%7C%7Ca073cd176b784611f1a908d65f434965%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636801139925397334&amp;sdata=vn1TxHaSsjR3gbvq5Gpw53%2BvJigcdrefxvEy163La8g%3D&amp;reserved=0"
                moz-do-not-send="true">
https://nam04.safelinks.protection.outlook.com/?url=www.asipto.com&amp;data=02%7C01%7C%7Ca073cd176b784611f1a908d65f434965%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636801139925397334&amp;sdata=vn1TxHaSsjR3gbvq5Gpw53%2BvJigcdrefxvEy163La8g%3D&amp;reserved=0</a><br>
              <a
href="https://nam04.safelinks.protection.outlook.com/?url=www.twitter.com%2Fmiconda&amp;data=02%7C01%7C%7Ca073cd176b784611f1a908d65f434965%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636801139925397334&amp;sdata=30E7Ww%2BigG3Rzbwi4j%2BIqjF4TpUqfnYYMspLhPQAvP0%3D&amp;reserved=0"
                moz-do-not-send="true">https://nam04.safelinks.protection.outlook.com/?url=www.twitter.com%2Fmiconda&amp;data=02%7C01%7C%7Ca073cd176b784611f1a908d65f434965%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636801139925397334&amp;sdata=30E7Ww%2BigG3Rzbwi4j%2BIqjF4TpUqfnYYMspLhPQAvP0%3D&amp;reserved=0</a>
              -- <a
href="https://nam04.safelinks.protection.outlook.com/?url=www.linkedin.com%2Fin%2Fmiconda&amp;data=02%7C01%7C%7Ca073cd176b784611f1a908d65f434965%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636801139925397334&amp;sdata=XEjKBjIq9eANmHr8KeEQXlB1HLR8Tn%2BVwoNtkMz2G%2Fg%3D&amp;reserved=0"
                moz-do-not-send="true">
https://nam04.safelinks.protection.outlook.com/?url=www.linkedin.com%2Fin%2Fmiconda&amp;data=02%7C01%7C%7Ca073cd176b784611f1a908d65f434965%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636801139925397334&amp;sdata=XEjKBjIq9eANmHr8KeEQXlB1HLR8Tn%2BVwoNtkMz2G%2Fg%3D&amp;reserved=0</a><br>
              Kamailio World Conference - May 6-8, 2019 -- <a
href="https://nam04.safelinks.protection.outlook.com/?url=www.kamailioworld.com&amp;data=02%7C01%7C%7Ca073cd176b784611f1a908d65f434965%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636801139925397334&amp;sdata=k5%2BSGddS3uWGMX7%2Fnyt13EBNrFcqqRYU%2FggS0EapwEw%3D&amp;reserved=0"
                moz-do-not-send="true">
https://nam04.safelinks.protection.outlook.com/?url=www.kamailioworld.com&amp;data=02%7C01%7C%7Ca073cd176b784611f1a908d65f434965%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636801139925397334&amp;sdata=k5%2BSGddS3uWGMX7%2Fnyt13EBNrFcqqRYU%2FggS0EapwEw%3D&amp;reserved=0</a><br>
              Kamailio Advanced Training -- <a
href="https://nam04.safelinks.protection.outlook.com/?url=www.asipto.com&amp;data=02%7C01%7C%7Ca073cd176b784611f1a908d65f434965%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636801139925397334&amp;sdata=vn1TxHaSsjR3gbvq5Gpw53%2BvJigcdrefxvEy163La8g%3D&amp;reserved=0"
                moz-do-not-send="true">
https://nam04.safelinks.protection.outlook.com/?url=www.asipto.com&amp;data=02%7C01%7C%7Ca073cd176b784611f1a908d65f434965%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636801139925397334&amp;sdata=vn1TxHaSsjR3gbvq5Gpw53%2BvJigcdrefxvEy163La8g%3D&amp;reserved=0</a><br>
              <br>
              <br>
              _______________________________________________<br>
              Kamailio (SER) - Users Mailing List<br>
              <a class="moz-txt-link-abbreviated" href="mailto:sr-users@lists.kamailio.org">sr-users@lists.kamailio.org</a><br>
              <a
href="https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.kamailio.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fsr-users&amp;data=02%7C01%7C%7Ca073cd176b784611f1a908d65f434965%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636801139925397334&amp;sdata=VuoEwq7PaEC3BYsGPgaRuXiLvJ%2B%2FTGi790ht1E9wvdY%3D&amp;reserved=0"
                moz-do-not-send="true">https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.kamailio.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fsr-users&amp;data=02%7C01%7C%7Ca073cd176b784611f1a908d65f434965%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636801139925397334&amp;sdata=VuoEwq7PaEC3BYsGPgaRuXiLvJ%2B%2FTGi790ht1E9wvdY%3D&amp;reserved=0</a><br>
            </div>
          </span></font></div>
    </blockquote>
    <pre class="moz-signature" cols="72">-- 
Daniel-Constantin Mierla -- <a class="moz-txt-link-abbreviated" href="http://www.asipto.com">www.asipto.com</a>
<a class="moz-txt-link-abbreviated" href="http://www.twitter.com/miconda">www.twitter.com/miconda</a> -- <a class="moz-txt-link-abbreviated" href="http://www.linkedin.com/in/miconda">www.linkedin.com/in/miconda</a>
Kamailio World Conference - May 6-8, 2019 -- <a class="moz-txt-link-abbreviated" href="http://www.kamailioworld.com">www.kamailioworld.com</a>
Kamailio Advanced Training -- <a class="moz-txt-link-abbreviated" href="http://www.asipto.com">www.asipto.com</a></pre>
  </body>
</html>