2020.2.3

PyPI link to release 2020.2.3 Documentation for release 2020.2.3

ABI Changes

Packaging

  • Introduced first-class build and install support for libbezier via CMake. Achieved with the following PRs

    • Added CMakeLists.txt files to enable building libbezier with CMake (#175).
    • Added -DTARGET_NATIVE_ARCH:BOOL=OFF flag to enable portable release builds (#182).

    and closed the following issues

    • Use a shared library (rather than a static library) for libbezier (#54).
    • Enable Python installs to be “hybrid-editable” (#56). (This means that the Python files reference the source tree but the built components, i.e. libbezier and _speedup.so, are already built and utilize caching of CMake.)
    • Use build system other than Python / distutils / setuptools (#62).
    • Add ability to disable -march=native flag to make release builds portable across compatible operating systems (#181).

Python Changes

Additive Changes

  • Exposing Curve.evaluate_hodograph() method as part of the public API (#191). Fixed #138.

Packaging

  • Removed build dependency on gfortran and other heavyweight tools (and hacks) such as numpy.distutils. Now, libbezier must be built before the Python package can be installed and the install location must be provided via the BEZIER_INSTALL_PREFIX environment variable. Achieved with the following PRs
    • Requiring prebuilt libbezier when building bezier._speedup Python binary extension (#176).
    • Support building of wheels on all platforms that depend on libbezier (#182).
  • Switch from manylinux1 to manylinux2010 for built wheels (#178).
  • Delaying imports of pkg_resources, scipy and sympy until actually needed (if ever) (#194, #195, 38602d8).
  • Adding matplotlib to pip install bezier[full] (8beb036).
  • Avoiding bezier.dll name collision on Windows in wheels distributed on PyPI (#190). Fixed #189.

Breaking Changes

  • Removed bezier.get_dll() helper (#184).

Documentation

  • Changed “Read the Docs” landing page to point to .../stable/ documentation (i.e. the last published release) instead of .../latest documentation (i.e. the last merged commit).
  • Making sure CMake installed trees (on Linux, macOS and Windows) are verified in doctest as part of CI (48e4166).
  • Making sure example_*.c ABI examples are compiled and run (on Linux and macOS) in doctest as part of CI (ffdcdf7, 9551495, 0766649).
  • Converting (untested, potentially stale) console codeblocks to doctest (that get run in CI) for Linux sections of binary extension documentation (#188). Fixed #74.