| .. -*- rest -*- | |
| ========================= | |
| F2PY History | |
| ========================= | |
| :Author: Pearu Peterson <[email protected]> | |
| :Web-site: http://cens.ioc.ee/projects/f2py2e/ | |
| :Date: $Date: 2005/09/16 08:36:45 $ | |
| :Revision: $Revision: 1.191 $ | |
| .. Contents:: | |
| Release 2.46.243 | |
| ===================== | |
| * common_rules.py | |
| - Fixed compiler warnings. | |
| * fortranobject.c | |
| - Fixed another dims calculation bug. | |
| - Fixed dims calculation bug and added the corresponding check. | |
| - Accept higher dimensional arrays if their effective rank matches. | |
| Effective rank is multiplication of non-unit dimensions. | |
| * f2py2e.py | |
| - Added support for numpy.distutils version 0.4.0. | |
| * Documentation | |
| - Added example about ``intent(callback,hide)`` usage. Updates. | |
| - Updated FAQ. | |
| * cb_rules.py | |
| - Fixed missing need kw error. | |
| - Fixed getting callback non-existing extra arguments. | |
| - External callback functions and extra_args can be set via | |
| ext.module namespace. | |
| - Avoid crash when external callback function is not set. | |
| * rules.py | |
| - Enabled ``intent(out)`` for ``intent(aux)`` non-complex scalars. | |
| - Fixed splitting lines in F90 fixed form mode. | |
| - Fixed FORTRANAME typo, relevant when wrapping scalar functions with | |
| ``--no-wrap-functions``. | |
| - Improved failure handling for callback functions. | |
| - Fixed bug in writting F90 wrapper functions when a line length | |
| is exactly 66. | |
| * cfuncs.py | |
| - Fixed dependency issue with typedefs. | |
| - Introduced ``-DUNDERSCORE_G77`` that cause extra underscore to be | |
| used for external names that contain an underscore. | |
| * capi_maps.py | |
| - Fixed typos. | |
| - Fixed using complex cb functions. | |
| * crackfortran.py | |
| - Introduced parent_block key. Get ``use`` statements recursively | |
| from parent blocks. | |
| - Apply parameter values to kindselectors. | |
| - Fixed bug evaluating ``selected_int_kind`` function. | |
| - Ignore Name and Syntax errors when evaluating scalars. | |
| - Treat ``<int>_intType`` as ``<int>`` in get_parameters. | |
| - Added support for F90 line continuation in fix format mode. | |
| - Include optional attribute of external to signature file. | |
| - Add ``entry`` arguments to variable lists. | |
| - Treat \xa0 character as space. | |
| - Fixed bug where __user__ callback subroutine was added to its | |
| argument list. | |
| - In strict 77 mode read only the first 72 columns. | |
| - Fixed parsing ``v(i) = func(r)``. | |
| - Fixed parsing ``integer*4::``. | |
| - Fixed parsing ``1.d-8`` when used as a parameter value. | |
| Release 2.45.241_1926 | |
| ===================== | |
| * diagnose.py | |
| - Clean up output. | |
| * cb_rules.py | |
| - Fixed ``_cpointer`` usage for subroutines. | |
| - Fortran function ``_cpointer`` can be used for callbacks. | |
| * func2subr.py | |
| - Use result name when wrapping functions with subroutines. | |
| * f2py2e.py | |
| - Fixed ``--help-link`` switch. | |
| - Fixed ``--[no-]lower`` usage with ``-c`` option. | |
| - Added support for ``.pyf.src`` template files. | |
| * __init__.py | |
| - Using ``exec_command`` in ``compile()``. | |
| * setup.py | |
| - Clean up. | |
| - Disabled ``need_numpy_distutils`` function. From now on it is assumed | |
| that proper version of ``numpy_distutils`` is already installed. | |
| * capi_maps.py | |
| - Added support for wrapping unsigned integers. In a .pyf file | |
| ``integer(-1)``, ``integer(-2)``, ``integer(-4)`` correspond to | |
| ``unsigned char``, ``unsigned short``, ``unsigned`` C types, | |
| respectively. | |
| * tests/c/return_real.py | |
| - Added tests to wrap C functions returning float/double. | |
| * fortranobject.c | |
| - Added ``_cpointer`` attribute to wrapped objects. | |
| * rules.py | |
| - ``_cpointer`` feature for wrapped module functions is not | |
| functional at the moment. | |
| - Introduced ``intent(aux)`` attribute. Useful to save a value | |
| of a parameter to auxiliary C variable. Note that ``intent(aux)`` | |
| implies ``intent(c)``. | |
| - Added ``usercode`` section. When ``usercode`` is used in ``python | |
| module`` block twise then the contents of the second multi-line | |
| block is inserted after the definition of external routines. | |
| - Call-back function arguments can be CObjects. | |
| * cfuncs.py | |
| - Allow call-back function arguments to be fortran objects. | |
| - Allow call-back function arguments to be built-in functions. | |
| * crackfortran.py | |
| - Fixed detection of a function signature from usage example. | |
| - Cleaned up -h output for intent(callback) variables. | |
| - Repair malformed argument list (missing argument name). | |
| - Warn on the usage of multiple attributes without type specification. | |
| - Evaluate only scalars ``<initexpr>`` (e.g. not of strings). | |
| - Evaluate ``<initexpr>`` using parameters name space. | |
| - Fixed resolving `<name>(<args>)[result(<result>)]` pattern. | |
| - ``usercode`` can be used more than once in the same context. | |
| Release 2.43.239_1831 | |
| ===================== | |
| * auxfuncs.py | |
| - Made ``intent(in,inplace)`` to mean ``intent(inplace)``. | |
| * f2py2e.py | |
| - Intoduced ``--help-link`` and ``--link-<resource>`` | |
| switches to link generated extension module with system | |
| ``<resource>`` as defined by numpy_distutils/system_info.py. | |
| * fortranobject.c | |
| - Patch to make PyArray_CanCastSafely safe on 64-bit machines. | |
| Fixes incorrect results when passing ``array('l')`` to | |
| ``real*8 intent(in,out,overwrite)`` arguments. | |
| * rules.py | |
| - Avoid empty continuation lines in Fortran wrappers. | |
| * cfuncs.py | |
| - Adding ``\0`` at the end of a space-padded string, fixes tests | |
| on 64-bit Gentoo. | |
| * crackfortran.py | |
| - Fixed splitting lines with string parameters. | |
| Release 2.43.239_1806 | |
| ===================== | |
| * Tests | |
| - Fixed test site that failed after padding strings with spaces | |
| instead of zeros. | |
| * Documentation | |
| - Documented ``intent(inplace)`` attribute. | |
| - Documented ``intent(callback)`` attribute. | |
| - Updated FAQ, added Users Feedback section. | |
| * cfuncs.py | |
| - Padding longer (than provided from Python side) strings with spaces | |
| (that is Fortran behavior) instead of nulls (that is C strncpy behavior). | |
| * f90mod_rules.py | |
| - Undoing rmbadnames in Python and Fortran layers. | |
| * common_rules.py | |
| - Renaming common block items that have names identical to C keywords. | |
| - Fixed wrapping blank common blocks. | |
| * fortranobject.h | |
| - Updated numarray (0.9, 1.0, 1.1) support (patch by Todd Miller). | |
| * fortranobject.c | |
| - Introduced ``intent(inplace)`` feature. | |
| - Fix numarray reference counts (patch by Todd). | |
| - Updated numarray (0.9, 1.0, 1.1) support (patch by Todd Miller). | |
| - Enabled F2PY_REPORT_ON_ARRAY_COPY for Numarray. | |
| * capi_maps.py | |
| - Always normalize .f2py_f2cmap keys to lower case. | |
| * rules.py | |
| - Disabled ``index`` macro as it conflicts with the one defined | |
| in string.h. | |
| - Moved ``externroutines`` up to make it visible to ``usercode``. | |
| - Fixed bug in f90 code generation: no empty line continuation is | |
| allowed. | |
| - Fixed undefined symbols failure when ``fortranname`` is used | |
| to rename a wrapped function. | |
| - Support for ``entry`` statement. | |
| * auxfuncs.py | |
| - Made is* functions more robust with respect to parameters that | |
| have no typespec specified. | |
| - Using ``size_t`` instead of ``int`` as the type of string | |
| length. Fixes issues on 64-bit platforms. | |
| * setup.py | |
| - Fixed bug of installing ``f2py`` script as ``.exe`` file. | |
| * f2py2e.py | |
| - ``--compiler=`` and ``--fcompiler=`` can be specified at the same time. | |
| * crackfortran.py | |
| - Fixed dependency detection for non-intent(in|inout|inplace) arguments. | |
| They must depend on their dimensions, not vice-versa. | |
| - Don't match ``!!f2py`` as a start of f2py directive. | |
| - Only effective intent attributes will be output to ``-h`` target. | |
| - Introduced ``intent(callback)`` to build interface between Python | |
| functions and Fortran external routines. | |
| - Avoid including external arguments to __user__ modules. | |
| - Initial hooks to evaluate ``kind`` and ``selected_int_kind``. | |
| - Evaluating parameters in {char,kind}selectors and applying rmbadname. | |
| - Evaluating parameters using also module parameters. Fixed the order | |
| of parameter evaluation. | |
| - Fixed silly bug: when block name was not lower cased, it was not | |
| recognized correctly. | |
| - Applying mapping '.false.'->'False', '.true.'->'True' to logical | |
| parameters. TODO: Support for logical expressions is needed. | |
| - Added support for multiple statements in one line (separated with semicolon). | |
| - Impl. get_useparameters function for using parameter values from | |
| other f90 modules. | |
| - Applied Bertholds patch to fix bug in evaluating expressions | |
| like ``1.d0/dvar``. | |
| - Fixed bug in reading string parameters. | |
| - Evaluating parameters in charselector. Code cleanup. | |
| - Using F90 module parameters to resolve kindselectors. | |
| - Made the evaluation of module data init-expression more robust. | |
| - Support for ``entry`` statement. | |
| - Fixed ``determineexprtype`` that in the case of parameters | |
| returned non-dictionary objects. | |
| - Use ``-*- fix -*-`` to specify that a file is in fixed format. | |
| Release 2.39.235_1693 | |
| ===================== | |
| * fortranobject.{h,c} | |
| - Support for allocatable string arrays. | |
| * cfuncs.py | |
| - Call-back arguments can now be also instances that have ``__call__`` method | |
| as well as instance methods. | |
| * f2py2e.py | |
| - Introduced ``--include_paths <path1>:<path2>:..`` command line | |
| option. | |
| - Added ``--compiler=`` support to change the C/C++ compiler from | |
| f2py command line. | |
| * capi_maps.py | |
| - Handle ``XDY`` parameter constants. | |
| * crackfortran.py | |
| - Handle ``XDY`` parameter constants. | |
| - Introduced formatpattern to workaround a corner case where reserved | |
| keywords are used in format statement. Other than that, format pattern | |
| has no use. | |
| - Parameters are now fully evaluated. | |
| * More splitting of documentation strings. | |
| * func2subr.py - fixed bug for function names that f77 compiler | |
| would set ``integer`` type. | |
| Release 2.39.235_1660 | |
| ===================== | |
| * f2py2e.py | |
| - Fixed bug in using --f90flags=.. | |
| * f90mod_rules.py | |
| - Splitted generated documentation strings (to avoid MSVC issue when | |
| string length>2k) | |
| - Ignore ``private`` module data. | |
| Release 2.39.235_1644 | |
| ===================== | |
| :Date:24 February 2004 | |
| * Character arrays: | |
| - Finished complete support for character arrays and arrays of strings. | |
| - ``character*n a(m)`` is treated like ``character a(m,n)`` with ``intent(c)``. | |
| - Character arrays are now considered as ordinary arrays (not as arrays | |
| of strings which actually didn't work). | |
| * docs | |
| - Initial f2py manpage file f2py.1. | |
| - Updated usersguide and other docs when using numpy_distutils 0.2.2 | |
| and up. | |
| * capi_maps.py | |
| - Try harder to use .f2py_f2cmap mappings when kind is used. | |
| * crackfortran.py | |
| - Included files are first search in the current directory and | |
| then from the source file directory. | |
| - Ignoring dimension and character selector changes. | |
| - Fixed bug in Fortran 90 comments of fixed format. | |
| - Warn when .pyf signatures contain undefined symbols. | |
| - Better detection of source code formats. Using ``-*- fortran -*-`` | |
| or ``-*- f90 -*-`` in the first line of a Fortran source file is | |
| recommended to help f2py detect the format, fixed or free, | |
| respectively, correctly. | |
| * cfuncs.py | |
| - Fixed intent(inout) scalars when typecode=='l'. | |
| - Fixed intent(inout) scalars when not using numarray. | |
| - Fixed intent(inout) scalars when using numarray. | |
| * diagnose.py | |
| - Updated for numpy_distutils 0.2.2 and up. | |
| - Added numarray support to diagnose. | |
| * fortranobject.c | |
| - Fixed nasty bug with intent(in,copy) complex slice arrays. | |
| - Applied Todd's patch to support numarray's byteswapped or | |
| misaligned arrays, requires numarray-0.8 or higher. | |
| * f2py2e.py | |
| - Applying new hooks for numpy_distutils 0.2.2 and up, keeping | |
| backward compatibility with depreciation messages. | |
| - Using always os.system on non-posix platforms in f2py2e.compile | |
| function. | |
| * rules.py | |
| - Changed the order of buildcallback and usercode junks. | |
| * setup.cfg | |
| - Added so that docs/ and tests/ directories are included to RPMs. | |
| * setup.py | |
| - Installing f2py.py instead of f2py.bat under NT. | |
| - Introduced ``--with-numpy_distutils`` that is useful when making | |
| f2py tar-ball with numpy_distutils included. | |
| Release 2.37.233-1545 | |
| ===================== | |
| :Date: 11 September 2003 | |
| * rules.py | |
| - Introduced ``interface_usercode`` replacement. When ``usercode`` | |
| statement is used inside the first interface block, its contents | |
| will be inserted at the end of initialization function of a F2PY | |
| generated extension module (feature request: Berthold H�llmann). | |
| - Introduced auxiliary function ``as_column_major_storage`` that | |
| converts input array to an array with column major storage order | |
| (feature request: Hans Petter Langtangen). | |
| * crackfortran.py | |
| - Introduced ``pymethoddef`` statement. | |
| * cfuncs.py | |
| - Fixed "#ifdef in #define TRYPYARRAYTEMPLATE" bug (patch thanks | |
| to Bernhard Gschaider) | |
| * auxfuncs.py | |
| - Introduced ``getpymethod`` function. | |
| - Enabled multi-line blocks in ``callprotoargument`` statement. | |
| * f90mod_rules.py | |
| - Undone "Fixed Warning 43 emitted by Intel Fortran compiler" that | |
| causes (curios) segfaults. | |
| * fortranobject.c | |
| - Fixed segfaults (that were introduced with recent memory leak | |
| fixes) when using allocatable arrays. | |
| - Introduced F2PY_REPORT_ON_ARRAY_COPY CPP macro int-variable. If defined | |
| then a message is printed to stderr whenever a copy of an array is | |
| made and arrays size is larger than F2PY_REPORT_ON_ARRAY_COPY. | |
| Release 2.35.229-1505 | |
| ===================== | |
| :Date: 5 August 2003 | |
| * General | |
| - Introduced ``usercode`` statement (dropped ``c_code`` hooks). | |
| * setup.py | |
| - Updated the CVS location of numpy_distutils. | |
| * auxfuncs.py | |
| - Introduced ``isint1array(var)`` for fixing ``integer*1 intent(out)`` | |
| support. | |
| * tests/f77/callback.py | |
| Introduced some basic tests. | |
| * src/fortranobject.{c,h} | |
| - Fixed memory leaks when getting/setting allocatable arrays. | |
| (Bug report by Bernhard Gschaider) | |
| - Initial support for numarray (Todd Miller's patch). Use -DNUMARRAY | |
| on the f2py command line to enable numarray support. Note that | |
| there is no character arrays support and these hooks are not | |
| tested with F90 compilers yet. | |
| * cfuncs.py | |
| - Fixed reference counting bug that appeared when constructing extra | |
| argument list to callback functions. | |
| - Added ``NPY_LONG != NPY_INT`` test. | |
| * f2py2e.py | |
| Undocumented ``--f90compiler``. | |
| * crackfortran.py | |
| - Introduced ``usercode`` statement. | |
| - Fixed newlines when outputting multi-line blocks. | |
| - Optimized ``getlincoef`` loop and ``analyzevars`` for cases where | |
| len(vars) is large. | |
| - Fixed callback string argument detection. | |
| - Fixed evaluating expressions: only int|float expressions are | |
| evaluated succesfully. | |
| * docs | |
| Documented -DF2PY_REPORT_ATEXIT feature. | |
| * diagnose.py | |
| Added CPU information and sys.prefix printout. | |
| * tests/run_all.py | |
| Added cwd to PYTHONPATH. | |
| * tests/f??/return_{real,complex}.py | |
| Pass "infinity" check in SunOS. | |
| * rules.py | |
| - Fixed ``integer*1 intent(out)`` support | |
| - Fixed free format continuation of f2py generated F90 files. | |
| * tests/mixed/ | |
| Introduced tests for mixing Fortran 77, Fortran 90 fixed and free | |
| format codes in one module. | |
| * f90mod_rules.py | |
| - Fixed non-prototype warnings. | |
| - Fixed Warning 43 emitted by Intel Fortran compiler. | |
| - Avoid long lines in Fortran codes to reduce possible problems with | |
| continuations of lines. | |
| Public Release 2.32.225-1419 | |
| ============================ | |
| :Date: 8 December 2002 | |
| * docs/usersguide/ | |
| Complete revision of F2PY Users Guide | |
| * tests/run_all.py | |
| - New file. A Python script to run all f2py unit tests. | |
| * Removed files: buildmakefile.py, buildsetup.py. | |
| * tests/f77/ | |
| - Added intent(out) scalar tests. | |
| * f2py_testing.py | |
| - Introduced. It contains jiffies, memusage, run, cmdline functions | |
| useful for f2py unit tests site. | |
| * setup.py | |
| - Install numpy_distutils only if it is missing or is too old | |
| for f2py. | |
| * f90modrules.py | |
| - Fixed wrapping f90 module data. | |
| - Fixed wrapping f90 module subroutines. | |
| - Fixed f90 compiler warnings for wrapped functions by using interface | |
| instead of external stmt for functions. | |
| * tests/f90/ | |
| - Introduced return_*.py tests. | |
| * func2subr.py | |
| - Added optional signature argument to createfuncwrapper. | |
| - In f2pywrappers routines, declare external, scalar, remaining | |
| arguments in that order. Fixes compiler error 'Invalid declaration' | |
| for:: | |
| real function foo(a,b) | |
| integer b | |
| real a(b) | |
| end | |
| * crackfortran.py | |
| - Removed first-line comment information support. | |
| - Introduced multiline block. Currently usable only for | |
| ``callstatement`` statement. | |
| - Improved array length calculation in getarrlen(..). | |
| - "From sky" program group is created only if ``groupcounter<1``. | |
| See TODO.txt. | |
| - Added support for ``dimension(n:*)``, ``dimension(*:n)``. They are | |
| treated as ``dimesnion(*)`` by f2py. | |
| - Fixed parameter substitution (this fixes TODO item by Patrick | |
| LeGresley, 22 Aug 2001). | |
| * f2py2e.py | |
| - Disabled all makefile, setup, manifest file generation hooks. | |
| - Disabled --[no]-external-modroutines option. All F90 module | |
| subroutines will have Fortran/C interface hooks. | |
| - --build-dir can be used with -c option. | |
| - only/skip modes can be used with -c option. | |
| - Fixed and documented `-h stdout` feature. | |
| - Documented extra options. | |
| - Introduced --quiet and --verbose flags. | |
| * cb_rules.py | |
| - Fixed debugcapi hooks for intent(c) scalar call-back arguments | |
| (bug report: Pierre Schnizer). | |
| - Fixed intent(c) for scalar call-back arguments. | |
| - Improved failure reports. | |
| * capi_maps.py | |
| - Fixed complex(kind=..) to C type mapping bug. The following hold | |
| complex==complex(kind=4)==complex*8, complex(kind=8)==complex*16 | |
| - Using signed_char for integer*1 (bug report: Steve M. Robbins). | |
| - Fixed logical*8 function bug: changed its C correspondence to | |
| long_long. | |
| - Fixed memory leak when returning complex scalar. | |
| * __init__.py | |
| - Introduced a new function (for f2py test site, but could be useful | |
| in general) ``compile(source[,modulename,extra_args])`` for | |
| compiling fortran source codes directly from Python. | |
| * src/fortranobject.c | |
| - Multi-dimensional common block members and allocatable arrays | |
| are returned as Fortran-contiguous arrays. | |
| - Fixed NULL return to Python without exception. | |
| - Fixed memory leak in getattr(<fortranobj>,'__doc__'). | |
| - <fortranobj>.__doc__ is saved to <fortranobj>.__dict__ (previously | |
| it was generated each time when requested). | |
| - Fixed a nasty typo from the previous item that caused data | |
| corruption and occasional SEGFAULTs. | |
| - array_from_pyobj accepts arbitrary rank arrays if the last dimension | |
| is undefined. E.g. dimension(3,*) accepts a(3,4,5) and the result is | |
| array with dimension(3,20). | |
| - Fixed (void*) casts to make g++ happy (bug report: eric). | |
| - Changed the interface of ARR_IS_NULL macro to avoid "``NULL used in | |
| arithmetics``" warnings from g++. | |
| * src/fortranobject.h | |
| - Undone previous item. Defining NO_IMPORT_ARRAY for | |
| src/fortranobject.c (bug report: travis) | |
| - Ensured that PY_ARRAY_UNIQUE_SYMBOL is defined only for | |
| src/fortranobject.c (bug report: eric). | |
| * rules.py | |
| - Introduced dummy routine feature. | |
| - F77 and F90 wrapper subroutines (if any) as saved to different | |
| files, <modulename>-f2pywrappers.f and <modulename>-f2pywrappers2.f90, | |
| respectively. Therefore, wrapping F90 requires numpy_distutils >= | |
| 0.2.0_alpha_2.229. | |
| - Fixed compiler warnings about meaningless ``const void (*f2py_func)(..)``. | |
| - Improved error messages for ``*_from_pyobj``. | |
| - Changed __CPLUSPLUS__ macros to __cplusplus (bug report: eric). | |
| - Changed (void*) casts to (f2py_init_func) (bug report: eric). | |
| - Removed unnecessary (void*) cast for f2py_has_column_major_storage | |
| in f2py_module_methods definition (bug report: eric). | |
| - Changed the interface of f2py_has_column_major_storage function: | |
| removed const from the 1st argument. | |
| * cfuncs.py | |
| - Introduced -DPREPEND_FORTRAN. | |
| - Fixed bus error on SGI by using PyFloat_AsDouble when ``__sgi`` is defined. | |
| This seems to be `know bug`__ with Python 2.1 and SGI. | |
| - string_from_pyobj accepts only arrays whos elements size==sizeof(char). | |
| - logical scalars (intent(in),function) are normalized to 0 or 1. | |
| - Removed NUMFROMARROBJ macro. | |
| - (char|short)_from_pyobj now use int_from_pyobj. | |
| - (float|long_double)_from_pyobj now use double_from_pyobj. | |
| - complex_(float|long_double)_from_pyobj now use complex_double_from_pyobj. | |
| - Rewrote ``*_from_pyobj`` to be more robust. This fixes segfaults if | |
| getting * from a string. Note that int_from_pyobj differs | |
| from PyNumber_Int in that it accepts also complex arguments | |
| (takes the real part) and sequences (takes the 1st element). | |
| - Removed unnecessary void* casts in NUMFROMARROBJ. | |
| - Fixed casts in ``*_from_pyobj`` functions. | |
| - Replaced CNUMFROMARROBJ with NUMFROMARROBJ. | |
| .. __: http://sourceforge.net/tracker/index.php?func=detail&aid=435026&group_id=5470&atid=105470 | |
| * auxfuncs.py | |
| - Introduced isdummyroutine(). | |
| - Fixed islong_* functions. | |
| - Fixed isintent_in for intent(c) arguments (bug report: Pierre Schnizer). | |
| - Introduced F2PYError and throw_error. Using throw_error, f2py | |
| rejects illegal .pyf file constructs that otherwise would cause | |
| compilation failures or python crashes. | |
| - Fixed islong_long(logical*8)->True. | |
| - Introduced islogical() and islogicalfunction(). | |
| - Fixed prototype string argument (bug report: eric). | |
| * Updated README.txt and doc strings. Starting to use docutils. | |
| * Speed up for ``*_from_pyobj`` functions if obj is a sequence. | |
| * Fixed SegFault (reported by M.Braun) due to invalid ``Py_DECREF`` | |
| in ``GETSCALARFROMPYTUPLE``. | |
| Older Releases | |
| ============== | |
| :: | |
| *** Fixed missing includes when wrapping F90 module data. | |
| *** Fixed typos in docs of build_flib options. | |
| *** Implemented prototype calculator if no callstatement or | |
| callprotoargument statements are used. A warning is issued if | |
| callstatement is used without callprotoargument. | |
| *** Fixed transposing issue with array arguments in callback functions. | |
| *** Removed -pyinc command line option. | |
| *** Complete tests for Fortran 77 functions returning scalars. | |
| *** Fixed returning character bug if --no-wrap-functions. | |
| *** Described how to wrap F compiled Fortran F90 module procedures | |
| with F2PY. See doc/using_F_compiler.txt. | |
| *** Fixed the order of build_flib options when using --fcompiler=... | |
| *** Recognize .f95 and .F95 files as Fortran sources with free format. | |
| *** Cleaned up the output of 'f2py -h': removed obsolete items, | |
| added build_flib options section. | |
| *** Added --help-compiler option: it lists available Fortran compilers | |
| as detected by numpy_distutils/command/build_flib.py. This option | |
| is available only with -c option. | |
| :Release: 2.13.175-1250 | |
| :Date: 4 April 2002 | |
| :: | |
| *** Fixed copying of non-contigious 1-dimensional arrays bug. | |
| (Thanks to Travis O.). | |
| :Release: 2.13.175-1242 | |
| :Date: 26 March 2002 | |
| :: | |
| *** Fixed ignoring type declarations. | |
| *** Turned F2PY_REPORT_ATEXIT off by default. | |
| *** Made MAX,MIN macros available by default so that they can be | |
| always used in signature files. | |
| *** Disabled F2PY_REPORT_ATEXIT for FreeBSD. | |
| :Release: 2.13.175-1233 | |
| :Date: 13 March 2002 | |
| :: | |
| *** Fixed Win32 port when using f2py.bat. (Thanks to Erik Wilsher). | |
| *** F2PY_REPORT_ATEXIT is disabled for MACs. | |
| *** Fixed incomplete dependency calculator. | |
| :Release: 2.13.175-1222 | |
| :Date: 3 March 2002 | |
| :: | |
| *** Plugged a memory leak for intent(out) arrays with overwrite=0. | |
| *** Introduced CDOUBLE_to_CDOUBLE,.. functions for copy_ND_array. | |
| These cast functions probably work incorrectly in Numeric. | |
| :Release: 2.13.175-1212 | |
| :Date: 23 February 2002 | |
| :: | |
| *** Updated f2py for the latest numpy_distutils. | |
| *** A nasty bug with multi-dimensional Fortran arrays is fixed | |
| (intent(out) arrays had wrong shapes). (Thanks to Eric for | |
| pointing out this bug). | |
| *** F2PY_REPORT_ATEXIT is disabled by default for __WIN32__. | |
| :Release: 2.11.174-1161 | |
| :Date: 14 February 2002 | |
| :: | |
| *** Updated f2py for the latest numpy_distutils. | |
| *** Fixed raise error when f2py missed -m flag. | |
| *** Script name `f2py' now depends on the name of python executable. | |
| For example, `python2.2 setup.py install' will create a f2py | |
| script with a name `f2py2.2'. | |
| *** Introduced 'callprotoargument' statement so that proper prototypes | |
| can be declared. This is crucial when wrapping C functions as it | |
| will fix segmentation faults when these wrappers use non-pointer | |
| arguments (thanks to R. Clint Whaley for explaining this to me). | |
| Note that in f2py generated wrapper, the prototypes have | |
| the following forms: | |
| extern #rtype# #fortranname#(#callprotoargument#); | |
| or | |
| extern #rtype# F_FUNC(#fortranname#,#FORTRANNAME#)(#callprotoargument#); | |
| *** Cosmetic fixes to F2PY_REPORT_ATEXIT feature. | |
| :Release: 2.11.174-1146 | |
| :Date: 3 February 2002 | |
| :: | |
| *** Reviewed reference counting in call-back mechanism. Fixed few bugs. | |
| *** Enabled callstatement for complex functions. | |
| *** Fixed bug with initializing capi_overwrite_<varname> | |
| *** Introduced intent(overwrite) that is similar to intent(copy) but | |
| has opposite effect. Renamed copy_<name>=1 to overwrite_<name>=0. | |
| intent(overwrite) will make default overwrite_<name>=1. | |
| *** Introduced intent(in|inout,out,out=<name>) attribute that renames | |
| arguments name when returned. This renaming has effect only in | |
| documentation strings. | |
| *** Introduced 'callstatement' statement to pyf file syntax. With this | |
| one can specify explicitly how wrapped function should be called | |
| from the f2py generated module. WARNING: this is a dangerous feature | |
| and should be used with care. It is introduced to provide a hack | |
| to construct wrappers that may have very different signature | |
| pattern from the wrapped function. Currently 'callstatement' can | |
| be used only inside a subroutine or function block (it should be enough | |
| though) and must be only in one continuous line. The syntax of the | |
| statement is: callstatement <C-expression>; | |
| :Release: 2.11.174 | |
| :Date: 18 January 2002 | |
| :: | |
| *** Fixed memory-leak for PyFortranObject. | |
| *** Introduced extra keyword argument copy_<varname> for intent(copy) | |
| variables. It defaults to 1 and forces to make a copy for | |
| intent(in) variables when passing on to wrapped functions (in case | |
| they undesirably change the variable in-situ). | |
| *** Introduced has_column_major_storage member function for all f2py | |
| generated extension modules. It is equivalent to Python call | |
| 'transpose(obj).iscontiguous()' but very efficient. | |
| *** Introduced -DF2PY_REPORT_ATEXIT. If this is used when compiling, | |
| a report is printed to stderr as python exits. The report includes | |
| the following timings: | |
| 1) time spent in all wrapped function calls; | |
| 2) time spent in f2py generated interface around the wrapped | |
| functions. This gives a hint whether one should worry | |
| about storing data in proper order (C or Fortran). | |
| 3) time spent in Python functions called by wrapped functions | |
| through call-back interface. | |
| 4) time spent in f2py generated call-back interface. | |
| For now, -DF2PY_REPORT_ATEXIT is enabled by default. Use | |
| -DF2PY_REPORT_ATEXIT_DISABLE to disable it (I am not sure if | |
| Windows has needed tools, let me know). | |
| Also, I appreciate if you could send me the output of 'F2PY | |
| performance report' (with CPU and platform information) so that I | |
| could optimize f2py generated interfaces for future releases. | |
| *** Extension modules can be linked with dmalloc library. Use | |
| -DDMALLOC when compiling. | |
| *** Moved array_from_pyobj to fortranobject.c. | |
| *** Usage of intent(inout) arguments is made more strict -- only | |
| with proper type contiguous arrays are accepted. In general, | |
| you should avoid using intent(inout) attribute as it makes | |
| wrappers of C and Fortran functions asymmetric. I recommend using | |
| intent(in,out) instead. | |
| *** intent(..) has new keywords: copy,cache. | |
| intent(copy,in) - forces a copy of an input argument; this | |
| may be useful for cases where the wrapped function changes | |
| the argument in situ and this may not be desired side effect. | |
| Otherwise, it is safe to not use intent(copy) for the sake | |
| of a better performance. | |
| intent(cache,hide|optional) - just creates a junk of memory. | |
| It does not care about proper storage order. Can be also | |
| intent(in) but then the corresponding argument must be a | |
| contiguous array with a proper elsize. | |
| *** intent(c) can be used also for subroutine names so that | |
| -DNO_APPEND_FORTRAN can be avoided for C functions. | |
| *** IMPORTANT BREAKING GOOD ... NEWS!!!: | |
| From now on you don't have to worry about the proper storage order | |
| in multi-dimensional arrays that was earlier a real headache when | |
| wrapping Fortran functions. Now f2py generated modules take care | |
| of the proper conversations when needed. I have carefully designed | |
| and optimized this interface to avoid any unnecessary memory usage | |
| or copying of data. However, it is wise to use input arrays that | |
| has proper storage order: for C arguments it is row-major and for | |
| Fortran arguments it is column-major. But you don't need to worry | |
| about that when developing your programs. The optimization of | |
| initializing the program with proper data for possibly better | |
| memory usage can be safely postponed until the program is working. | |
| This change also affects the signatures in .pyf files. If you have | |
| created wrappers that take multi-dimensional arrays in arguments, | |
| it is better to let f2py re-generate these files. Or you have to | |
| manually do the following changes: reverse the axes indices in all | |
| 'shape' macros. For example, if you have defined an array A(n,m) | |
| and n=shape(A,1), m=shape(A,0) then you must change the last | |
| statements to n=shape(A,0), m=shape(A,1). | |
| :Release: 2.8.172 | |
| :Date: 13 January 2002 | |
| :: | |
| *** Fixed -c process. Removed pyf_extensions function and pyf_file class. | |
| *** Reorganized setup.py. It generates f2py or f2py.bat scripts | |
| depending on the OS and the location of the python executable. | |
| *** Started to use update_version from numpy_distutils that makes | |
| f2py startup faster. As a side effect, the version number system | |
| changed. | |
| *** Introduced test-site/test_f2py2e.py script that runs all | |
| tests. | |
| *** Fixed global variables initialization problem in crackfortran | |
| when run_main is called several times. | |
| *** Added 'import Numeric' to C/API init<module> function. | |
| *** Fixed f2py.bat in setup.py. | |
| *** Switched over to numpy_distutils and dropped fortran_support. | |
| *** On Windows create f2py.bat file. | |
| *** Introduced -c option: read fortran or pyf files, construct extension | |
| modules, build, and save them to current directory. | |
| In one word: do-it-all-in-one-call. | |
| *** Introduced pyf_extensions(sources,f2py_opts) function. It simplifies | |
| the extension building process considerably. Only for internal use. | |
| *** Converted tests to use numpy_distutils in order to improve portability: | |
| a,b,c | |
| *** f2py2e.run_main() returns a pyf_file class instance containing | |
| information about f2py generated files. | |
| *** Introduced `--build-dir <dirname>' command line option. | |
| *** Fixed setup.py for bdist_rpm command. | |
| *** Added --numpy-setup command line option. | |
| *** Fixed crackfortran that did not recognized capitalized type | |
| specification with --no-lower flag. | |
| *** `-h stdout' writes signature to stdout. | |
| *** Fixed incorrect message for check() with empty name list. | |
| :Release: 2.4.366 | |
| :Date: 17 December 2001 | |
| :: | |
| *** Added command line option --[no-]manifest. | |
| *** `make test' should run on Windows, but the results are not truthful. | |
| *** Reorganized f2py2e.py a bit. Introduced run_main(comline_list) function | |
| that can be useful when running f2py from another Python module. | |
| *** Removed command line options -f77,-fix,-f90 as the file format | |
| is determined from the extension of the fortran file | |
| or from its header (first line starting with `!%' and containing keywords | |
| free, fix, or f77). The later overrides the former one. | |
| *** Introduced command line options --[no-]makefile,--[no-]latex-doc. | |
| Users must explicitly use --makefile,--latex-doc if Makefile-<modulename>, | |
| <modulename>module.tex is desired. --setup is default. Use --no-setup | |
| to disable setup_<modulename>.py generation. --overwrite-makefile | |
| will set --makefile. | |
| *** Added `f2py_rout_' to #capiname# in rules.py. | |
| *** intent(...) statement with empty namelist forces intent(...) attribute for | |
| all arguments. | |
| *** Dropped DL_IMPORT and DL_EXPORT in fortranobject.h. | |
| *** Added missing PyFortran_Type.ob_type initialization. | |
| *** Added gcc-3.0 support. | |
| *** Raising non-existing/broken Numeric as a FatalError exception. | |
| *** Fixed Python 2.x specific += construct in fortran_support.py. | |
| *** Fixed copy_ND_array for 1-rank arrays that used to call calloc(0,..) | |
| and caused core dump with a non-gcc compiler (Thanks to Pierre Schnizer | |
| for reporting this bug). | |
| *** Fixed "warning: variable `..' might be clobbered by `longjmp' or `vfork'": | |
| - Reorganized the structure of wrapper functions to get rid of | |
| `goto capi_fail' statements that caused the above warning. | |
| :Release: 2.3.343 | |
| :Date: 12 December 2001 | |
| :: | |
| *** Issues with the Win32 support (thanks to Eric Jones and Tiffany Kamm): | |
| - Using DL_EXPORT macro for init#modulename#. | |
| - Changed PyObject_HEAD_INIT(&PyType_Type) to PyObject_HEAD_INIT(0). | |
| - Initializing #name#_capi=NULL instead of Py_None in cb hooks. | |
| *** Fixed some 'warning: function declaration isn't a prototype', mainly | |
| in fortranobject.{c,h}. | |
| *** Fixed 'warning: missing braces around initializer'. | |
| *** Fixed reading a line containing only a label. | |
| *** Fixed nonportable 'cp -fv' to shutil.copy in f2py2e.py. | |
| *** Replaced PyEval_CallObject with PyObject_CallObject in cb_rules. | |
| *** Replaced Py_DECREF with Py_XDECREF when freeing hidden arguments. | |
| (Reason: Py_DECREF caused segfault when an error was raised) | |
| *** Impl. support for `include "file"' (in addition to `include 'file'') | |
| *** Fixed bugs (buildsetup.py missing in Makefile, in generated MANIFEST.in) | |
| :Release: 2.3.327 | |
| :Date: 4 December 2001 | |
| :: | |
| *** Sending out the third public release of f2py. | |
| *** Support for Intel(R) Fortran Compiler (thanks to Patrick LeGresley). | |
| *** Introduced `threadsafe' statement to pyf-files (or to be used with | |
| the 'f2py' directive in fortran codes) to force | |
| Py_BEGIN|END_ALLOW_THREADS block around the Fortran subroutine | |
| calling statement in Python C/API. `threadsafe' statement has | |
| an effect only inside a subroutine block. | |
| *** Introduced `fortranname <name>' statement to be used only within | |
| pyf-files. This is useful when the wrapper (Python C/API) function | |
| has different name from the wrapped (Fortran) function. | |
| *** Introduced `intent(c)' directive and statement. It is useful when | |
| wrapping C functions. Use intent(c) for arguments that are | |
| scalars (not pointers) or arrays (with row-ordering of elements). | |
| :Release: 2.3.321 | |
| :Date: 3 December 2001 | |
| :: | |
| *** f2py2e can be installed using distutils (run `python setup.py install'). | |
| *** f2py builds setup_<modulename>.py. Use --[no-]setup to control this | |
| feature. setup_<modulename>.py uses fortran_support module (from SciPy), | |
| but for your convenience it is included also with f2py as an additional | |
| package. Note that it has not as many compilers supported as with | |
| using Makefile-<modulename>, but new compilers should be added to | |
| fortran_support module, not to f2py2e package. | |
| *** Fixed some compiler warnings about else statements. | |