<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>At LAD'12 we proposed a plan for improving the Lustre test framework as an important part of the Lustre quality story. &nbsp;One of the discussion points there was that the bash language of the current tests was lacking in a variety of areas. &nbsp;We're moving forward with this work but need community agreement on the best course. &nbsp;</div><div><br></div><div>Given the requirements and language options below, the reasonable choices rapidly diminish to a showdown between perl and python. &nbsp;I think we're leaning at this point toward perl, based on it's superior speed and inter-version compatibility. &nbsp;The final piece of the puzzle is the knowledge of existing Lustre test writers, so please chime in. &nbsp;(But note that "popularity" is the reason we chose bash the first time, and look where that got us...)</div><div><br></div><div><div style="margin: 0px 0px 0px 12px; text-indent: -12px; font-size: 13px; font-family: Arial; color: rgb(81, 6, 0); "><span class="Apple-tab-span" style="white-space:pre">     </span>requirements</div><div style="margin: 0px 0px 0px 30px; text-indent: -30px; font-size: 13px; font-family: Arial; color: rgb(108, 103, 1); "><span class="Apple-tab-span" style="white-space:pre">          </span>1.&nbsp;easy to use</div><div style="margin: 0px 0px 0px 30px; text-indent: -30px; font-size: 13px; font-family: Arial; color: rgb(108, 103, 1); "><span class="Apple-tab-span" style="white-space:pre">               </span>2.&nbsp;strict structure</div><div style="margin: 0px 0px 0px 30px; text-indent: -30px; font-size: 13px; font-family: Arial; color: rgb(108, 103, 1); "><span class="Apple-tab-span" style="white-space:pre">          </span>3.&nbsp;universally available</div><div style="margin: 0px 0px 0px 30px; text-indent: -30px; font-size: 13px; font-family: Arial; color: rgb(108, 103, 1); "><span class="Apple-tab-span" style="white-space:pre">             </span>4.&nbsp;widely maintained</div><div style="margin: 0px 0px 0px 30px; text-indent: -30px; font-size: 13px; font-family: Arial; color: rgb(108, 103, 1); "><span class="Apple-tab-span" style="white-space:pre">         </span>5.&nbsp;widely understood</div><div style="margin: 0px 0px 0px 30px; text-indent: -30px; font-size: 13px; font-family: Arial; color: rgb(108, 103, 1); "><span class="Apple-tab-span" style="white-space:pre">         </span>6.&nbsp;good filesystem interface: posix API</div><div style="margin: 0px 0px 0px 30px; text-indent: -30px; font-size: 13px; font-family: Arial; color: rgb(108, 103, 1); "><span class="Apple-tab-span" style="white-space:pre">              </span>7.&nbsp;fast - replace e.g. createmany with embedded function</div><div style="margin: 0px 0px 0px 30px; text-indent: -30px; font-size: 13px; font-family: Arial; color: rgb(108, 103, 1); "><span class="Apple-tab-span" style="white-space:pre">             </span>8.&nbsp;operate remote instances</div><div style="margin: 0px 0px 0px 30px; text-indent: -30px; font-size: 13px; font-family: Arial; color: rgb(108, 103, 1); "><span class="Apple-tab-span" style="white-space:pre">          </span>9. inter-version compatibility</div><div style="margin: 0px 0px 0px 12px; text-indent: -12px; font-size: 13px; font-family: Arial; color: rgb(81, 6, 0); "><span class="Apple-tab-span" style="white-space:pre">   </span>options</div><div style="margin: 0px 0px 0px 30px; text-indent: -30px; font-size: 13px; font-family: Arial; color: rgb(108, 103, 1); "><span class="Apple-tab-span" style="white-space:pre">               </span>bash - capable, but too flexible, easy to abuse</div><div style="margin: 0px 0px 0px 30px; text-indent: -30px; font-size: 13px; font-family: Arial; color: rgb(108, 103, 1); "><span class="Apple-tab-span" style="white-space:pre">               </span>perl - forward compatible, universal, more widely understood, xperior, compact; hard to read later</div><div style="margin: 0px 0px 0px 48px; text-indent: -48px; font-size: 13px; font-family: Arial; color: rgb(0, 105, 107); "><span class="Apple-tab-span" style="white-space:pre">                    </span>posix::open, opendir, lseek, etc.</div><div style="margin: 0px 0px 0px 66px; font-size: 11px; color: rgb(103, 103, 103); "><span class="Apple-tab-span" style="color: rgb(0, 105, 107); font-family: Arial; font-size: 13px; text-indent: -48px; white-space: pre; ">      </span><span style="color: rgb(0, 105, 107); font-family: Arial; font-size: 13px; text-indent: -48px; ">parallel::MPI</span></div><div style="margin: 0px 0px 0px 48px; text-indent: -48px; font-size: 13px; font-family: Arial; color: rgb(0, 105, 107); "><span class="Apple-tab-span" style="white-space:pre">                   </span>~2x faster than python</div><div style="margin: 0px 0px 0px 48px; text-indent: -48px; font-size: 13px; font-family: Arial; color: rgb(0, 105, 107); "><span class="Apple-tab-span" style="white-space:pre">                        </span>more version compatible</div><div style="margin: 0px 0px 0px 30px; text-indent: -30px; font-size: 13px; font-family: Arial; color: rgb(108, 103, 1); "><span class="Apple-tab-span" style="white-space:pre">               </span>python - very clear structure, swig module for c inclusion; non-standard installations, support</div><div style="margin: 0px 0px 0px 48px; text-indent: -48px; font-size: 13px; font-family: Arial; color: rgb(0, 105, 107); "><span class="Apple-tab-span" style="white-space:pre">                       </span>os.open: all c flags<span class="Apple-tab-span" style="white-space: pre; ">     </span></div><div style="margin: 0px 0px 0px 48px; text-indent: -48px; font-size: 13px; font-family: Arial; color: rgb(0, 105, 107); "><span class="Apple-tab-span" style="white-space: pre; ">                   </span>MPI bindings</div><div style="margin: 0px 0px 0px 48px; text-indent: -48px; font-size: 13px; font-family: Arial; color: rgb(0, 105, 107); "><span class="Apple-tab-span" style="white-space:pre">                  </span>tab/space requirements make remote editing more difficult</div><div style="margin: 0px 0px 0px 30px; text-indent: -30px; font-size: 13px; font-family: Arial; color: rgb(108, 103, 1); "><span class="Apple-tab-span" style="white-space:pre">             </span>cucumber - ruby based, difficult deployment</div><div style="margin: 0px 0px 0px 30px; text-indent: -30px; font-size: 13px; font-family: Arial; color: rgb(108, 103, 1); "><span class="Apple-tab-span" style="white-space:pre">           </span>java - easy deployment, dev environ, debugger, fast; must compile</div><div style="margin: 0px 0px 0px 30px; text-indent: -30px; font-size: 13px; font-family: Arial; color: rgb(108, 103, 1); "><span class="Apple-tab-span" style="white-space:pre">             </span>ruby - compact</div></div><div><br></div><div><br></div><div><div><a href="http://silicainsilico.wordpress.com/2012/03/26/switching-from-perl-to-python-speed/">http://silicainsilico.wordpress.com/2012/03/26/switching-from-perl-to-python-speed/</a></div><div><a href="http://tenser.typepad.com/tenser_said_the_tensor/2006/08/python_vs_perl_.html">http://tenser.typepad.com/tenser_said_the_tensor/2006/08/python_vs_perl_.html</a></div><div><a href="http://opennomad.com/content/performance-different-scripting-languages-shell-v-perl-v-python-v-ruby">http://opennomad.com/content/performance-different-scripting-languages-shell-v-perl-v-python-v-ruby</a></div><div><a href="http://hentenaar.com/serendipity/index.php?/archives/27-Benchmark-PHP-vs.-Python-vs.-Perl-vs.-Ruby.html">http://hentenaar.com/serendipity/index.php?/archives/27-Benchmark-PHP-vs.-Python-vs.-Perl-vs.-Ruby.html</a></div></div><div><br></div><div><br></div></body></html>