Differences between revisions 6 and 9 (spanning 3 versions)
Revision 6 as of 2008-05-16 15:30:51
Size: 12338
Comment: m4ri has been ported to MSVC by Martin Albrecht
Revision 9 as of 2008-05-21 01:08:33
Size: 12624
Comment: update m4ri, gmp
Deletions are marked like this. Additions are marked like this.
Line 14: Line 14:
 * gmp-4.2.1.p12 - port by Brian Gladman exists - http://fp.gladman.plus.com/computing/gmp4win.htm. The main disadvantage is that the build is done via project file. A fallback option is to use the pure C fall back code via MSVC or Intel's C compiler since MSVC doesn't do the right inline assembly. Brian's gmp works perfectly in Win64 mode. [[good!]]
Line 34: Line 33:
 * atlas-3.8.p11: Works find [[fine]], Intel C for better performance preferred
 * gsl-1.10.p0: port exists: http://gnuwin32.sourceforge.net/packages/gsl.htm. Brian Gladman also maintains a native MSVC port, 32 & 64 bit.
Line 41: Line 38:
 * numpy-20080104-1.0.4.p2: support by enthought, builds out of the box with MSVC + ATLAS
Line 44: Line 40:
 * mpfr-2.3.1: pure C, Windows make file support welcome upstream, depends on gmp.
* pexpect-2.0.p1: This is the big, difficult one. pexpect uses pseudo ttys and a whole bunch of POSIX infrastructure. It is essential and central to Sage and no one has ported pexpect to Windows. While the API is very different it is still possible to map all functionality to native Windows API calls. But it will probably take a lot of energy to get it stable and clean. The ultimate goal would be to get this merged upstream since it would be quite a lot of work to go at this alone
[[yes, this is the biggie. note that pexpect *does* sort of work under cygwin, which might be relevant. Also, instead of porting pexpect, it might be possible to simply do something completely different than accomplishes much the same thing. pexpect was the way to go with Python and Unix -- in windows perhaps there is a totally different approach to interprocess communication that would work better? It's possibly OK if this means rewriting SAGE_ROOT/devel/sage/sage/interfaces/* for this new approach. This definitely needs to be investigated. Some of the programs Sage interfaces with have native "client server" archicture, and that could perhaps be used instead. E.g., Maple and Mathematica do. Maxima almost certainly doesn't...]]
 * pexpect-2.0.p1: This is the big, difficult one. pexpect uses pseudo ttys and a whole bunch of POSIX infrastructure. It is essential and central to Sage and no one has ported pexpect to Windows. While the API is very different it is still possible to map all functionality to native Windows API calls. But it will probably take a lot of energy to get it stable and clean. The ultimate goal would be to get this merged upstream since it would be quite a lot of work to go at this alone [[yes, this is the biggie. note that pexpect *does* sort of work under cygwin, which might be relevant. Also, instead of porting pexpect, it might be possible to simply do something completely different than accomplishes much the same thing. pexpect was the way to go with Python and Unix -- in windows perhaps there is a totally different approach to interprocess communication that would work better? It's possibly OK if this means rewriting SAGE_ROOT/devel/sage/sage/interfaces/* for this new approach. This definitely needs to be investigated. Some of the programs Sage interfaces with have native "client server" archicture, and that could perhaps be used instead. E.g., Maple and Mathematica do. Maxima almost certainly doesn't...]]
Line 50: Line 44:
 * sympy-0.5.7: pure python, no portability issues.
Line 52: Line 45:
 * networkx-0.36.p1: pure python, no portability issues
Line 58: Line 50:
 * scons-0.97: works fine on Windows, python based.
Line 65: Line 56:
 * libm4ri-20071224.p1: no Windows port, maintainer will accept Windows port [windows port done by Martin Albrecht - w00t]
 * ecm-6.1.3: no Windows port, but C, potentially issues with threading [[worrisome.]]
Line 75: Line 64:
 * weave-0.4.9: now part of scikits, works fine with MSVC
Line 80: Line 68:
 * cvxopt-0.9.p5: Has Windows build support, provides binary packages
 * jmol-11.5.2.p1: pure java, no portability issues, large community of users on Windows
 * linbox-20070915.p5: this will be some heavy lifting, mostly due to some heavy templated code. Upstream is willing to merge and help out.
 * gap-4.4.10.p2: Depends on sbrk(), currently builds only via Cygwin. [[a cygwin build could be fine for us, since there is no binary linking between sage and gap, and almost certainly there never will be any.]]

