Skip to content

Support for --disable-giac #38668

Open
Open
@orlitzky

Description

@orlitzky

Giac is a PITA to have as a dependency:

  • There's no public source repository
  • There's no bug tracker
  • There are no release announcements, new releases just show up in some random directory...
  • If you can tell what is the latest release, because there's no coherent version scheme
  • No one knows what's in the new releases, breaking changes show up in what appear to be minor versions
  • The tarball is manually generated and often contains random files from the author's computer
  • The test suite for every version fails on almost every machine
  • Recent releases contain undefined behavior that is retained intentionally even though it crashes glibcxx
  • The build emits hundreds of compiler warnings
  • As a result of all of this, each release requires heavy patching (i.e. time & effort) even on "boring" systems
  • But now I have a new computer that is not boring, and those compiler warnings weren't kidding, because giac segfaults all over the place
  • So I can't use giac any more, and if Sage has a hard dependency on it, then I can't use Sage any more either

Fortunately it looks like it won't be too hard to make giac optional in Sage:

  1. Remove giac integration from GiNaC #38669
  2. src/sage/features/giac.py: add new feature for the giac program #38672
  3. Tweak a few tests to pass when giac is not installed #38690
  4. src/sage/symbolic/integration: make libgiac integration optional #38756
  5. Use the faster libgiac interface for "giac" integration #38686 (not strictly required, but it conflicts with several "needs" tags)
  6. Add "needs" tags for giac and libgiac #38770
  7. Replace sage.libs.giac with new optional package sagemath-giac #39376

We lose a few integration examples in the doctests when the giac algorithm is skipped in favor of sympy, but that's about it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions