0.5.0

PyPI link to release 0.5.0 Documentation for release 0.5.0

Performance Optimizations

  • Change wiggle_interval to return success bool instead of raising an exception. This allows the implicitization approach to use it without having to use exceptions for flow-control. (Fixes #22.)

  • Switching Fortran speedups from f2py to Cython (this is because f2py artificially limits the feature set of Fortran, i.e. user defined types)

  • Moving some more code to Fortran (e.g. bbox_line_intersect() 3dcf640)

New Features

  • Making Fortran features available outside of Python (see Native Libraries)

  • C headers for each Fortran module (via the bezier.get_include() function)

    • Cython .pxd declarations for all Fortran modules

    • libbezier static library (via the bezier.get_lib() function)

  • Implementing bezier_roots() polynomial root solver for polynomials written in Bernstein basis. (0dd6369)

Miscellany

  • Getting bezier published in the Journal of Open Source Science (JOSS). See review. (e6c4536 and 975ac6b)

  • Updating error message for locate() methods and adding a note that locate() / evaluate*() are (essentially) inverses. H/T to @pdknsk #36

  • Using Fortran-contiguous arrays in _check_non_simple(). (b06c78e)

  • Moving most of Curve.subdivide() and Surface.subdivide() logic into helpers. This is part of an effort to make all helpers take low-level data types rather than Curves, Surfaces, etc. (34515bd and 1fc80e5)

  • Split speedup.f90 into submodules curve.f90, surface.f90, etc. (75349b7, dfd6bba, 7096a9d, c326c00)

  • Adding BEZIER_JOURNAL option to setup.py. This stores a record of compiler commands invoked during installation. See Native Libraries for more details. (3d832e7 and c64a97a)