diff --git a/CHANGELOG.md b/CHANGELOG.md index fcfa112..e5e33f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,24 @@ +## 0.9.3 / 2019-05-16 +* [CHANGE] Required Go version is now 1.9+. #561 +* [FEATURE] API client: Add POST with get fallback for Query/QueryRange. #557 +* [FEATURE] API client: Add alerts endpoint. #552 +* [FEATURE] API client: Add rules endpoint. #508 +* [FEATURE] push: Add option to pick metrics format. #540 +* [ENHANCEMENT] Limit time the Go collector may take to collect memstats, + returning results from the previous collection in case of a timeout. #568 +* [ENHANCEMENT] Pusher now requires only a thin interface instead of a full + `http.Client`, facilitating mocking and custom HTTP client implementation. + #559 +* [ENHANCEMENT] Memory usage improvement for histograms and summaries without + objectives. #536 +* [ENHANCEMENT] Summaries without objectives are now lock-free. #521 +* [BUGFIX] promhttp: `InstrumentRoundTripperTrace` now takes into account a pre-set context. #582 +* [BUGFIX] `TestCounterAddLarge` now works on all platforms. #567 +* [BUGFIX] Fix `promhttp` examples. #535 #544 +* [BUGFIX] API client: Wait for done before writing to shared response + body. #532 +* [BUGFIX] API client: Deal with discovered labels properly. #529 + ## 0.9.2 / 2018-12-06 * [FEATURE] Support for Go modules. #501 * [FEATURE] `Timer.ObserveDuration` returns observed duration. #509 diff --git a/README.md b/README.md index e2b464f..2336eb1 100644 --- a/README.md +++ b/README.md @@ -13,51 +13,39 @@ __This library requires Go1.9 or later.__ ## Important note about releases, versioning, tagging, and stability -While our goal is to follow [Semantic Versioning](https://semver.org/), this -repository is still pre-1.0.0. To quote the -[Semantic Versioning spec](https://semver.org/#spec-item-4): “Anything may -change at any time. The public API should not be considered stable.” We know -that this is at odds with the widespread use of this library. However, just -declaring something 1.0.0 doesn't make it 1.0.0. Instead, we are working -towards a 1.0.0 release that actually deserves its major version number. +In this repository, we used to mostly ignore the many coming and going +dependency management tools for Go and instead wait for a tool that most of the +community would converge on. Our bet is that this tool has arrived now in the +form of [Go +Modules](https://github.com/golang/go/wiki/Modules#how-to-upgrade-and-downgrade-dependencies). -Having said that, we aim for always keeping the tip of master in a workable -state. We occasionally tag versions and track their changes in CHANGELOG.md, -but this happens mostly to keep dependency management tools happy and to give -people a handle they can talk about easily. In particular, all commits in the -master branch have passed the same testing and reviewing. There is no QA -process in place that would render tagged commits more stable or better tested -than others. +To make full use of what Go Modules are offering, the previous versioning +roadmap for this repository had to be changed. In particular, Go Modules +finally provide a way for incompatible versions of the same package to coexist +in the same binary. For that, however, the versions must be tagged with +different major versions of 1 or greater (following [Semantic +Versioning](https://semver.org/)). Thus, we decided to abandon the original +plan of introducing a lot of breaking changes _before_ releasing v1 of this +repository, mostly driven by the widespread use this repository already has and +the relatively stable state it is in. -There is a plan behind the current (pre-1.0.0) versioning, though: +To leverage the mechanism Go Modules offers for a transition between major +version, the current plan is the following: -- v0.9 is the “production release”, currently tracked in the master - branch. “Patch” releases will usually be just bug fixes, indeed, but - important new features that do not require invasive code changes might also - be included in those. We do not plan any breaking changes from one v0.9.x - release to any later v0.9.y release, but nothing is guaranteed. Since the - master branch will eventually be switched over to track the upcoming v0.10 - (see below), we recommend to tell your dependency management tool of choice - to use the latest v0.9.x release, at least for your production software. In - that way, you should get bug fixes and non-invasive, low-risk new features - without the need to change anything on your part. -- v0.10 is a planned release that will have a _lot_ of breaking changes - (despite being only a “minor” release in the Semantic Versioning terminology, - but as said, pre-1.0.0 means nothing is guaranteed). Essentially, we have - been piling up feature requests that require breaking changes for a while, - and they are all collected in the - [v0.10 milestone](https://github.com/prometheus/client_golang/milestone/2). - Since there will be so many breaking changes, the development for v0.10 is - currently not happening in the master branch, but in the - [dev-0.10 branch](https://github.com/prometheus/client_golang/tree/dev-0.10). - It will violently change for a while, and it will definitely be in a - non-working state now and then. It should only be used for sneak-peaks and - discussions of the new features and designs. -- Once v0.10 is ready for real-life use, it will be merged into the master - branch (which is the reason why you should lock your dependency management - tool to v0.9.x and only migrate to v0.10 when both you and v0.10 are ready - for it). In the ideal case, v0.10 will be the basis for the future v1.0 - release, but we cannot provide an ETA at this time. +- The v0.9.x series of releases will see a small number of bugfix releases to + deal with a few remaining minor issues (#543, #542, #539). +- After that, all features currently marked as _deprecated_ will be removed, + and the result will be released as v1.0.0. +- The planned breaking changes previously gathered as part of the v0.10 + milestone will now go into the v2 milestone. The v2 development happens in a + [separate branch](https://github.com/prometheus/client_golang/tree/dev-v2) + for the time being. v2 releases off that branch will happen once sufficient + stability is reached. v1 and v2 will coexist for a while to enable a + convenient transition. +- The API client in prometheus/client_golang/api/… is still considered + experimental. While it will be tagged alongside the rest of the code + according to the plan above, we cannot strictly guarantee semver semantics + for it. ## Instrumenting applications diff --git a/VERSION b/VERSION index 2003b63..965065d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.9.2 +0.9.3 diff --git a/go.mod b/go.mod index 2168f76..e2c8b8b 100644 --- a/go.mod +++ b/go.mod @@ -2,9 +2,10 @@ module github.com/prometheus/client_golang require ( github.com/beorn7/perks v1.0.0 + github.com/go-logfmt/logfmt v0.4.0 // indirect github.com/golang/protobuf v1.3.1 github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 - github.com/prometheus/common v0.3.0 - github.com/prometheus/procfs v0.0.0-20190412120340-e22ddced7142 + github.com/prometheus/common v0.4.0 + github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084 github.com/prometheus/tsdb v0.7.1 ) diff --git a/go.sum b/go.sum index d998271..00c60f6 100644 --- a/go.sum +++ b/go.sum @@ -12,6 +12,8 @@ github.com/go-kit/kit v0.8.0 h1:Wz+5lgoB0kkuqLEc6NVmwRknTKP6dTGbSqvhZtBI/j0= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0 h1:8HUsc87TaSWLKwrnumgC8/YconD2fJQsRJAsWaPg2ic= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0 h1:MP4Eh7ZCb31lleYCFuwm0oe4/YGak+5l1vA2NOE80nA= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= @@ -35,11 +37,11 @@ github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1: github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 h1:S/YWwWx/RA8rT8tKFRuGUZhuA90OyIBpPCXkcbwU8DE= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.3.0 h1:taZ4h8Tkxv2kNyoSctBvfXEHmBmxrwmIidZTIaHons4= -github.com/prometheus/common v0.3.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.0 h1:7etb9YClo3a6HjLzfl6rIQaU+FDfi0VSX39io3aQ+DM= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190412120340-e22ddced7142 h1:JO6VBMEDSBX/LT4GKwSdvuFigZNwVD4lkPyUE4BDCKE= -github.com/prometheus/procfs v0.0.0-20190412120340-e22ddced7142/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084 h1:sofwID9zm4tzrgykg80hfFph1mryUeLRsUfoocVVmRY= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/tsdb v0.7.1 h1:YZcsG11NqnK4czYLrWd9mpEuAJIHVQLwdrleYfszMAA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=