Warp v1.11.1
Warp v1.11.1 is a bugfix release following v1.11.0. For a complete list of changes, see the changelog.
Highlights
This is primarily a bugfix release with no major new features. Key fixes include:
-
Tile Operations: Fixed
wp.tile_matmul()sometimes producing NaN results when using thec = wp.tile_matmul(a, b)form due to reading uninitialized output memory (#1180). Also fixed tile multiplication with scalar constants when one operand is a vector or matrix type (#1175), and enabled scalar, vector, and matrix arguments inwp.tile_map()(#1136). -
Code Generation: Fixed
wp.static()incorrectly resolving loop variables to same-named global Python variables when used for static loop unrolling in kernels (e.g.,wp.static(i)insidefor i in range(n)would use a globaliif one existed, instead of the loop iteration value) (#1139). Also fixed a segfault in conditional expressions (ternaryif/else) when one branch accesses an array element and the other branch is taken. -
CUDA Graphs: Fixed CUDA graphs with multiple temporary allocations using more memory than necessary. Previously, memory freed during graph capture wasn't properly sequenced for reuse by later allocations, causing memory to accumulate (e.g., three sequential 1GB allocations would consume 3GB instead of reusing the same 1GB).
-
Developer Experience: Fixed
@wp.funcdecorated functions showing generic_Wrappedtypes in Pyright/Pylance instead of their actual signatures on Python 3.10+. Also fixed multiple issues with IDE autocomplete stubs that caused type checker errors in mypy and Pyright, including incorrect@overloadusage, shadowedbooltype references, and missingLiteral[]syntax for integer type parameters. -
Documentation: Added missing docstrings across the API, including built-in functions, type constructors, constants, and
warp.femsymbols (#1159). Addedexample_particle_repulsion.pydemonstrating how to usewp.grad()(#1137).
Announcements
Upcoming removals
The following feature is deprecated and will be removed in v1.12:
-
Constructing matrices from column vectors via
wp.matrix(): The ability to construct matrices by passing column vectors towp.matrix()has been deprecated at both Python and kernel scopes. Usewp.matrix_from_cols()instead. -
Constructing matrices from vectors via
wp.matrix(): The ability to construct matrices by passing vectors towp.matrix()has been deprecated at both Python and kernel scopes. The replacement depends on the scope because the behavior was inconsistent:# Kernel scope (vectors were interpreted as columns) # Deprecated (will be removed in v1.12): m = wp.mat33(col0, col1, col2) # Use instead: m = wp.matrix_from_cols(col0, col1, col2) # Python scope (vectors were interpreted as rows) # Deprecated (will be removed in v1.12): m = wp.mat22(wp.vec2(1, 2), wp.vec2(3, 4)) # Use instead: m = wp.matrix_from_rows(wp.vec2(1, 2), wp.vec2(3, 4))
Acknowledgments
We thank the following contributors: