0.5.0
Performance Optimizations
Change
wiggle_intervalto returnsuccessbool 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
f2pyto Cython (this is becausef2pyartificially 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
.pxddeclarations for all Fortran moduleslibbezierstatic library (via thebezier.get_lib()function)
Implementing
bezier_roots()polynomial root solver for polynomials written in Bernstein basis. (0dd6369)
Miscellany
Getting
bezierpublished in the Journal of Open Source Science (JOSS). See review. (e6c4536 and 975ac6b)Updating error message for
locate()methods and adding a note thatlocate()/evaluate*()are (essentially) inverses. H/T to @pdknsk #36Using Fortran-contiguous arrays in
_check_non_simple(). (b06c78e)Moving most of
Curve.subdivide()andSurface.subdivide()logic into helpers. This is part of an effort to make all helpers take low-level data types rather thanCurves,Surfaces, etc. (34515bd and 1fc80e5)Split
speedup.f90into submodulescurve.f90,surface.f90, etc. (75349b7, dfd6bba, 7096a9d, c326c00)Adding
BEZIER_JOURNALoption tosetup.py. This stores a record of compiler commands invoked during installation. See Native Libraries for more details. (3d832e7 and c64a97a)