python-flint icon indicating copy to clipboard operation
python-flint copied to clipboard

Nightly wheels and WASM/pyodide builds

Open oscarbenjamin opened this issue 1 year ago • 6 comments

CC @agriyakhetarpal

See also: https://github.com/scientific-python/upload-nightly-action/issues/111

We should upload nightly wheels after each merge to main to the scientific-python nightly wheels index: https://anaconda.org/scientific-python-nightly-wheels

That is useful for downstream testing e.g. in SymPy. It would also make it possible to have the latest main branches of python-flint and SymPy available for testing in SymPy Live: https://live.sympy.org/

We should also build and test python-flint in WASM with pyodide in CI. There already are WASM builds of python-flint in pyodide: https://pyodide.org/en/stable/usage/packages-in-pyodide.html

Those can be used in the browser e.g. at: https://pyodide.org/en/stable/console.html

>>> import flint
>>> x = flint.fmpz_poly([0, 1])
>>> p = x**2 + 2*x + 1
>>> p
x^2 + 2*x + 1
>>> p.factor()
(1, [(x + 1, 2)])

It looks like cibuildwheel could build these with --platform pyodide: https://cibuildwheel.pypa.io/en/stable/options/

We would first need emscripten builds of GMP, MPFR and FLINT. The build recipes for those can be found in the pyodide repo e.g.: https://github.com/pyodide/pyodide/tree/main/packages/flint

Probably a separate CI workflow should be used for making and testing pyodide wheels because we can't upload them to PyPI and the build commands and CI setup would be a bit different. We can upload the WASM wheels to the nightly wheels index though and the final release versions are already built in pyodide.

oscarbenjamin avatar Oct 22 '24 22:10 oscarbenjamin