<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Apr 6, 2010, at 9:08 AM, David Cournapeau wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>Hi Travis,<br><br>On Tue, Apr 6, 2010 at 7:43 AM, Travis Oliphant &lt;<a href="mailto:oliphant@enthought.com">oliphant@enthought.com</a>&gt; wrote:<br><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">I should have some time over the next couple of weeks, and I am very<br></blockquote><blockquote type="cite">interested in refactoring the NumPy code to separate out the Python<br></blockquote><blockquote type="cite">interface layer from the "library" layer as much as possible. &nbsp; I had<br></blockquote><blockquote type="cite">some discussions with people at PyCon about making it easier for<br></blockquote><blockquote type="cite">Jython, IronPython, and perhaps even other high-level languages to<br></blockquote><blockquote type="cite">utilize NumPy.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Is there a willingness to consider as part of this reorganization<br></blockquote><blockquote type="cite">creating a clear boundary between the NumPy library code and the<br></blockquote><blockquote type="cite">Python-specific interface to it? &nbsp; What other re-organization thoughts<br></blockquote><blockquote type="cite">are you having David?<br></blockquote><br>This is mainly it, reorganizing the code for clearer boundaries<br>between boilerplate (python C API) and actual compuational code.<br>Besides helping other python implementations, I think this would<br>benefit NumPy itself in the long run (code maintainability), as well<br>as scipy (and other C extensions). I think the npymath effort is a<br>good example: albeit simple in nature (the API and boundaries are<br>obvious), it has already helped a lot to solve numerous platform<br>specific issues in numpy and scipy, and I think the overall code<br>quality is better.<br><br>My own goals were:<br> - exposing core computational parts through an exported C API, so<br>that other C extensions may use it (for example, exposing basic<br>blas/lapack operations)<br> - dynamic loading of the code (for example depending on the CPU<br>capabilities - I have a git branch somewhere where I started exposing<br>a simple C API to query cpu capabilities like cache size or SSE<br>dynamically to that intent)<br> - more amenable codebase: I think multiarray in particular is too<br>big. I don't know the code well enough to know what can be split and<br>how, but I would have hoped that the scalartypes, the type descriptor<br>could be put out of multiarray proper. Also, exposing an API for<br>things like fancy indexing would be very useful, but I don't know if<br>it even makes sense - I think a pure python implementation of fancy<br>indexing as a reference would be very useful for array-like classes (I<br>am thinking about scipy.sparse, for example).<br><br>Unfortunately, I won't be able to help much in the near future (except<br>maybe for the fancy indexing as this could be useful for my job),<br><br></div></blockquote><div><br></div><div>I understand. &nbsp; It just happens that there is some significant time for me to look at this over the next few weeks and I would really like to make progress on re-factoring. &nbsp; I think it's O.K. if you don't have time right now to help as long as you have time to offer criticism and suggestions. &nbsp;&nbsp;</div><div><br></div><div>We could even do that over Skype with whomever else wanted to join us (we could do a GotoMeeting discussion as well) if you think it would be faster to just talk in a group setting instead of email. &nbsp; &nbsp;&nbsp;Of course, a summary of any off-line discussion should be sent to the list.&nbsp;</div><div><br></div><div>Thanks for the input,&nbsp;</div><div><br></div><div>-Travis</div><div>&nbsp;&nbsp;</div><div><font class="Apple-style-span" size="3"><span class="Apple-style-span" style="font-size: 12px;"><span class="Apple-style-span" style="font-size: medium;"><br></span></span></font></div></div><div apple-content-edited="true"><br class="Apple-interchange-newline"> </div><br></body></html>