Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time



IMPORTANT 2: GFM has been deprecated in favor of dplug:math. Use version 8 if you want the former content gfm:integer and gfm:math content. No PR will be accepted.


Here is something I wanted to do for a while. I'm abandoning gfm in favor of dplug:math (vectors, matrices, and box), which will be tailored for Dplug needs. I know gfm has been a reliable and stable library over the years but there should be much better libraries around nowadays. gfm has never been super good in usability and purpose; and I just have no need for such a generic library anymore. I hope you understand and go build a better library. Overstretching with too many libraries to maintain is not very good for me. p0nce

IMPORTANT: GFMv8 has been stripped down to gfm:math and gfm:integers only. Use version 7 if you want the former content.

See the changelog here to upgrade:


Public Domain (Unlicense).

How to use GFM?

Add the sub-package you are interested in in your dub.json:

      "dependencies": {
        "gfm:math": "~>8.0"


Why use GFM?

  • GFM provides math primitives that are useful for games like vectors/matrices/quaternions in the gfm:math package,
  • Also provide arbitrary sized integers, fixed point numbers, and half-float numbers in gfm:integers,

This library is really small now

There used to be a lot more stuff in GFM previously. See to discover lots of useful libraries for your programs.