[Matrix-SIG] LLNLDistribution12beta

Paul F. Dubois dubois1@llnl.gov
Mon, 9 Aug 1999 11:44:15 -0700


This is a multi-part message in MIME format.

------=_NextPart_000_0009_01BEE25C.81A38B00
Content-Type: multipart/alternative;
	boundary="----=_NextPart_001_000A_01BEE25C.81A38B00"


------=_NextPart_001_000A_01BEE25C.81A38B00
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

ftp://ftp-icf.llnl.gov/pub/python/LLNLDistribution12beta.tgz is =
available. It contains substantial bug fixes to Gist, the =
EGCS-compatible CXX, and a beta version of Numeric. (Only Numeric is =
beta; the other packages contain no experiments that we are aware of).=20

Please, please, please read the release notes before trying this =
package. Numeric arrays can now be inherited from IN PYTHON: but only if =
you follow the directions.


------=_NextPart_001_000A_01BEE25C.81A38B00
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-8859-1" =
http-equiv=3DContent-Type>
<META content=3D"MSHTML 5.00.2614.3401" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT size=3D2><A=20
href=3D"ftp://ftp-icf.llnl.gov/pub/python/LLNLDistribution12beta.tgz">ftp=
://ftp-icf.llnl.gov/pub/python/LLNLDistribution12beta.tgz</A>=20
is available. It contains substantial bug fixes to Gist, the =
EGCS-compatible=20
CXX, and a beta version of Numeric. (Only Numeric is beta; the other =
packages=20
contain no experiments that we are aware of). </FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT size=3D2>Please, please, please read the release notes before =
trying=20
this package. Numeric arrays can now be inherited from IN PYTHON: but =
only if=20
you follow the directions.</FONT></DIV>
<DIV>&nbsp;</DIV></BODY></HTML>

------=_NextPart_001_000A_01BEE25C.81A38B00--

------=_NextPart_000_0009_01BEE25C.81A38B00
Content-Type: text/html;
	name="Release_Notes.htm"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="Release_Notes.htm"

<html>

<head>
<title></title>
</head>

<body>

<h1>Release notes for LLNLPython Distribution</h1>

<p>Send bug reports to <a =
href=3D"mailto:support@icf.llnl.gov">support@icf.llnl.gov</a>. </p>

<p>See the file <a =
href=3D"ftp://ftp-icf.llnl.gov/pub/python/README.html">README</a> for
information on sources, documentation, etc.</p>

<p>For package-specific information see the README files for each =
package:=20

<ul>
  <li><a href=3D"Numerical/README.htm">Numerical</a></li>
  <li><a href=3D"CXX/README.htm">CXX</a> </li>
  <li><a href=3D"PyPDB/README.htm">PyPDB</a> </li>
  <li><a href=3D"PyHistory/README.htm">PyHistory</a> </li>
  <li><a href=3D"RNG/README.htm">RNG</a> </li>
  <li><a href=3D"Graphics/README.htm">Graphics</a> </li>
</ul>

<hr>

<h2>Release 12 (beta)</h2>

<h3>CXX -- Building Python extensions with C++</h3>

<p>(Paul Dubois)</p>

<p>1. The long awaited day has arrived -- CXX compiles with EGCS! I have =
tested it with
snapshot 19990616 on a RedHat Linux 5.2 on a PC. EGCS requires a =
standard library class
random_access_iterator that is not yet available in some other compilers =
(such as Windows
VC6). Therefore a new switch:</p>

<p>STANDARD_LIBRARY_HAS_ITERATOR_TRAITS</p>

<p>has been added to CXX_Config.h that you may need to toggle if you get =
an error on the
two lines that mention random_access_iterator. The current definition is =
correct for VC6
and EGCS-19990616. </p>

<p>2. A new constructor was added to Module to allow construction from a =
string containing
the module name. A test was added for this to the demo.</p>

<p>3. In the demo CXX_array.h the include file was changed to =
Numeric/arrayobject.h.</p>

<h3>Numerical (BETA)</h3>

<p>Authors: John Barnard, David Ascher, Paul Dubois. </p>

<p><u>This is a beta release of the Numeric Extension.</u><br>
<br>
In addition to some bug fixes, the major feature of this release is that =
array objects are
now ExtensionClass objects. This is a major change and is likely to have =
some bugs. Do not
use this release for production work, but please exercise it and let us =
know of any bugs
(email bug reports to <a =
href=3D"mailto:support@icf.llnl.gov">support@icf.llnl.gov</a>).</p>

<h4>What are ExtensionClasses?</h4>

<p>The ExtensionClass (EC for short) mechanism was designed by Jim =
Fulton, of Digital
Creations. ExtensionClasses (EC) are documented at
http://www.digicool.com/releases/ExtensionClass. <br>
<br>
EC provides many features, but the one of most interest to us is the =
ability to subclass
in Python a Python type written in C.</p>

<h4>What features does this give the NumPy user right now?</h4>

<p>Not much so far. This is mostly groundwork for future features. The =
only significant
feature is that one can now use arrays produced by logical operations as =
masks in setting
elements in arrays. For example:</p>

<p>&gt;&gt;&gt; from Numeric import *<br>
&gt;&gt;&gt; x =3D arange(-4, 5)<br>
&gt;&gt;&gt; print x<br>
[-4 -3 -2 -1 0 1 2 3 4]<br>
&gt;&gt;&gt; x[less(x,0)] =3D 0 # new feature<br>
&gt;&gt;&gt; print x<br>
[0 0 0 0 0 1 2 3 4]<br>
<br>
This mechanism is currently limited to setting such 'masked' areas to =
scalars or arrays
that have the same shape as the target array, but contributions which =
extend this behavior
are wecome.</p>

<h4>What features can the NumPy user look forward to?</h4>

<p>There are plans or prototypes for various features, such as:<br>
<br>
* arrays with 'missing values'<br>
<br>
* data frame arrays as in S+<br>
<br>
* arrays with different casting or coercion rules<br>
<br>
If you have new kinds of arrays which you wish to have added, please =
contact <a
href=3D"mailto:support@icf.llnl.gov">support@icf.llnl.gov</a>.<br>
</p>

<h4>How does one use this?<br>
</h4>

<p>Look in Numeric.py at the code which defines the Array class and the =
MaskArray
subclass. All user-defined subclasses should subclass Array, which will =
be considered the
'default' class for NumPy code. (note that all Python-defined functions =
now return Array
instances by default).</p>

<h4>Things to watch out for:</h4>

<p>ExtensionClass subclasses are hybrids of Python code and C code. =
Mostly, one can use
them just as Python classes. However, it is very important that a =
subclass of Array with
an __init__ method call the __init__ method for Array (or =
_numpy.multiarray, the 'true'
base class), as that method will do the memory allocation required in =
C.</p>

<p>We know of at least one bug in the current release, and are working =
to track it down.
The purpose of the beta release is to elicit comments as well as bug =
report.</p>

<p>The C API should be 100% backwards compatible.</p>

<h4>Notes on the ExtensionClass code:</h4>

