License:0BSD Minimum Rust Version travis.ci AppVeyor crates.io docs.rs

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:

rust mod foo; pub use foo::*;

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

Contributing

At the moment I'm using the adding of new operations to the library as a bit of a way to re-verify that I personally know how each thing works because it's sure been a bit since I had to do any of this. Accordingly, having other people add in large piles of functionality isn't something I'm super interested in.

That said, there are plenty of places where people who want to contribute can help speed up the process: