Sage-GAP Days 101

Cernay, June 17-21 2019

About Sage Days 101

Where to post your photos of the event:

Schedule

Themes

Packaging (conda, ) for Sage, GAP, cppyy

  • conda packaging for cppyy (Julian, Isuru): mostly done
  • Python 3 based SageMath docker images (Julian, Samuel)
  • Aim at building docker images for all ODK components, compatible with binder, jupyterhub, (Luca). Similar to Jupyter's Docker stack which binder uses in the absence of a dockerfile.
    https://github.com/jupyter/docker-stacks
  • SageMath gives problems with Jupyter Lab, Jupyter Hub
  • conda packaging for sage 8.8.rc1 (Isuru, Julian)

Importing .sage files as Python modules

important for the random new user; recently a new user was struggling to
properly package their code, which had lots of load, attach,

  • we need a ux deputee, only concerned with user experience
  • maybe the documentation could say stop using attach and instead either
    • use reload module
    • pickle all the globals, restart sage,

One pain point is the startup time of Sage. We should work on that.

OpenDreamKit

Continuous integration with conda: demo by Julian

every ci setup is some script that pulls some tarball from somewhere
i found it a bit annoying that there was no standard approach
the result of the ci is basically "works" or "fails"
and you want people to try the things
so need another ci to make docker images

idea: use a robust ci
conda-forge idea: write a recipe

  • list dependencies
  • say what it is: a library, a python package

If I do this anyway because I want it to be on conda in the end,
there's a tool called "conda-smithy"
that reads the yaml file
and creates scripts that build packages for
windows, linux, osx,

it's powerful and it creates all these scripts by itself

you can say if you prefer azure or circle-ci

the cool things is it builds conda packages and runs your
actual tests on this conda package

as a side effect you get conda packages for free
you get nightly builds

so you can tell people

  • one way to use mysoftware is to run configure and make
  • another way is to run conda install mysoftware

it gives people access to your nightly builds
you can get nightly builds for linux, macos, windows

i found it an interesting approach to do ci,
it removes the duplication; especially the two tend to be broken a lot
because you don't test them so much

it is also the only sane way i found to provide binaries for Windows

Conda

What caused the big breakage in maintaing SageMath up to date in Conda?
Will it repeat?

The change of default compiler (from gcc 7.4 to gcc 8.2?)
caused a lot of breakage.

Roughly half the ~350 tests that are failing in SageMath are due to
SageMath using Singular 4.1.1 while Conda has 4.1.2.

When SageMath uses latest releases of everything, all goes well.
When SageMath uses old versions of some of its dependencies,
things get hard.

Using custom Docker files for binder is more effort usually to maintain
than writing a good requirements.txt.

For example, see
https://flatsurf/flatsurf/binder/environment.yml

Luca says: before you pushed SageMath 8.8.rc1 to conda, 8GB
and now 11 GB.

Interfaces between systems

  • Sage-GAP interfaces: libgap, semantic-gap,
    Extracted sage-semantic-annotations out of sage-gap-semantic-interface
    Experimented with using Sage-Explorer to explore GAP objects through sage-gap-semantic interface

  • Recursive Monkey Patch: analyzed a bug (Julian, Nicolas)

  • Awali: packaging is done https://trac.sagemath.org/ticket/28004

  • Kenzo

  • fast and reliable computations with real/complex numbers

    • e-antic (C library with C++ interface and Python bindings)
    • exact-real (C++ library and Python bindings)
    • improve cppyy interfaces to Python
    • distribution: conda, SageMath, (?)
  • GAP interface to PARI/GP (in order to compute Galois group of polynomials)
    (Vincent D, James)

  • Finish the position paper started last year
    The paper is at overleaf at https://www.overleaf.com/15996604kpskgdsgjhww
    Anybody is invited to contribute. The idea is to survey the varius technologies for interfacing high-level with low-level systems for computational mathematics.

  • Sage-Matplotlib interface: Trac #27865, Trac #27866

  • Sage-Normaliz interface (PyNormaliz)

  • Properly resolve the Digraphs package Issue 177 with James and Erik (and finish edge-colored digraph automorphisms Issue 183 Finn, James, Vicente D)

  • giacpy (Python interface to giac) and SageMath integration

  • cppyy to interface C(++) and Python, demo

Jupyter widgets for Mathematics

  • sage-combinat-widgets
  • francy: packaging, explored how to make a Jupyter lab extension
  • JupyterViz and Group Explorer (web app, GAP package)
  • Demo RISE
  • flatsurf, or how to use hot module reloading and Vue.js in Jupyter
  • Check GroupNames by Tim Dokchitser (not sure about the license).

Sage-Explorer (Odile, Nathan, Nicolas, Julian)

Brainstorm and early experiments for future evolutions

Explored the use of ipyvuetify-widgets for a flexible UI library.

Book Calcul Mathématique avec Sage et traduct

ions

See http://sagebook.gforge.inria.fr/

Vincent K and Nicolas: worked on upgrading to Python 3 the examples, backporting changes from the copy of the examples in the Sage documentation.

General development

  • generic division free linear algebra in SageMath
    #15160
    #27869
    (
    might work on this if other people are interested)
  • Porting the surface_dynamics external SageMath package to Python3
    Samuel and Vincent D: good progress. Almost done.
    https://gitlab.com/videlec/surface_dynamics
  • Packaged coq-jupyter for Conda

Add your theme here!!!

Participants

Local organization

Arrivals and departures

Meals

Select a repo