forked from tomas-abrahamsson/gpb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathChangeLog
321 lines (254 loc) · 10.8 KB
/
ChangeLog
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
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
-*- coding: utf-8 -*-
Version 3.17.9
2015-Jan-30
* When generating typespecs, generate types for enums, and export
those types. Thanks to Luis Rascão.
Version 3.17.8
2015-Jan-25
* Add support for the enum "option allow_alias = true;" which
allows more than one enum to have the same numerical value. Gpb
will decode to the first defined enum symbol. Gpb no longer
supports allow_alias = false. This option appeared in Google
Protobuf version 2.5.0. Thanks to bb4242 for reporting.
Version 3.17.7
2015-Jan-07
* Bugfix type specs for strings when using the strings_as_binaries
option. Thanks to Luis Rascão.
Version 3.17.6
2014-Dec-30
* Bugfix NIF linking in eunit tests on Mac. Thanks to Luis
Rascão.
Version 3.17.5
2014-Dec-15
* Bugfix generated NIF code for with the -strbin option: the
utf8_to_uint32 function was unused, as was (mostly) the
utf8_count_codepoints. Thanks to Louis-Philippe Gauthier for
reporting.
Version 3.17.4
2014-Dec-12
* Bugfix generated NIF code for enums defined within
messages. Thanks to Louis-Philippe Gauthier for reporting and
providing an initial solution.
* Bugfix generated NIF code for strings with the -strbin (or
strings_as_binaries) option. Thanks to Louis-Philippe Gauthier for
reporting and providing a solution.
Version 3.17.3
2014-Dec-02
* Bugfix parsing of files that specify a package, and import other
files that also specify a(nother) package. Thanks to Wang Chao for
asking the question prompting me to fix this.
* Add a -pkgs command line option, for use_packages.
Version 3.17.2
2014-Nov-13
* Rework the option parsing. No functional changes.
* in helpers/git-hooks/pre-push, allow push of non-tagged
non-master branches to github.
Version 3.17.1
2014-Oct-29
* Bugfix decoding oneof when for sub messages, in the data-driven
decoder in gpb. When the same oneof sub message appeared twice,
the oneof field was overwritten instead of merged. This did not
affect generated code. It only affected the gpb:decode_msg/3.
Version 3.17.0
2014-Oct-26
* Support oneof fields. It appeared in protobuf 2.6.0, and is
essentially several optional fields sharing the same record
position (memory in the C++ alternative).
* Make the name of the two records for fields and rpcs
configurable. They ought to have been prefixed with gpb_ long ago,
but that was not done. At least now, it is possible to redefine
the record names, in case of clashes.
* Handle services in descriptors.
* Bugfix compilation for descriptors.
* Add an option `warnings_as_errors' along with command line
options -Werror, -Wall, -W1, -W0 and -W, that mimimcs the options
to erlc. This also adds a new return value for failures: error.
Version 3.16.0
2014-Oct-13
* When generating NIF code, also do the encoding in the
NIF. Previously, the encoding was still done using plain Erlang,
only decoding was in the NIF. Now the NIF does both encoding and
decoding.
* Fix potential memory leak when decoding, for odd/unusual error
cases.
Version 3.15.0
2014-Oct-13
* Specify that the NIF should run in a cpu-bound dirty scheduler
when supported. This currently requires Erlang 17.3 built with
--enable-dirty-schedulers. Thanks to Louis-Philippe Gauthier for
asking the question, prompting me get it done.
Version 3.14.0
2014-Oct-01
* In the Makefile, allow ERL and ERLC to be overridden via
environment variables, thanks to Graham Crowe.
* Avoid, and attempt to handle, unicode output in compilation
errors in eunit tests.
Version 3.13.0
2014-Sep-17
* New way to invoke the compiler: bin/protoc-erl. Thanks to Luis
Rascão for the implementation.
Version 3.12.2
2014-Sep-16
* Fix a race condition in the Makefile between all and doc
* Elide falsely failing nif tests with 17 on 32 bits with an
erlang vm compiled with gcc 4.9.0 or newer.
Version 3.12.1
2014-Aug-12
* Update the README, with info on meta data for services. Thanks
to Luis Rascão.
Version 3.12.0
2014-Aug-12
* Add support for retrieving meta data for services. Rename
gpb_compile:msg_defs/2,3 into gpb_compile:proto_defs/2,3, but
retain the old function name and option names for backwards
compatibility. Thanks to Luis Rascão for the implementation.
Version 3.11.0
2014-Jul-20
* Add helpers for packaging to hex.pm. Thanks to Dylan Lukes and
Paul Schoenfelder for prompting this.
* Version numbers revisited, the version on github is now intended
to always be reltools compliant, ie: to always consist of only
integers and dots. Thanks to Volodymyr Kyrychenko
for taking the initiative to this.
Version 3.10
2014-Jun-26
* Bugfix verification of optional sub message fields, thanks to
Klas Johansson.
* Fix compilation warnings with Erlang/OTP 17.0
* Improve/bugfix eunit tests in gpb_codegen_tests and
gpb_compile_tests (compilation warning and nif include path issue,
respectively)
Version 3.9
2014-Feb-04
* Avoid single field map access---ie expressions on the form
X#{key}---since neither the maps pre-release, nor the rc1 of R17
supports it. Use matching to access such fields instead. This
applies to records as well as maps. Performance is unaltered.
Version 3.8
2014-Feb-01
* Bugfix generated code when there are no messages defined.
Thanks to Graham Crowe for reporting.
* Add possibility to suffix message/record and names and module
names.
Version 3.7.1
2013-Dec-14
* Bugfix a race condition in the Makefile. Thanks to Graham Crowe
for fruitful discussions.
* Rework the workaround for the bug in the syntax_tools in R16B03,
so that the code that uses the parse transform need not change.
Handle the odd case entirely in the parse transform.
Version 3.7
2013-Dec-13
* Add a (GNU) Makefile, for projects that prefer to build this
way. Thanks to Graham Crowe for suggestions and ideas.
* Rework/fix the substitution in gpb_version.hrl.
* Add support for Erlang/OTP R16B03, by working around a
bug in syntax_tools (reversion of local implicit funs).
* Change the months in this file, from numeric to 3-letters, to
avoid ambiguities with different ways of writing dates in various
parts of the world.
Version 3.6
2013-Nov-13
* Add nif support for the strings_as_binaries (-strbin) option,
thanks to Louis-Philippe Gauthier for reporting this.
* Add an is_binary guard to the top-level generated decode_msg/2
function. Thanks to Klas Johansson for suggesting this.
Version 3.5
2013-Oct-27
* Licence change: from LGPL 2 to LGPL 2.1
Version 3.4
2013-Oct-27
* Licence modification/clarification: clarify that the licence (in
the file COPYING.LIB) does not cover code generated with gpb.
Version 3.3
2013-Oct-27
* Fix several errors in the gpb.app.src so that it works with
Elixir and Relex, thanks to Paulo Almeida.
* When decoding, reject messages with invalid varints.
Invaid varints are encoded with too many bits. Previously,
decoding a varint with very many bits (ie: with very many leading
bytes > 128) would cause the Erlang VM to construct a very large
number when decoding the varint. This would cause the Erlang VM to
use excessive cpu resources and could eventually cause the Erlang
VM to run out of memory. Now parsing fails immediately reading too
many varint bits.
* Fix a bug when generating code for maps.
* Teach the benchmarks to do maps, and also improve
various other benchmark related things.
Version 3.2
2013-Sep-16
* Add preliminary support for maps, for generating code that
encodes from and decodes to maps, as well as merges and verifies
maps. The maps support is experimental.
* Bugfix verification of integers: the wrong error reason could be
generated for integers out of range.
* Bugfix various dialyzer issues.
Version 3.1
2013-Sep-05
* Bugfix compilation of several files (only the first file
was actually compiled, even if several files were specified)
* Add possibility to generate and encode a descriptor, which is a
self-describing byte-blob according to descriptor.proto.
* Add possibility to make the generated code compile-time
independent of gpb by generating the introspection information to
proplists instead of to #field{} records. The latter required
including gpb.hrl at compiletime. (There's no run-time dependency)
* Add possibility to prefix message/record and names and module
names to avoid name collisions.
* Add -type to the command line options, thanks to Louis-Philippe
Gauthier. Previously it existed only as an Erlang API option.
Version 3.0
2013-Aug-24
* Improve decoding performance by roughly 8--19%
* Completely rewrite the code generator. Use a parse-transform
instead of formatting and assembling strings.
* Minor improvement in the generated code for version_as_list.
Version 2.3
2013-Aug-18
* Fix Rebar compile on non-GNU systems, such as Mac OS X, thanks
to Everton Ribeiro.
* Bugfix (mostly) rare compilation breakage: depending on the
date/time of generation, a new-line was inserted, causing a
compilation error.
* Ignore non-version-like tags
Version 2.2
2013-Jul-13
* Wrap generated skip-functions with quotes. Thanks to jesse-ad.
* Experimental support for calling protoc code via a NIF
* Empty lists are now default values for repeated fields. Thanks
to Martin Donath.
* New option, use_packages for prepending the package name found
in the proto file, to the message names. Thanks to Martin Donath.
* New option: strings_as_binaries (-strbin), for returning strings
as binaries. Thanks to Lars Thorsen for suggesting this option.
* New option: {o_erl,Dir} (-o-erl Dir), {o_hrl,Dir} (-o-hrl Dir)
and {o_nif_cc,Dir} (-o-nif-cc Dir) to specify destination
directory by file type. Thanks to Patrik Sandahl for suggesting
those options.
* New option: include_as_lib (-il) to include gpb.hrl as a
library. This makes it easier to integrate with rebar. Thanks to
Martin Donath.
* Generate introspection functions for enum conversions:
M:enum_symbol_by_value/2, M:enum_value_by_symbol/2,
M:enum_symbol_by_value_<Enum>/1, M:enum_value_by_symbol_<Enum>/1;
thanks to Patrik Sandahl for suggesting those functions.
* Bugfix name resolution. Thanks to Heiner Bunjes for reporting
the bug. This prompted a major rewrite of the name resolution code
that was originally a quick patch-work, and not in very good shape.
* Handle C-style comments. Thanks to Patrik Sandahl for reporting
this bug.
* Add a section to the README.md showing rebar integration, thanks
to Bin Wang for asking the question that prompted me to write it
up.
* Bugfix command line option parsing using the -extra alternative.
* Benchmark code improvements.
* Build: version number: defined format and enforced/verified
consistency between gpb_version.hrl and src/gpb.app.src: using the
git tag as the source of information.
Version 2.1
2011-Oct-31 Tomas Abrahamsson <[email protected]>
* Package names are dotted rather than with underscores
* New generated introspection function: M:get_package_name/0.
Version 2.0
2011-Jul-10 Tomas Abrahamsson <[email protected]>
* First public version