2023.7.28
Robustness
Fall back to de Casteljau algorithm for evaluation on high degree curves (#264). Fixed #263. The more efficient
evaluate_multi_vs()function relies on the ability to compute binomial coefficients(n C k)but after(55 C 26)these values cannot be computed in floating point without roundoff and for very large degrees these values overflow.
Python Changes
Packaging
Switched to delvewheel for repairing Windows wheels (#307). This is similar to how Linux and macOS packaging already work. This is vastly superior to the homegrown approach previously used with
extra-dll.Dropped support for Python 3.7 and added support for Python 3.10 and 3.11 (#271, #302).
Add strict check for Python version on source installs. Fixed #278.
Make missing
BEZIER_INSTALL_PREFIXerror message more helpful. In particular, add a suggestion to setBEZIER_NO_EXTENSIONfor a source only install ifBEZIER_INSTALL_PREFIXcannot be set. Fixed #277.Use cibuildwheel to automate building wheels as part of release (#308).
Bug Fixes
Allow the extra DLL directory to be absent on Windows. For binary wheel installs, this directory contains the
libbezierDLL (e.g.bezier.libs\bezier-40ff1ce7372f05ba11436ffbadd11324.dll). For pure Python installs, thebezier.libsdirectory will be absent. (#307, #255). Fixed #254.Bug fix for
clip_range()(doc). Intersections with thet=0/t=1sides of the fat line were not taken into account and a value fors_maxcould be accidentally left unset if the intersections occurred in an order where thes-value decreased throughout (#259).
Breaking Changes
Additive Changes
Renaming all “private”
_verifyargs toverify(#251). For example, inCurve.intersect()(doc)Adding provisional support for self-intersection checks in planar curves (#265, #267). Fixed #165 and #171. Supported via
Curve.self_intersections()method.Added
alphaargument toTriangle.plot()andCurvedPolygon.plot()methods (#296).