Tag release v1.0.0 This release adds much more detailed errors, support for the `toml.Marshaler` interface, and several fixes. There is no special meaning in the jump to v1.0; the 0.x releases were always treated as if they're 1.x with regards to compatibility; the versioning scheme for this library predates the release of modules. New features ------------ - Error reporting is much improved; the reported position of errors should now always be correct and the library can print more detailed errors (#299, #332) Decode always return a `toml.ParseError`, which has three methods: - `Error()` behaves as before and shows a single concise line with the error. - `ErrorWithLocation()` shows the same error, but also shows the line the error occurred at, similar to e.g. clang or the Rust compiler. - `ErrorWithUsage()` is the same as `ErrorWithPosition()`, but may also show a longer usage guidance message. This isn't always present (in which case it behaves identical to `ErrorWithPosition()`), but it should be present for most common mistakes and sources of confusion. Which error the correct one to use is depends on your application and preferences; in general I would recommend using at least `ErrorWithPosition()` for user-facing errors, as it's much more helpful for users of any skill level. If your users are likely to be non-technical then `ErrorWithUsage()` is probably a good idea; I did my best to avoid technical jargon such as "newline" and phrase things in a way that's understandable by most people not intimately familiar with these sort of things. Additionally, the TOML key that fialed should now always be reported in all errors. - Add `toml.Marshaler` interface. This can be used if you want full control over how something is marshalled as TOML, similar to `json.Marshaler` etc. This takes precedence over `encoding.TextMarshaler`. (#327) - Allow TOML integers to be decoded to a Go float (#325) Previously `int = 42` could only be decoded to an `int*` type; now this can also be decoded in a `float` type as long as it can be represented without loss of data. Fixes ----- - Key.String() is now quoted when needed (#333) - Fix decoding of nested structs on 32bit platforms (#314) - Empty slices are now always `[]T{}` rather than nil, which was the behaviour in v0.3.1 and before. While they are identical for most purposes, encoding/json encodes them different (`[]` vs. `null`), making it an (accidentally) incompatible change (#339)