summaryrefslogtreecommitdiff
path: root/deps/jsx/CHANGES.md
blob: 880dcda21080bd477c25650495c5981ad817a516 (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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
vNext

* support for milliseconds in datetimes

v2.7.0

* `return_tail` option
* fixes for edoc generation

v2.6.2

* ensure maps are always enabled when compiling via mix

v2.6.1

* hex.pm maintenance release

v2.6.0

* equivalent to v2.5.3 but created for semver reasons

v2.5.3

* add a `mix.exs` to be buildable by both mix and rebar
* minor README updates

v2.5.2

* fix regression parsing <<"-0e...">> (thanks @c-bik)

v2.5.1

* assume all datetimes are UTC time and add `Z` designator to indicate
* fix parsing issue with datetimes in arrays

v2.5.0

* `consult/2` function for reading a file directly to a json term
* `maps_always` build flag for always returning maps on platforms
  that support them
* dialyzer fixes

v2.4.0

* enough performance improvements to justify a new version. 2-3x
  speedup depending on mode of operation

v2.3.1

* fixes an issue where astral plane json escape sequences were
  inadvertently being converted to the unicode replacement
  character

v2.3

* switched to a faster implementation of string parsing in both
  the decoder and encoder
* expand `uescape` option to the decoder
* allow control codes in json passed to decoder (contrary to the spec,
  yes)

v2.2

* `return_maps` option
* `uescape` option for 7-bit clean output
* add `Makefile` for slightly better `erlang.mk` compatibility
* add `maps_support/0` call to determine whether `jsx` was compiled
  with support for maps or not

v2.1.1

* faster generation of json via iolists
* `repeat_keys` option

v2.1

* force the end of streams with `end_json` in addition to `end_stream`
* support for encoding erlang datetime tuples to iso8601 format
* allow a single trailing comma in objects and arrays

v2.0.4

* more typespec adjustments

v2.0.3

* update some typespecs to make them more comprehensive

v2.0.2

* fixes travis-ci spec

v2.0.1

* fix regression in output of empty objects/arrays

v2.0

* jsx is much more pragmatic by default; common json errors are silently
    ignored (and fixed). stricter parsing must be enabled with options
* add support for encoding otp 17.0's new maps data type
* removed `pre_encode` and `post_decode` options in favour of making jsx
    functions easier to wrap and customize
* streaming behavior is now disabled by default and must be requested explicitly
* removed deprecated function names (`to_json`, `to_term`, `term_to_json`, etc) 
* expanded test coverage
    

v1.4.5

* various fixes to typespecs uncovered by dialyzer
* allow integer keys during encoding
* convert atoms (other than `true`, `false` and `null`) to strings during encoding

v1.4.4

* typespec for `json_term/0` fixed
* incorrect boolean shortcircuiting fixed in multibyte escape processing

v1.4.3

* add empty rebar.config for mix build tool
* add `attempt_atom` option for decoding json objects
* fix a bug related to multibyte codepoints and streaming input
* add a missing error state in the encoder

v1.4.2

* build apparatus cleaned up and streamlined
* new `{raw, <<"json goes here">>}` intermediate form to support direct generation of json
* bugfixes involving inappropriate exceptions from jsx functions

v1.4.1

* fixes a bug with interaction between `dirty_strings` and even numbers of escape characters
* performance enhancements

v1.4

* radically refactored decoder
* `dirty_strings` now behaves intuitively in decoding. bad codepoints, bad utf8, illegal characters and escapes (except `"` and `'` if `single_quoted_strings` is enabled) are ignored completely
* `incomplete_handler` & `error_handler` are now available for use, see documentation in README

v1.3.3

* `pre_encode` now orders input in the order you'd expect

v1.3.2

* `pre_encode` is now able to handle tuples *correctly*

v1.3.1

* `pre_encode` is now able to handle tuples

v1.3

* introduces `prettify/1` and `minify/1`, shortcuts for `format/2`
* introduce `encode/1,2` and `decode/1,2` as primary interface to built in tokenizers. `to_json/1,2` and `to_term/1,2` remain accessible but not advertised
* new `parser/3` function exposes syntactic analysis stage for use with user defined tokenizers
* improved documentation

v1.2.1

* fixes incorrect handling of escaped forward slashes, thanks bob ippolito

v1.2

* rewritten handling of string escaping to improve performance
* `pre_encode` and `post_decode` hooks, see README
* `relax` option

v1.1.2

* add `dirty_strings` option
* more fixes for invalid unicode in strings

v1.1.1

* fixes bug regarding handling of invalid unicode in R14Bxx

v1.1

* improvements to string escaping and json generation performance

v1.0.2

* fixes to function specs
* rewritten README
* `comments` option

v1.0.1

* rebar fix