Latest Release (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-2a44d276.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).