summaryrefslogtreecommitdiff
path: root/ReleaseNotes.md
blob: 174ecaf9ab6c997af81e70b3f0964b8992e6949a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# v0.3.3 (TBD)

  Theme: Bugfix

  User-facing changes:

   - ReEncoder: Fixes a regression in v0.3.1 where it erroneously
     enters compact mode when CompactIfUnder is set and write barriers
     are in use.

   - ReEncoder: Fixes a regression in v0.3.1 where it sometimes emits
     extra (but syntactically valid) newlines when write barriers are
     in use.

# v0.3.2 (2023-02-03)

  Theme: Bugfix

  User-facing changes:

   - ReEncoder: Fixes a regression in v0.3.1 where it sometimes emits
     extra (but syntactically valid) newlines.

# v0.3.1 (2023-01-31)

  Theme: Performance

  This release does a bunch of performance tuning and optimizations,
  with no user-visible changes other than memory consumption and CPU
  time.  Based on benchmarks with a real-world use-case, it is now
  roughly an order of magnitude faster, with much lower memory
  consumption (the big-O of memory consumption was always pretty low,
  but there were some big constant factors before).

# v0.3.0 (2023-01-30)

  Theme: Breaking changes

  This release makes a breaking change to the way *ReEncoder works.
  This change both better fits what's convenient to use, and enables
  making future performance improvements.

  Breaking changes:

   - ReEncoder: Instead of instantiating a `*ReEncoder` with

       ```go
       reenc := &lowmemjson.ReEncoder{Out: w, settings}
       ```

     it is now instantiated with

       ```go
       reenc := lowmemjson.NewReEncoder(w, lowmemjson.ReEncoderConfig{settings})
       ```

# v0.2.1 (2023-01-30)

  Theme: Code quality

  This release improves code quality; getting various linters to pass,
  adding tests (and a few bug-fixes), refactoring things to be
  clearer, fixing some mistakes in the documentation.

  User-facing changes:

   - Encoder: `*EncodeMethodError` is now also used when a method
     produces invalid JSON.
   - Decoder: The offset in `*DecodeTypeError`s now correctly point
     the start of the value, rather than somewhere in the middle of
     it.

# v0.2.0 (2023-01-26)

  Theme: Add documentation

  This release doesn't make any major changes, and is just adding
  documentation.  I have removed a few minor things that I didn't want
  to write documentation for.

  Breaking changes:

   - Drop the following shorthand functions:
     + `func Decode(r io.RuneScanner, ptr any) error        { return NewDecoder(r).Decode(ptr) }`
     + `func DecodeThenEOF(r io.RuneScanner, ptr any) error { return NewDecoder(r).DecodeThenEOF(ptr) }`
     + `func Encode(w io.Writer, obj any) (err error)       { return NewEncoder(w).Encode(obj) }`
   - Drop `const Tab = "\t"`.

# v0.1.0 (2022-09-19)

  Theme: Initial release