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_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-2a44d276.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).