<p>The version of the software available at the digicool.com URL is not =
the latest
version, nor is it the one we used. The latest &quot;official&quot; EC =
code is part of the
Zope CVS tree, which is available either via CVS
(http://www.zope.org/Community/CVS_public_access) or through a
snapshot(http://starship.python.net/crew/da/zopedists/). The =
ExtensionClass code that we
use is derived from Jim Fulton's, but we will work with Jim Fulton to =
end this code fork
as soon as possible. Jim is aware of our changes and understands the =
need for the changes
(although he may choose a different solution, which we'd adjust to).</p>

<h4>Plans:</h4>

<p>The code in Numeric.py will be simplified.</p>

<p>&nbsp;</p>

<h4>Other changes:</h4>

<p>UserArray.py: changed indentation to all spaces for consistency. =
Fixed many bugs in
UserArray.py and Matrix.py (Charles Wadman)</p>

<p>Tools/installtool.py was modified to allow an extra argument that =
specifies the
directory into which the install will be made. Normally this is not =
necessary because the
python you use to run the script is the python into which the =
installation is made. Usage:<br>
python installthis.py Numeric prefix-dir<br>
(Holger Duerer) </p>

<p>MLab.py: made several constants explicitly decimal instead of integer =
to improve
performance, as suggested by Katsunori Waragai.</p>

<p>In the RNG package the include file was changed to =
Numeric/arrayobject.h.</p>

<h3>Tools</h3>

<p>The compile.py tool allows multiple &quot;configurations&quot; on =
Windows, works with
VC5 and VC6, and automatically builds the .pyd's unattended. (Mark =
Hammond, David Ascher).
</p>

<h2>Release 11 (April 1, 1999)</h2>

<h3>New Installation Procedure, Unix and Windows</h3>

<p>The install script (Tools/installtool.py) has been modified so that =
it uses the new
.pth facility in Python 1.5. This tool should work on Windows also. =
Instead of
distributing a Windows installer we will distribute a zip file and have =
the user run this
script. While not as elegant as an installer, it avoids all the problems =
we have had with
the installer.</p>

<p>Each package is installed in its own directory and a .pth file is =
created so that this
directory is included in the python path. The include files are =
installed inside the
Python include directory in their own file. Thus, after installation =
extension packages
wishing to use arrayobject.h in their build can use a statement =
like:</p>

<p>#include &quot;numeric/arrayobject.h&quot;</p>

<p>rather than further modify their compiler include path. A change to =
RNG has been made
to illustrate this capability.</p>

<h3>Gist</h3>

<p>Fixed error introduced in version 10 that caused segv.</p>

<h3>Numpy</h3>

<h4>Attribute&nbsp; information facility added</h4>

<p>The array object now has an attribute named &quot;attributes&quot;. =
This field can be
set or examined by using it as an attribute in a Python statement =
(x.attributes). The
purpose of this field is to make it easy for an application to attach =
information to an
array that might be used by another part of the software, such as a =
label for a curve, an
indication of units, etc. Its use and meaning is completely up to the =
user. It is copied
by copy.copy, but not much else. If otherwise not set it is None.</p>

<h5>Sample usage</h5>

<p>from Numeric import *<br>
def show(x):<br>
&nbsp;&nbsp;&nbsp; &quot;Display an array with a label&quot;<br>
&nbsp;&nbsp;&nbsp; if x.attributes:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print x.attributes['label'], =
' (',
x.attributes['units'], ')'<br>
&nbsp;&nbsp;&nbsp; print x</p>

<p>x =3D arange(5) * 0.5<br>
x.attributes=3D{&quot;label&quot;: &quot;x&quot;, &quot;units&quot;, =
&quot;cm&quot;}<br>
show(x)</p>

<h5>Note to extension writers</h5>

<p>This field is initialized to Py_None. This field is copied by =
PyArray_CopyArray. On
object deallocation, its reference count is decremented. Assignment to =
the attributes
field in Python is done reference-count correctly; if using this =
facility from C, you are
responsible for this. The recommended sequence to set attributes to foo =
is:</p>

<blockquote>
  <p>Py_INCREF(foo);<br>
  Py_DECREF(object-&gt;attributes);<br>
  object-&gt;attributes =3D foo;</p>
</blockquote>

<p>Never set attributes to NULL, but rather back to Py_None.</p>

<p>Users wishing to create a version of NumPy that does not have this =
facility may do so
by defining NUMPY_NOATTRIBUTES before compiling. </p>

<h4>Bug fixes</h4>

<p>Added change to array_zeros to fix problem in indices introduced by =
change in release
10. This was causing fromfunction to fail.<br>
Several warning errors in arrayobject.h and multiarrayobject.h were =
eliminated.<br>
Fixed bug in searchsorted with patch from Travis Oliphant. Can now =
determine the type of
result based on both inputs.</p>

<h2>Release 10 (March 18, 1999)</h2>

<h3>Gist</h3>

<p>Fixed mesh3d.py to handle tetrahedra, and to allow data of either =
type 'd' or type 'b'.<br>
Fixed slice3.py so that data type will not be changed.<br>
Numerous changes in slice2 and _slice2_part in gistCmodule to support =
data values of
either type 'b' or type 'd'.<br>
Bug fixes in gistCmodule: make sure result arrays are returned as =
Py_None in case a slice
is empty; clear the OWN_DATA pointer in a PyArrayObject when the pointer =
has been given to
a newly created object.<br>
The color card specification for a 3D object will now overrule the =
specification (if any)
for the Graph containing the object.<br>
The default style sheet for a Graph3d will be &quot;nobox.gs&quot;. A =
Graph3D style
specification will be overruled by &quot;z_nobox.gs&quot; if a color bar =
is requested,
otherwise uncritically accepted.</p>

<h3>Numpy</h3>

<p>Fixed a bug in the NumPy exponentiation routine which was causing a =
SEGV when an array
of Python longs was an argument.<br>
Fixed memory leak in array to list conversion. (Jonah Lee)<br>
Fixed segv if you attempt to delete an array element. (Warren Focke)<br>
Fixed bug in convolve in multiarray.c (Travis Oliphant)<br>
Added missing #!... to makethis.py in Numerical (Pearu Peterson, who =
also reported Gist
probs).<br>
Fixed documentation of clip. (Andrew Sterian)<br>
Changed array so that it will accept a typecode of None. This allows =
simplifications to
indices, asarray, and UserArray. (Keith Junius)<br>
Performance improvement for FFT.py (Konrad Hinsen)<br>
</p>

<h3>PDB</h3>

<p>Added import_array to PyPDB module init routine.</p>

<p>&nbsp;</p>

<h2>Release 8 (December 28, 1998)</h2>

<p>Fixes to Matlab.py and Numerical.py in Numerical<br>
Changed CXX_Extensions.py to match 1.5.2's definition of the type table. =
Assume this would
no longer compile with previous Pythons.</p>

<h2>Release 7 (December 21, 1998)</h2>

<ul>
  <li>Numerical -- described in <a =
href=3D"Numerical/README.htm">Numerical/README.htm</a></li>
  <li>There have been bugs reported when loading on a platform where =
there is a native version
    of the BLAS or LAPACK. Somehow there is a confusion between =
different versions of the
    routines. Please be sure to alter the file Setup to remove the files =
indicated from the
    build of module lapack_lite and to set the location of your =
libraries appropriately if
    working on such a platform.</li>
</ul>

<h2>Release 6 (October 7, 1998)</h2>

<ul>
  <li>Numerical -- described in <a =
href=3D"Numerical/README.htm">Numerical/README.htm</a></li>
  <li>Graphics -- extensive bug fixes in Gist package.</li>
  <li>PyPDB -- removed dependency missing file EB.py</li>
  <li>PyHistory -- See xfiles.llnl.gov documentation. columnar_history =
folded into history
    module.</li>
  <li>CXX -- Beta release, still in development.</li>
</ul>

<h2>Release 5 (August 20, 1998)</h2>

<ul>
  <li>Changes to Numerical, Gist (see their README files) </li>
  <li>Removed multiarray comparisons, and changed &quot;bitwise_&quot; =
operations to
    &quot;boolean_&quot; operations, per latest changes in NumPy (Zane =
Motteler).</li>
  <li>Added automatic installation script (first version) (David =
Ascher)</li>
  <li>Changed all references to LEGAL.LLNL in .py and .c files to =
Legal.htm (Zane Motteler).</li>
  <li>Changed Konrad Hinsen's URL in various documents and in =
RNGtest2.py to the starship one
    (Zane Motteler).</li>
  <li>PyHistory upgraded to version 2. Documentation now available in =
this distribution as
    well as on web site. Function event changed to event_tag for =
consistency. Columnar text
    tags now in history.py rather than a separate module.</li>
</ul>

<h2>Release 4 (June 19, 1998)</h2>

<ul>
  <li>Added Complex class to CXX. </li>
  <li>Release 1.3 of Numerical fixes bugs in LAPack, Matrix.py. See =
README in Numerical.</li>
</ul>

<h2>Release 3 (June 12, 1998)</h2>

<ul>
  <li>Fixes to Gist files required by the changes to NumPy. </li>
  <li>Bug fix to Numerical/Lib/UserArray.py.</li>
  <li>Renamed CXX/cxxmodule.cxx to cxxsupport.cxx since it isn't a =
Python module.</li>
</ul>

<h2>Release 2 (June 5, 1998)</h2>

<h3>General</h3>

<ul>
  <li>Several &quot;Setup&quot; files had a space after the *shared* =
which mixed up FreeBSD.
    (Thomas Gellekum).</li>
</ul>

<h3>NumPy</h3>

<ul>
  <li>See <a =
href=3D"Numerical/README.htm">Numerical/README.htm</a>.</li>
</ul>

<h3>Gist</h3>

<ul>
  <li>Bug fixes in Gist3D/Demo/gistdemohigh.py, Gist3D/Lib/quadmesh.py =
(Thomas Gellekum). </li>
</ul>

<h2>Release 1 (May, 1998)</h2>

<p>This release contains all the Python extension packages currently =
maintained by LLNL.
It supercedes the previous system of distributing our work as part of a =
complete Python
source tree.&nbsp; </p>
</body>
</html>

------=_NextPart_000_0009_01BEE25C.81A38B00--