# prysm v0.16¶

This release has been largely focused on updating the internals of prysm and brings relatively new features. The bulk of the work in this release has been spent on reworking the mathops module for a cleaner and more extensible design and on rewriting the guts of the convolutional code. The result is a slimmer library with cleaner code, faster execution, and higher accuracy results. Users are encouraged to upgrade, particularly for the enhancements made to image simulations done based on the convolution engine.

## Breaking changes¶

• the unit_x and unit_y attributes on the BasicData class have been renamed to x and y. unit_x and unit_y are provided as properties with warnings until v0.17.

• analytic_ft functions no longer calculate the meshgrid of x and y inputs internally. This makes output shapes and types consistent with input (i.e., calling .analytic_ft(0,0) will return a float instead of a (1,1) shape ndarray). Performance is also improved by removing redundant gridding operations.

## Bugfixes¶

• conv() now produces the correct number of output samples in all cases. Fixes #3.

• unit changes have been corrected - prior results were incorrect.

• the norm kwarg has improved behavior for Zernike classes, no longer setting z.normalize = True when the norm=False kwarg is passed.

• an error is no longer raised when calling prysm.convolution.Convolvable.save() with nbits=8.

• calls to prysm.pupil.Pupil.mask() now properly capture the mask for application to the fcn property.

• units on PSD plots are now properly referenced to spatial and phase units, not nm. This fix affects axis labels, not data.