== Packages with upstream MSVC support ==

 * atlas-3.8.p11: Works find [[fine]], Intel C for better performance preferred
 * ecm-6.1.3: no Windows port, but C, potentially issues with threading. Upstream ecm-6.2 has MSVC project by Brian Gladman - upgrading evm to the 6.2 release is #3237
 * gmp-4.2.1.p12 - port by Brian Gladman exists - http://fp.gladman.plus.com/computing/gmp4win.htm. The main disadvantage is that the build is done via project file. A fallback option is to use the pure C fall back code via MSVC or Intel's C compiler since MSVC doesn't do the right inline assembly. Brian's gmp works perfectly in Win64 mode. [[good!]]. MPIR will have full MSVC project support
 * gsl-1.10.p0: port exists: http://gnuwin32.sourceforge.net/packages/gsl.htm. Brian Gladman also maintains a native MSVC port, 32 & 64 bit.
 * libm4ri-20071224.p1: MSVC and SunForte port done by Martin Albrecht and in upstream. Upgrade ticket is #3204
 * mpfr-2.3.1: pure C, Windows make file support welcome upstream, depends on gmp. MSVC project by Brian Gladman exists and is recommended by upstream
 * numpy-20080104-1.0.4.p2: support by enthought, builds out of the box with MSVC + ATLAS
Line 82: Line 84:
 * cvxopt-0.9.p5: Has Windows build support, provides binary packages
 * jmol-11.5.2.p1: pure java, no portability issues, large community of users on Windows
 * scons-0.97: works fine on Windows, python based.
Line 85: Line 86:
 * linbox-20070915.p5: this will be some heavy lifting, mostly due to some heavy templated code. Upstream is willing to merge and help out.
 * gap-4.4.10.p2: Depends on sbrk(), currently builds only via Cygwin. [[a cygwin build could be fine for us, since there is no binary linking between sage and gap, and almost certainly there never will be any.]]
 * weave-0.4.9: now part of scikits, works fine with MSVC

== Pure Python Packages ==
 * sympy-0.5.7: pure python, no portability issues.
 * networkx-0.36.p1: pure python, no portability issues

== Packages without code ==

This page is part the [:windows:Sage on Windows port].

Package Analysis

Below you will find a list of packages in Sage as well as remarks on issues that will potentially come up during the Windows port. As we progress we will add detailed problem reports and how we resolved those issues at individual pages.

NOTE: [http://www.apcocoa.org/wiki/ApCoCoALib:CompilationInstructions Some other useful information]

Packages with upstream MSVC support

  • atlas-3.8.p11: Works find fine, Intel C for better performance preferred

  • ecm-6.1.3: no Windows port, but C, potentially issues with threading. Upstream ecm-6.2 has MSVC project by Brian Gladman - upgrading evm to the 6.2 release is #3237
  • gmp-4.2.1.p12 - port by Brian Gladman exists - http://fp.gladman.plus.com/computing/gmp4win.htm. The main disadvantage is that the build is done via project file. A fallback option is to use the pure C fall back code via MSVC or Intel's C compiler since MSVC doesn't do the right inline assembly. Brian's gmp works perfectly in Win64 mode. good!. MPIR will have full MSVC project support

  • gsl-1.10.p0: port exists: http://gnuwin32.sourceforge.net/packages/gsl.htm. Brian Gladman also maintains a native MSVC port, 32 & 64 bit.

  • libm4ri-20071224.p1: MSVC and SunForte port done by Martin Albrecht and in upstream. Upgrade ticket is #3204

  • mpfr-2.3.1: pure C, Windows make file support welcome upstream, depends on gmp. MSVC project by Brian Gladman exists and is recommended by upstream
  • numpy-20080104-1.0.4.p2: support by enthought, builds out of the box with MSVC + ATLAS
  • scipy-20071020-0.6.p3: support by enthought, builds out of the box with MSVC + ATLAS
  • scipy_sandbox-20071020.p2: support by enthought, builds out of the box with MSVC + ATLAS
  • scons-0.97: works fine on Windows, python based.
  • tachyon-0.98beta.p4: Windows port exists, unsure about MSVC + threading.
  • weave-0.4.9: now part of scikits, works fine with MSVC

Pure Python Packages

  • sympy-0.5.7: pure python, no portability issues.
  • networkx-0.36.p1: pure python, no portability issues

Packages without code

  • doc-2.10.2.alpha0: no compiled code, so no portability issues.