If you create a distribution but don't write to it, the mean of the distribution is NaN - which Aeson encodes as `null`. Thus we have to make sure that when working with the mean, we check for `null`.
We want to encourage users to use the ekg-core package instead.
Users should import these modules from the ekg-core package instead.
This is consistent with other metrics.
The new package, ekg-core, contains the metrics store, modules for defining metrics, and functions for sampling the metrics. The counter naming is also changed to include a namespace part. For example "myapp.requests". Finally the JSON format has been changed to be more self-descriptive.
Since we're allocating memory for use outside Haskell, we're responsible for freeing it. Switched to ForeignPtr to automate this.
Counters now scale orders of magnitudes better as the number of writers to the same counter increases. Here's the results on our current benchmark on a 6 core machine: cores 1 6 before 1.87s 81.09s after 0.11s 0.32s Note how the very heavy contention gives a slowdown rather than a speedup as the number of cores increases, but the new implementation slows down much less than the old one and is also generally faster.
The benchmark tests a single heavily contended counter.
Re-add the minified source as well, as there's been some tiny modification since I last downloaded the source. Required by e.g. Debian. Fixes #20.
Handlers are no longer triggered by a prefix of their path.