NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #677 most downloaded on crates.io
A simple and fast 3D math library for games and graphics
Last release today
06 Oct 2026
Release timing varies
gaps range from 1 weeks to 3 months
Nearly every release is documented
notes for 59 of the last 60 stable releases
2 versions withdrawn
withdrawn after publishing
7 years old
99 releases · first in 2019
chore: Release package glam version 0.34.1
chore: Release package glam version 0.34.0
One column per quarter.
lerp_monotonic to FloatExt (#866)FloatExt, Vec2Swizzles, Vec3Swizzles and Vec4Swizzles traits (#891)1.85.0 and adopt Rust edition 2024 (#850)abs, copysign and signum methods in the internal f32/f64 backendsMat3/Mat3A/DMat3, Mat4/DMat4, Quat/DQuat and Affine3/Affine3A/DAffine3 look_to_*/look_at_* methods, the Mat4/DMat4 frustum_*, perspective_*, perspective_infinite_* and orthographic_* methods, and the USES_WASM32_SIMD constants, all deprecated since 0.31.0; use the camera/dcamera modules and USES_WASM_SIMD instead (#846)approx, encase, mint, rand, rkyv, speedy and zerocopy features and the no-op fast-math feature; use the versioned features instead (#846)chore: Release package glam version 0.33.12
chore: Release package glam version 0.33.12
chore: Release package glam version 0.33.11
chore: Release package glam version 0.33.11
rkyv-08 feature, which archives each glam type to a dedicated Archived* type at glam::rkyv_08 instead of archiving the native type, so archives are endianness explicit and independent of the SIMD backend glam was built with (#766)bytemuck::Pod and bytemuck::Zeroable impls for the rkyv-08 archived types, so they can still be cast to bytes for a GPU upload or file write without a serializerFrom conversions between each type and its rkyv-08 archived formArchive::COPY_OPTIMIZATION to the rkyv-08 impls whose archived form is a byte-for-byte copy of the native form, so slices serialize with a single memcpylerp_monotonic methods to the float vector types; they interpolate using the monotonic form self + (rhs - self) * s, which preserves equal inputs exactly and is monotonic in s, avoiding the rounding jitter that lerp can introduce between nearly equal values (#823)glam's public API: approx-05, mint-05, rand-010, speedy-08 and zerocopy-08, so each integration can add support for a new dependency version without a breaking change (#857)FloatExt::lerp for f32 and f64 now uses the same form as the vector lerp methods, self * (1 - s) + rhs * srkyv feature, whose implementation is unsound and will be removed in the next major release; use rkyv-08 instead (#766)approx, encase, mint, rand, speedy and zerocopy features; they are aliases for their versioned features and will be removed in the next major release (#857)NoUndef on the rkyv-08 archived types where they carry no padding, so uninitialised padding is no longer copied into archivesPortable on the rkyv-08 archived types, which have a layout identical on all targets, instead of the native types that depended on the SIMD backendchore: Release package glam version 0.33.10
chore: Release package glam version 0.33.10
chore: Release package glam version 0.33.9
chore: Release package glam version 0.33.9
chore: Release package glam version 0.33.8
chore: Release package glam version 0.33.8
from_rows, from_rows_array, from_rows_slice, to_rows_array and set_row to the matrix types (#790)fast-math feature: it is now a no-op and will be removed in a future breaking release; the SIMD back-ends use fused multiply-add whenever the target supports it, which is at least as accurate as before (#853)Mat3, Mat3A and DMat3 determinant and inverse with Mat4, so an affine matrix and its linear part agree bit-exactly (#828) (#836) (#837)chore: Release package glam version 0.33.7
chore: Release package glam version 0.33.7
Quat and Vec3A slerp. (#834)Mat4::to_scale_rotation_translation decomposition (#827)is_near_identity (#824)Vec3A::slerp (#819)chore: Release package glam version 0.33.6
chore: Release package glam version 0.33.6
float_eq support behind an optional feature (#795)smoothstep methods to float scalar and float vector types (#797)move_towards methods (#796)Vec3A for bytemuck Pod/Zeroable and zerocopy IntoBytes (#786)core-simd back-end compile without std (#789)chore: Release package glam version 0.33.5
chore: Release package glam version 0.33.4
chore: Release package glam version 0.33.4
BVec3A and BVec4A when scalar-math enabled. (#768)recip() calls with explicit division in vector implementations (#765)Added Vec3::angle_to which returns the signed angle (in radians) between two vectors around a given axis in the range [-π, +π]. The angle follows the
Added Vec3::angle_to which returns the signed angle (in radians) between
two vectors around a given axis in the range [-π, +π]. The angle follows
the right-hand rule around the axis and can be used with rotate_axis, e.g.
self.rotate_axis(axis, self.angle_to(rhs, axis)) will be equal to rhs.
Added Vec2::rotate_angle which rotates a vector by an angle (in radians),
equivalent to self.rotate(Vec2::from_angle(angle)).
Added glam_asserts that angle_to and angle_between inputs are non-zero
vectors.
to_array is now a const fn on all quaternion types.The existing methods on those types have been deprecated.
Added the camera and dcamera modules containing view and projection
constructor functions organized by handedness and graphics API convention.
The view sub-module provides look_at_* and look_to_* functions
that return Mat4, Affine3, Affine3A, Mat3, Mat3A, or Quat
view transforms.
The proj sub-module provides API-specific constructors for OpenGL,
DirectX and Vulkan conventions, each offering perspective,
perspective_infinite, perspective_infinite_reverse, orthographic,
and frustum constructors for both left-handed and right-handed view
spaces.
Added a prelude module which re-exports all common types and traits
but not camera modules.
Added slerp_long method to quaternion types, a spherical linear
interpolation that preserves the rotation direction.
Added is_negative_mask method to all signed vector types which returns a
boolean mask vector indicating which components have a negative sign.
look_at_*, look_to_*,
perspective_*, orthographic_*, frustum_*) have been moved off
matrix, affine and quaternion types into the camera/dcamera modules
as free functions. The existing methods on those types have been
deprecated.Changed vector map method constraint from Fn to FnMut, allowing closures that mutate their captured state.
Changed vector map method constraint from Fn to FnMut, allowing closures
that mutate their captured state.
Clarified documentation for any_orthogonal_pair method to specify it produces
a right-handed basis.
All types apart from f32 and bool types are now optional but enabled by default. Unused types can be disabled to improve compile times.
All types apart from f32 and bool types are now optional but enabled by
default. Unused types can be disabled to improve compile times.
Added #[must_use] attribute to as_dmat2, as_dmat3 and as_dmat4 vector
methods.
Fixed the implementation of dividing a scalar value by a matrix. This was actually dividing the matrix by the scalar value, with this fix 1.0/m == m.r
1.0/m == m.recip() is now true.recip() method which returns a new matrix containing the
reciprocal of each element of the source matrix.Updated the optional rand dependency to 0.10.
rand dependency to 0.10.The USES_WASM32_SIMD constant on vector types has been renamed to USES_WASM_SIMD, USES_WASM32_SIMD has been deprecated.
Added isize vector types ISizeVec2, ISizeVec3 and ISizeVec4.
Added wasm64-unknown-unknown support. The wasm64-unknown-unknown target
uses the same simd128 instructions as wasm32. Note that
wasm64-unknown-unknown requires a nightly toolchain.
USES_WASM32_SIMD constant on vector types has been renamed to
USES_WASM_SIMD, USES_WASM32_SIMD has been deprecated.Removed deprecated Vec2 and DVec2 angle_between methods.
The signature of Quat::from_affine3(&Affine3A) was changed to
Quat::from_affine3(&Affine3) with the addition of the Affine3 type.
Removed deprecated Vec2 and DVec2 angle_between methods.
Consistently use &self for matrix and affine type methods and self
for vector, quat and mask types.
Added Affine3 type.
Added diagonal method to matrix types which returns a vector containing the
diagonal of the matrix.
Added mul_diagonal_scale methods to matrix types which multiply the matrix
by a scale vector without needing to multiply by a scale matrix.
Added mul_transpose_vecn methods to matrix types which multiply the vector
by the transpose of the matrix without needing to transpose it first. They can
be slightly more efficient for SIMD backed types.
Added try_inverse method to matrix types which returns an option containing
the inverted matrix or None if the matrix was not invertible.
Added inverse_or_zero method to matrix types which returns the inverted
matrix or a zero matrix if the matrix was not invertible.
Added step and saturate methods to the FloatExt trait.
Added step, saturate, sqrt, sin, cos and sin_cos methods to float
vector types.
Added from_rotation_axes method to quaternion types. This method was
previously internal only.
Added float vector exp2, ln and log2 methods.
Added float vector exp2, ln and log2 methods.
Added convenience methods for working with homogeneous coordinates, including
3D vector from_homogeneous and to_homogeneous and 4D vector project.
rand UniformSampler new_inclusive methods so they're actually
inclusive.Added 3D vector rotate_x, rotate_y, rotate_z and rotate_axis methods.
Added 3D vector rotate_x, rotate_y, rotate_z and rotate_axis methods.
Added arbitrary feature, providing arbitrary trait implementations for
glam types.
Added zerocopy feature, providing zerocopy trait implementations for
glam types.
DQuat::is_near_identity() more precise,
previously it used the same threshold as Quat::is_near_identity.Updates from the rust-gpu project, primarily removing the requirement to use repr(simd) on spirv.
repr(simd) on spirv.Reverted change to use self in vectors and &self in vectors and matrices as this was a breaking change for some code.
self in vectors and &self in vectors and matrices
as this was a breaking change for some code.Added encase feature, providing encase trait implementations for glam types.
encase feature, providing encase trait implementations for glam
types.self for vector and quat methods and &self for matrix and
affine methods.Added Vec3::to_vec3a and Vec3A::to_vec3 methods.
Vec3::to_vec3a and Vec3A::to_vec3 methods.bytemuck feature on spirv targets.Added 4x4 matrix frustum_lh, frustum_rh and frustum_rh_gl methods.
Added 4x4 matrix frustum_lh, frustum_rh and frustum_rh_gl methods.
Added assign methods for all corresponding op trait impls (e.g. add_assign,
div_assign, mul_assign, sub_assign etc.)
Added by reference implementations for all op trait impls.
bytemuck trait implementations now use derive macros to catch potentially
misuse.Fixed unsoundness in core-simd implementation of Vec3A to [f32;3] array
and Vec3A to Vec3 conversion.
Fixed potential unsoundness in conversion from Vec4 to
(f32, f32, f32, f32) tuple conversion.
Added speedy feature, implementing serialization and deserialization via the speedy crate.
Added speedy feature, implementing serialization and deserialization via the
speedy crate.
Added fract_gl to the 'FloatExt' trait which uses the GLSL specification of
fract, self - self.floor().
Added precision conversion functions for affine types: Affine3A::as_daffine3, DAffine3::as_affine3a, Affine2::as_daffine2 and DAffine3::as_affine2
Added precision conversion functions for affine types:
Affine3A::as_daffine3, DAffine3::as_affine3a, Affine2::as_daffine2 and
DAffine3::as_affine2
Added normalize_and_length method to f32 and f64 vectors.
if
check instead of the built in Rust floating point primitive min and max
methods. The Rust methods have special handling for NaN propagation however
because this is not consistent between the different SIMD implementations in
glam the most efficient implementation is preferred.Added usize vector types, USizeVec2, USizeVec3 and USizeVec4.
Added usize vector types, USizeVec2, USizeVec3 and USizeVec4.
Added min_position and max_position methods for vector types, which return
the index of the min or max element in the vector.
Added rotate_towards method to 3D vector types.
rotate_towards implementations
as it was unnecessary and would not preserve the length of the input.The up and dir vectors passed to affine and matrix look_to_lh and look_to_rh methods must now be normalized. This was changed to be consistent with ot
The up and dir vectors passed to affine and matrix look_to_lh and
look_to_rh methods must now be normalized. This was changed to be consistent
with other methods.
Updated the optional rand dependency to 0.9
Updated the optional rkyv dependency to 0.8
Implemented rand Uniform distribution trait for all vector types.
Added "swizzle assignment" support to vector swizzles, in the form of
v.with_zx(ivec2(1, 2)) which will return a copy of v where the z
and x components are set to 1 and 2 respectively.
Added Mat3 and Quat look_at_lh and look_at_rh methods.
Added Quat look_to_lh and look_to_rh methods.
Added 3D vector slerp method that performs a spherical linear interpolation
between a source and a target 3D vector.
Added manhattan_distance, checked_manhattan_distance and
chebyshev_distance methods to integer vector types which calculates the
Manhattan Distance and the Chebyshev Distance between two vectors.
Added 4x4 matrix from_mat3_translation method to have parity with the 3D
affine type.
Quat::rotate_towards() now returns the target Quat if the angle is small.
Previously self was returned which could skip the rotation entirely.Nothing published for this version
Fix regression in vector write_to_slice methods where the destination had to be the same size as the input, but it should support writing to a slice t
write_to_slice methods where the destination had to
be the same size as the input, but it should support writing to a slice that
is the same size or larger than the input.Added i8 and u8 vector types, I8Vec2, I8Vec3, I8Vec4, U8Vec2, U8Vec3 and U8Vec4.
Added i8 and u8 vector types, I8Vec2, I8Vec3, I8Vec4,
U8Vec2, U8Vec3 and U8Vec4.
Added Mat4::project_point3a(Vec3A) method transforming points by
perspective projections.
Removed normalized assertions from quaternion multiplies as sometimes this is valid.
Include Debug and Display implementations on spirv targets.
Optimized vector from_slice and write_to_slice methods.
Improved serde error messages.
EulerRot has been reimplemented and now has support for 24 different rotation order enum values.
EulerRot has been reimplemented and now has support for 24 different
rotation order enum values.Added 3x3 matrix from_mat4_minor() and 2x2 matrix from_mat3_minor()
methods.
Added bvec2, bvec3, bvec3a, bvec4 and bvec4a vector mask creation
functions.
Added all 24 possible intrinsic and extrinsic Euler angle rotation
combinations to EulerRot enum.
Added is_finite_mask method to vector types which returns a vector mask.
Added reflect and refract methods to vector types.
Added to_euler methods to matrix types which extracts Euler angles from a
rotation matrix for a given EulerRot.
Added generic map method to vector types which applies a functor to all
vector elements.
Vector arithmetic ops are now implemented on references.
Removed derives from glam::deref types used by Deref on SIMD vector types. These unintentionally added support for traits like PartialOrd to SIMD vect
Removed derives from glam::deref types used by Deref on SIMD vector
types. These unintentionally added support for traits like PartialOrd to
SIMD vector types. This may break existing code that was depending on this.
Please use cmple().all() etc. instead of PartialOrd methods.
Removed impl From<Vec4> for Vec3A as this violated the From trait
contract that conversions should be lossless. Please use the explicit
Vec3A::from_vec4 method instead.
Renamed 2D vector angle_between to angle_to to differentiate from the 3D
angle_between which has different semantics to the 2D version.
Added aarch64 neon support.
Added rotate_towards methods for 2D vectors and quaternions.
Added Vec3A::from_vec4 method which can perform a no-op conversion when
SIMD is used. This replaces the impl From<Vec4> for Vec3A implementation.
Changed implementation of vector fract method to match the Rust implementation instead of the GLSL implementation, that is self - self.trunc() instead
fract method to match the Rust
implementation instead of the GLSL implementation, that is self - self.trunc() instead of self - self.floor().fract_gl which uses the GLSL specification of fract,
self - self.floor().Minimum Supported Rust Version bumped to 1.68.2 for impl From for {f32,f64} support.
impl From<bool> for {f32,f64} support.Respect precision format specifier in Display implementations. Previously it was ignored.
Corrected precision documentation for vector is_normalized methods and
changed the internal check to use 2e-4 to better match the documented
precision value of 1e-4.
Added with_x, with_y, etc. to vector types which returns a copy of
the vector with the new component value.
Added midpoint method to vector types that returns the point between two
points.
Added move_towards for float vector types.
Added saturating add and sub methods for signed and unsigned integer vector types.
Added element wise sum and product methods for vector types.
Added element wise absolute values method for matrix types.
Added from_array method for boolean vector types.
Added normalize_or method to vector types that returns the specified value
if normalization failed.
Added From<BVecN> support for all vector types.
Added Div and DivAssign by scalar implementations to matrix types.
…with other types. The old methods have been deprecated.
Vec4 to always used BVec4A as a mask type, regardless if the
target architecture has SIMD support in glam. Previously this was inconsistent
on different hardware like ARM. This will have a slight performance cost when
SIMD is not available. Vec4 will continue to use BVec4 as a mask type when
the scalar-math feature is used.Made Affine2 implement the bytemuck::AnyBitPattern trait instead of
bytemuck::Pod as it contains internal padding due to Mat2 being 16 byte
aligned.
Updated the core-simd implementation to build on latest nightly.
Added to_angle method to 2D vectors.
Added FloatExt trait which adds lerp, inverse_lerp and remap methods
to f32 and f64 types.
Added i16 and u16 vector types, I16Vec2, I16Vec3, I16Vec4,
U16Vec2, U16Vec3 and U16Vec4.
Renamed Quat::as_f64() to Quat::as_dquat() and DQuat::as_f32() to
DQuat::as_quat() to be consistent with other types. The old methods have
been deprecated.
Added the #[must_use] attribute to all pure functions following the
guidelines for the Rust standard library.
Fixed singularities in Quat::to_euler.
Quat::to_euler.Added div_euclid and rem_euclid to integer vector types.
Added wrapping and saturating arithmetic operations to integer vector types.
Added to_scale_angle_translation to 2D affine types.
Added mul_assign ops to affine types.
rkyv dependency.Implemented missing bytemuck, mint, rand, rkyv and serde traits for i64 and u64 types.
Implemented missing bytemuck, mint, rand, rkyv and serde traits for
i64 and u64 types.
Added missing safe From conversions from f32 vectors to f64 vectors.
Added TryFrom implementations between different vector types.
Added test and set methods to bool vector types for testing and setting
individual mask elements.
Added MIN, MAX, INFINITY and NEG_INFINITY vector constants.
Enabling libm in a std build now overrides the std math functions. This is unlikely to break anything but it is a change in behavior.
libm in a std build now overrides the std math functions. This
is unlikely to break anything but it is a change in behavior.Added i64 and u64 vector types; I64Vec2, I64Vec3, I64Vec4,
U64Vec2, U64Vec3 and U64Vec4.
Added length_squared method on signed and unsigned integer vector types.
Added distance_squared method on signed integer vector types.
Implemented the bytemuck AnyBitPattern trait on Vec3A, Mat3A and
Affine3A.
to_axis_angle for improved numerical stability.serde_derive for improved compile times when using
serde.When the scalar-math feature is enabled the vector mask type for Vec3A was changed from BVec3 to BVec3A.
scalar-math feature is enabled the vector mask type for Vec3A was
changed from BVec3 to BVec3A.copysign method to signed vector types.Removed deprecated const_* macros. These have been replaced by const fn methods.
Added u32 implementation of BVec3A and BVec4 when SIMD is not available.
These are used instead of aliasing to the bool implementations.
Removed Add, Sub, and scalar Mul implementations from affine types as
they didn't make sense on these types.
Removed deprecated const_* macros. These have been replaced by const fn
methods.
Fixed neg and signum to consistently handle negative zero across multiple
platforms.
Removed register_attr feature usage for SPIR-V targets.
Added missing Serialize, Deserialize and PartialEq implementations.
Added Sum<Self> and Product<Self> implementations for all vector, matrix
and quaternion types.
Added 4x4 matrix methods look_to_lh and look_to_rh. These were previously
private.
Added dot_into_vec methods to vector which returns the result of the dot
product splatted to all vector lanes.
Added is_negative_bitmask to vector types which returns a u32 of bits for
each negative vector lane.
Added splat method and TRUE and FALSE constants to all BVec types.
Added from_mat3a methods to Affine2, Mat2, Mat4 and Quat types.
Disable serde default features.
Made to_cols_array, to_cols_array_2d, and from_diagonal methods
const fn.
Fixed glam_assert being too restrictive in matrix transform point and transform vector methods.
glam_assert being too restrictive in matrix transform point and
transform vector methods.core-simd feature which enables SIMD support via the
unstable core::simd module.PartialEq and Eq instead of providing a trait implementation
for all non SIMD types.Restore missing $crate:: prefix in deprecated const_* macros.
Restore missing $crate:: prefix in deprecated const_* macros.
Fixed some performance regressions in affine and matrix determinant and inverses due to lack of inlining.
Fixed some performance regressions in the SSE2 Vec3A to Vec3 from
conversion.
BitXor and BitXorAssign traits for bool vectors.Fix compilation when FMA support is enabled.
The const new macros where deprecated.
Minimum Supported Version of Rust bumped to 1.58.1 to allow const pointer
dereferences in constant evaluation.
The abs_diff_eq method on Mat2 and DMat2 now takes other by value
instead of reference. This is consistent with the other matrix types.
The AsMut and Deref trait implementations on Quat and DQuat was
removed. Quaternion fields are now public.
The AsRef trait implementations were removed from BVec2, BVec3,
BVec3A, BVec4 and BVec4A.
NEG_ONE constant was added to all signed vector types.
NEG_X, NEG_Y, NEG_Z and NEG_W negative axis vectors were added to
signed vector types.
The rotate and from_angle methods were added to Vec2 and DVec2.
from_angle returns a 2D vector containing [angle.cos(), angle.sin()] that
can be used to rotate another 2D vector.
The from_array const function was added to all vector types.
Source code is now largely generated. This removes most usage of macros internally to improve readability. There should be no change in API or behavior other than what is documented here.
Many methods have been made const fn:
new, splat, from_slice, to_array and extend on vector typesfrom_cols, from_cols_array, from_cols_array_2d, from_cols_slice on
matrix typesfrom_xyzw and from_array on quaternion typesfrom_cols on affine typesThe const new macros where deprecated.
TransformRT and TransformSRT types.Fixed a bug in the scalar implementation of 4D vector max_element method where the w element check was incorrect.
max_element method
where the w element check was incorrect.Fixed a bug with quaternion slerp with a rotation of tau.
slerp with a rotation of tau.Added to_array() to Quat and DQuat.
to_array() to Quat and DQuat.mul_add method to all vector types - note that this will be slower
without hardware support enabled.fast-math flag which will sacrifice some float determinism for
speed.sse2 and wasm32 implementations of
Mat4::determinant().Fixed SPIR-V build which was broken due to a typo.
Removed deprecated as_f32(), as_f64(), as_i32() and as_u32() methods.
from_rotation_arc_2d() method to Quat and DQuat which will
return a rotation between two 2D vectors around the z axis.Neg operator for matrix types.cuda feature which forces glam types to match cuda's alignment
requirements.Quat and DQuat methods from_rotation_arc() and
from_rotation_arc_colinear() are now available in no_std.Vec3 and DVec3 methods any_orthogonal_vector(),
any_orthonormal_vector() and any_orthonormal_pair() are now available in
no_std.repr(C) attribute to affine types.as_f32(), as_f64(), as_i32() and as_u32() methods.Minimum Supported Version of Rust bumped to 1.52.1 for an update to the mint crate.
mint
crate.IntoMint trait from the mint crate.mint conversions for Mat3A.as_vec3a cast methods to vector types.Removed truncating vector From implementations. Use .truncate() or swizzle methods instead.
From implementations. Use .truncate() or swizzle
methods instead.Not, Shl, Shr, BitAnd, BitOr and BitXor implementations for
all IVec and UVec vector types.NAN constant for all types.glam's architecture.Sum and Product traits are now implemented in no_std builds.Deprecated as_f32(), as_f64(), as_i32() and as_u32() methods in favor of more specific methods such as as_vec2(), as_dvec2(), as_ivec2() and as_uvec2(…
wasm-bindgen-test
and rustdoc alias support.wasm32 SIMD intrinsics support.rkyv serialization crate.Rem and RemAssign implementations for all vector types.xyz() method for returning the vector part of the
quaternion.From((Scalar, Vector3)) for 4D vector types.as_f32(), as_f64(), as_i32() and as_u32() methods in favor
of more specific methods such as as_vec2(), as_dvec2(), as_ivec2() and
as_uvec2() and so on.Fix alignment unit tests on non x86 platforms.
Fix alignment unit tests on i686 and S390x.
Added serde support for Affine2, DAffine2, Affine3A and DAffine3.
serde support for Affine2, DAffine2, Affine3A and DAffine3.Also removed SPIR-V support for some methods that used as_ref(), including hash(). Not a breaking change as these methods would not have worked anyway…
Add and Sub implementations of scalar values for vector
types may create ambiguities with existing calls to add and sub.From<Mat3> implementation for Mat2 and From<DMat3> for DMat2.
These have been replaced by Mat2::from_mat3() and DMat2::from_mat3().From<Mat4> implementation for Mat3 and From<DMat4> for DMat3.
These have been replaced by Mat3::from_mat4() and DMat3::from_mat4().from_slice_unaligned(), write_to_slice_unaligned(),
from_rotation_mat4 and from_rotation_ypr() methods.col_mut() method which returns a mutable reference to a matrix column
to all matrix types.AddAssign, MulAssign and SubAssign implementations for all matrix
types.Add and Sub implementations of scalar values for vector types.glam_assert! checks and documented methods where they are used.project_onto(),
project_onto_normalized(), reject_from() and reject_from_normalized().Mat2::from_mat3(), DMat2::from_mat3(), Mat3::from_mat4(),
DMat3::from_mat4() which create a smaller matrix from a larger one,
discarding a final row and column of the input matrix.Mat3::from_mat2(), DMat3::from_mat2(), Mat4::from_mat3() and
DMat4::from_mat3() which create an affine transform from a smaller linear
transform matrix.AsRef and AsMut on SPIR-V targets. Also removed SPIR-V
support for some methods that used as_ref(), including hash(). Not a
breaking change as these methods would not have worked anyway.sprirv-std dependency was removed, rust-gpu depends on glam internally again for now.
sprirv-std dependency was removed, rust-gpu depends on glam internally
again for now.must_use attribute to all inverse(), normalize(),
try_normalize(), transpose() and conjugate() methods.fract() method to float vector types which return a vector containing
self - self.floor().approx crate. Note that all glam types
implement their own abs_diff_eq() method without requiring the approx
dependency.Your coding agent can read these notes before it upgrades. Set up the MCP server →