Assisted-by: GLM 5.3 Flash
This commit is contained in:
@@ -229,6 +229,66 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
a leading dot, `interpres: .port: ...`; the message now reads
|
a leading dot, `interpres: .port: ...`; the message now reads
|
||||||
`interpres: port: ...`, the shape `EncodeError.Path` already used.
|
`interpres: port: ...`, the shape `EncodeError.Path` already used.
|
||||||
|
|
||||||
|
### Migration from 1.x
|
||||||
|
|
||||||
|
**The module path.** 2.0 lives at `sourcedock.dev/petrbalvin/interpres/v2`,
|
||||||
|
the suffix the Go toolchain requires of every major version 2 module. Change
|
||||||
|
every import and `go get` line:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
go get sourcedock.dev/petrbalvin/interpres/v2
|
||||||
|
```
|
||||||
|
|
||||||
|
**TOML 1.1 only.** The acceptance contract is the TOML 1.1 corpus, and the
|
||||||
|
promise that every 1.0 document parses exactly as before is withdrawn.
|
||||||
|
Documents whose verdict changes are the ones 1.1 relaxed: `\e` and `\xHH`
|
||||||
|
escapes, times without seconds, multi-line inline tables with comments and a
|
||||||
|
trailing comma. Nothing that parsed in 1.x stops parsing, because the 1.1
|
||||||
|
grammar contains the 1.0 one.
|
||||||
|
|
||||||
|
**The output takes the 1.1 form.** A date-time writes seconds only when the
|
||||||
|
value carries them, a fraction drops its trailing zeros, and a long inline
|
||||||
|
table breaks across lines. A document written from the same value can come
|
||||||
|
out shorter; it re-parses to the same value.
|
||||||
|
|
||||||
|
**Text methods on by default.** A type implementing
|
||||||
|
`encoding.TextMarshaler` or `encoding.TextUnmarshaler` now takes the text
|
||||||
|
path with no option to switch it off. A struct that implemented the
|
||||||
|
interface encodes as a string where it was a table before. `MarshalTOML` and
|
||||||
|
`UnmarshalTOML` still win.
|
||||||
|
|
||||||
|
**One Go type per date-time kind.** Offset date-times hand back
|
||||||
|
`OffsetDateTime`, not a bare `time.Time`. Code that type-asserts the tree or
|
||||||
|
expects `time.Time` inside `UnmarshalTOML` needs the new wrapper; a
|
||||||
|
destination field of type `time.Time` keeps working.
|
||||||
|
|
||||||
|
**The document carries what the map could not.** `Parse` returns a
|
||||||
|
`*Document` with the key order, the inline distinction and the comments;
|
||||||
|
`ParseMap` gives the plain `map[string]any` tree the old `Parse` returned.
|
||||||
|
The document is writable, and `Marshal` writes it back with its comments.
|
||||||
|
|
||||||
|
**Renamed API.** `Encoder.GroupByKind(bool)` is `Encoder.Layout(kind)` with
|
||||||
|
`LayoutKindGrouped` (the old default) and `LayoutKindDeclaration` (the old
|
||||||
|
`false`); `UseLiteralMultiline` is `LiteralMultiline`.
|
||||||
|
|
||||||
|
**Tag options.** `omitempty` follows encoding/json: it now also drops empty
|
||||||
|
strings, zero numbers, `false`, nil pointers and nil interfaces. `required`
|
||||||
|
demands a key at decode. `inline` forces the inline table form at encode.
|
||||||
|
`comment=text` carries a comment `EmitFieldComments` prints.
|
||||||
|
|
||||||
|
**Errors.** `DecodeError.Path` is a `Path` (segments with a `String()`
|
||||||
|
renderer), `EncodeError.Path` the same type instead of a plain string, and
|
||||||
|
both messages render `interpres: server.ports[2]: ...` with one prefix.
|
||||||
|
`SyntaxError` gained `Offset`, `Column` and `SourceLine`. Decode errors into
|
||||||
|
a `Number`-carrying tree and the fixed-size array decode are new shapes a
|
||||||
|
match on the old messages would not see.
|
||||||
|
|
||||||
|
**Decoding shapes.** `map[string]any` values merge into a non-empty map
|
||||||
|
destination; untagged embedded maps beyond the first stay empty; numbers can
|
||||||
|
stay literals under `UseNumber`; local date-times can decode into
|
||||||
|
`time.Time` under `LocalTimeLocation`. All three are opt-in or additive
|
||||||
|
except where noted above.
|
||||||
|
|
||||||
## [1.1.0] - 2026-09-18
|
## [1.1.0] - 2026-09-18
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
Reference in New Issue
Block a user