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_PREFIX
error message more helpful. In particular, add a suggestion to setBEZIER_NO_EXTENSION
for a source only install ifBEZIER_INSTALL_PREFIX
cannot 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
libbezier
DLL (e.g.bezier.libs\bezier-40ff1ce7372f05ba11436ffbadd11324.dll
). For pure Python installs, thebezier.libs
directory will be absent. (#307, #255). Fixed #254.Bug fix for
clip_range()
(doc). Intersections with thet=0
/t=1
sides of the fat line were not taken into account and a value fors_max
could be accidentally left unset if the intersections occurred in an order where thes
-value decreased throughout (#259).
Breaking Changes
Additive Changes
Renaming all “private”
_verify
args 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
alpha
argument toTriangle.plot()
andCurvedPolygon.plot()
methods (#296).