CI coverage:
- Builds on:
x86
,x86_64
,wasm32
,armv7
,aarch64
,thumbv7neon
- Tests on:
x86
,x86_64
,wasm32
If you're a CI pro, please submit a PR that gives even more CI coverage!
hektor
A library for hekkin vectors.
Goals:
f32
Vectors of dimension 2, 3, and 4.f32
Matrices with one vector per column (aka "column-major"). This is optimal for uploading into OpenGL or Vulkan with a GLSL shader.f32
Quaternions.
STATUS: NOT READY FOR USE
Code Organization Details
Code is largely organized with one type per module. These modules are made part
of the crate by having lib.rs
do the following for each one:
pub use *;
The combination of a private module and a pub use
of the content of said
module causes the outside world see all of the content of the foo
module as
being directly within the crate's top level module. This is easiest on end
users, without forcing us to literally put the entire crate in a single file.
Tests are organized as one test file per operation group. This is a lot easier to keep track of when adding one operation at a time and checking that it's implemented for each appropriate type.
Inline Policy
- Any "accessor" and "view" style methods are marked
#[inline(always)]
. - Most other methods are simply marked
#[inline]
. - Formatting methods are not even marked for inlining.
- If it can be shown that insufficent inlines are the cause of a slowdown
then we can upgrade a particular method to be
#[inline(always)]
, but there must first be some sort of benchmark demonstrating the issue.