[Numpy-discussion] ANN: NumPy 1.8.1 release

Carl Kleffner cmkleffner at gmail.com
Sat Apr 5 17:53:34 EDT 2014


Hi,

I will add a a wiki page ASAP.

BTW: I copied my tools (gcc toolchain, numpy, scipy wheels) from my google
drive to bitbucket:
https://bitbucket.org/carlkl/mingw-w64-for-python/downloads

Regards

Carl


2014-04-04 21:56 GMT+02:00 Matthew Brett <matthew.brett at gmail.com>:

> Hi,
>
> On Fri, Apr 4, 2014 at 8:19 AM, Carl Kleffner <cmkleffner at gmail.com>
> wrote:
> >
> > I'ts time for me to come back to the discussion after a longer break.
> >
> > some personal history: I was looking for a 64bit mingw more than a year
> ago
> > (unrelated to python) for Fortran development and tried out quite some
> mingw
> > toolchain variants based on the mingw-w64 project. In a nutshell: the
> most
> > appropriate and best documentated solution are the toolchains provided by
> > the mingw builds project IMHO.
> >
> > The next step was the idea to use this toolchain for compiling python
> > extensions (C and Fortran) and then to try out compiling numpy and scipy
> > with OpenBLAS.
> >
> > Despite the fact, that a mingw-w64 based toolchain is rock solid today
> the
> > following possible issues should be considered for Python development:
> >
> > (1) deploy problem: mingw runtime DLLs can not be found at runtime
> > Solution: use flags for static linking or use a dedicated 'static' GCC
> > toolchain for compiling and linking. Both solutions should work.
> >
> > (2) Win32 default stack alignment incompatibility: GCC uses 16 bytes
> since
> > GCC4.6, MSVC uses 4 bytes
> > Solution: use the -mincoming-stack-boundary=2 flag for compiling. Win64
> > X86_64 is not affected. This issue is the major cause for segment faults
> on
> > 32bit systems.
> >
> > (3) Import library problem: numpy distutils does not play well with
> > mingw-w64
> > Solution: create a Python import library with the mingw-w64 tools. Use a
> > patched numpy distutils. A detailed description can be found here:
> > http://article.gmane.org/gmane.comp.python.numeric.general/56749 .
> >
> > (4) linking against the correct msvcrXXX Version.
> > Solution: create a 'specs' file (howto see
> > http://www.mingw.org/wiki/HOWTO_Use_the_GCC_specs_file ) that includes
> > necessary informations.
> >
> > (5) manifest resources
> > Solution: extend the GCC toolchain with the Manifest resource files and
> > ensure linkage with the help of the 'specs' file.
> >
> > (6) Blas Lapack for numpy scipy
> > There is no silver bullet! A trade-off between licence acceptance,
> > performance and stability remains to be found. OpenBLAS on Win32 seems
> to be
> > quite stable. Some OpenBLAS issues on Win64 can be adressed with a single
> > threaded version of that library.
> >
> > On my google drive:
> >
> https://drive.google.com/folderview?id=0B4DmELLTwYmldUVpSjdpZlpNM1k&usp=sharing
> > I provide the necessary parts to try the procedures described at
> > http://article.gmane.org/gmane.comp.python.numeric.general/56749 and
> > http://article.gmane.org/gmane.comp.python.numeric.general/56767
> >
> > Up to now I didn't find time to put a comprehensive description on the
> Web
> > and to update all that stuff (MSVCR100 support for the toolchain still
> > missing), so I add my incomplete, not yet published mingw-w64 FAQ at the
> end
> > of my longish E-Mail for further discussions.
> >
> > Carl
> >
> > ---
> >
> > my personal mingw-w64 FAQ
> > =========================
> >
> > what is mingw-w64
> > -----------------
> >
> > mingw-w64 is a fork of the mingw32 project
> > - http://sourceforge.net/apps/trac/mingw-w64/wiki/History
> >
> > why choose mingw-w64 over mingw
> > -------------------------------
> >
> > - 32 AND 64bit support
> > - large file support
> > - winpthread pthreads implementation, MIT licenced.
> > - cross compiler toolchains availabe for Linux
> >
> > official mingw-w64 releases
> > ---------------------------
> >
> > source releases of the mingw-64 repository
> > -
> >
> http://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/
> >
> > official mingw-w64 GCC toolchains
> > ---------------------------------
> >
> > 'recommened' builds are available from the mingw-builds project
> > http://mingw-w64.sourceforge.net/download.php#mingw-builds for example
> > -
> >
> http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/4.8.2/threads-posix/seh/
> > -
> >
> http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/4.8.2/threads-posix/dwarf/
> >
> > These are common combinations of exception and thread models. You can
> find
> > other combinations as well. Exception handling affects C++ development.
> > Don't ever link object code with different types of exception and/or
> thread
> > handling!
> >
> > threads concerning the question 'where to find mingw-w64 builds'
> > - http://article.gmane.org/gmane.comp.gnu.mingw.w64.general/7700
> > - http://article.gmane.org/gmane.comp.gnu.mingw.w64.general/8484
> >
> > how to build a mingw-w64 based GCC toolchain on Windows
> > -------------------------------------------------------
> >
> > "mingw-builds" is a set of scripts and patches for compiling the GCC
> > toolchain under Windows with the help of msys2 POSIX enviroment
> > - https://github.com/niXman/mingw-builds/tree/develop
> > recent 'mingw-builds' GCC toolchains can be downloaded from the mingw-w64
> > sf.net (4)
> >
> > what is msys2
> > -------------
> >
> > msys2 is the successor of msys. Msys2 is necessary as enviroment for the
> > mingw build process on Windows.
> > - http://sourceforge.net/p/msys2/wiki/MSYS2%20installation/
> >
> > where to get precompiled mingw-w64 compiled libraries
> > -----------------------------------------------------
> >
> > recent mingw-w64 based tools and library packages together with sources
> and
> > patches are available from archlinux as well as from the msys2
> maintainers.
> > - http://sourceforge.net/projects/mingw-w64-archlinux/files/  (i686:
> Sjlj |
> > x86_64: SEH)
> > - http://sourceforge.net/projects/msys2/files/REPOS/MINGW/  (i686:
> Dwarf |
> > x86_64: SEH)
> >
> > what is a static GCC toolchain
> > ------------------------------
> >
> > GCC as well as the all neccessary libraries for a toolchain can be
> compiled
> > with "-disabled-shared". This is supported by the mingw-builds scripts
> as an
> > option. All the necessary object code from the GCC runtimes will be
> > statically linked into the binaries. As a consequence the binary size
> will
> > be increased in comparison to the standard toolchains. The advantage is,
> > that there will be no dependancy to external GCC runtime libraries, so
> the
> > deployment of python extensions is greatly improved. Using such a
> toolchain
> > is more reliable than using -static-XXX flags.
> > However, exception heavy C++ programms (i.e. QT) should be compiled with
> > shared runtimes to avoid  problems with exceptions handling over DLL
> > boundaries.
> > For building typically Python extensions a customized static GCC
> toolchain
> > is the best compromise IMHO.
> >
> > customizations over standard mingw-builds releases
> > --------------------------------------------------
> >
> > - two dedicated GCC toolchains for both 32bit (posix threads, Dwarf
> > exceptions) and 64 bit (posix threads, SEH exceptions)
> > - statically  build toolchain based on gcc-4.8.2 and mingw-w64 v 3.1.0
> > - languages: C, C++, gfortran, LTO
> > - customized 'specs' file for MSVCR90 linkage and manifest support
> (MSVCR100
> > linkage coming soon)
> > - additional ftime64 patch to allow winpthreads and OpenMP to work with
> > MSVCR90 linkage
> > - openblas-2.9rc1 with windows thread support (OpenMP disabled) included
>
> Thanks very much for this.
>
> Would you consider putting this up as a numpy wiki page?
>
> https://github.com/numpy/numpy/wiki
>
> I think it would be very valuable...
>
> Cheers,
>
> Matthew
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20140405/e8e1c30b/attachment.html>


More information about the NumPy-Discussion mailing list