CHANGELOG.md 13.6 KB
Newer Older
Karsten Loesing's avatar
Karsten Loesing committed
1
2
# Changes in version 2.?.? - 2019-??-??

3
4
5
 * Medium changes
   - Make NetworkStatusEntryImpl#parseSLine thread-safe.

Karsten Loesing's avatar
Karsten Loesing committed
6

Karsten Loesing's avatar
Karsten Loesing committed
7
# Changes in version 2.8.0 - 2019-10-18
8
9
10
11
12
13
14

 * Medium changes
   - Extend DescriptorReader#readDescriptors to support .gz-compressed
     files.
   - Add new BridgedbMetrics descriptor type.


Karsten Loesing's avatar
Karsten Loesing committed
15
# Changes in version 2.7.0 - 2019-09-06
16
17
18
19
20
21
22
23
24
25
26

 * Medium changes
   - Use Ivy for resolving external dependencies rather than relying
     on files found in Debian stable packages. Requires installing Ivy
     (using `apt-get install ivy`, `brew install ivy`, or similar) and
     running `ant resolve` (or `ant -lib /usr/share/java resolve`).
     Retrieved files are then copied to the `lib/` directory, except
     for dependencies on other metrics libraries that still need to be
     copied to the `lib/` directory manually. Current dependency
     versions resolved by Ivy are the same as in Debian stretch with
     few exceptions.
27
   - Remove Cobertura from the build process.
28
   - Add new SnowflakeStats descriptor type.
29
30


Karsten Loesing's avatar
Karsten Loesing committed
31
# Changes in version 2.6.2 - 2019-05-29
32
33
34
35
36

 * Medium changes
   - Recognize bandwidth files with @type annotation.


Karsten Loesing's avatar
Karsten Loesing committed
37
# Changes in version 2.6.1 - 2019-05-03
38
39
40
41
42

 * Medium changes
   - Fix a bug in recognizing descriptors as bandwidth files.


Karsten Loesing's avatar
Karsten Loesing committed
43
# Changes in version 2.6.0 - 2019-04-29
44
45

 * Medium changes
Karsten Loesing's avatar
Karsten Loesing committed
46
   - Stop signing jar files.
47
48
49
   - Add new BandwidthFile descriptor for parsed bandwidth files.


Karsten Loesing's avatar
Karsten Loesing committed
50
# Changes in version 2.5.0 - 2018-09-25
51
52
53
54
55
56
57

 * Medium changes
   - Go back to using Apache Commons Codec as base64 and hexadecimal
     codec rather than using JAXB which won't be available anymore
     after upgrading from Java 8 to 9. Applications must provide
     Apache Commons Codec 1.10 as dependency.

58
59
60
 * Minor changes
   - Make DescriptorCollector resume previously aborted downloads.

61

Karsten Loesing's avatar
Karsten Loesing committed
62
# Changes in version 2.4.0 - 2018-05-23
Karsten Loesing's avatar
Karsten Loesing committed
63
64
65
66
67
68
69

 * Medium changes
   - Replace Gson with Jackson. Applications must provide Jackson
     2.8.6 or compatible as dependency and do not need to provide Gson
     as dependency anymore.


Karsten Loesing's avatar
Karsten Loesing committed
70
# Changes in version 2.3.0 - 2018-04-18
71

72
73
74
75
 * Medium changes
   - Replace ServerDescriptor#getHiddenServiceDirVersions with
     ServerDescriptor#isHiddenServiceDir, because Tor has never
     supported versions in the hidden-service-dir descriptor line.
76
77
78
   - Add support for reading web server logs contained in tarballs by
     providing file names of both the tarball and of contained files
     to WebServerAccessLog.
79
80

 * Minor changes
81
82
   - Override logLines() method from LogDescriptor in
     WebServerAccessLog.
83
84
   - Use 1-minute connect and read timeouts for fetching CollecTor's
     index.json.
85
86


87
# Changes in version 2.2.0 - 2018-02-26
88
89
90
91
92

 * Major changes
   - Add new descriptor type WebServerAccessLog to parse web server
     access logs.

93
94
95
 * Minor changes
   - Add log message reporting progress reading tarballs.

96

Karsten Loesing's avatar
Karsten Loesing committed
97
# Changes in version 2.1.1 - 2017-10-09
98

Karsten Loesing's avatar
Karsten Loesing committed
99
 * Minor changes
100
101
102
103
   - Add new optional "build_revision" field to index.json with the
     Git revision supplied by the calling software.


Karsten Loesing's avatar
Karsten Loesing committed
104
# Changes in version 2.1.0 - 2017-09-15
105
106
107
108
109

 * Major changes
   - Update dependencies to versions available in Debian stretch:
     Apache Commons Compress 1.13, Apache Commons Lang 3.5, Google
     Gson 2.4, JUnit 4.12, Logback 1.1.9, SLF4J 1.7.22, and XZ 1.6.
Karsten Loesing's avatar
Karsten Loesing committed
110
   - Update to Java 8.
111

112
113
114
 * Minor changes
   - Retain trailing newline in Torperf results.

115

Karsten Loesing's avatar
Karsten Loesing committed
116
# Changes in version 2.0.0 - 2017-06-28
117

Karsten Loesing's avatar
Karsten Loesing committed
118
119
120
 * Major changes
   - Always use UTF-8 as charset rather than using the platform's
     default charset.
Karsten Loesing's avatar
Karsten Loesing committed
121
   - Remove all code that was deprecated in 1.x versions.
Karsten Loesing's avatar
Karsten Loesing committed
122
123
124
   - Remove previously non-deprecated but internally unused
     parseDescriptors(byte[], String)) method that returned a List and
     threw DescriptorParseException.
Karsten Loesing's avatar
Karsten Loesing committed
125

126
127
128
 * Minor changes
   - Replace custom ImplementationNotAccessibleException thrown by
     DescriptorSourceFactory with generic RuntimeException.
iwakeh's avatar
iwakeh committed
129
   - Rename jar files and release tarball to start with "metrics-lib".
130
131


Karsten Loesing's avatar
Karsten Loesing committed
132
# Changes in version 1.9.0 - 2017-06-21
133

134
135
136
137
138
139
140
141
142
143
144
145
 * Major changes
   - Simplify DescriptorReader by returning Descriptor instances
     rather than DescriptorFile instances containing Descriptors,
     deprecate DescriptorFile, and add a File reference to Descriptor.
   - Introduce a new UnparseableDescriptor to be returned by
     DescriptorParser and DescriptorReader if a descriptor cannot be
     parsed, as opposed to throwing a DescriptorParseException or
     skipping the entire descriptor file, respectively.

 * Medium changes
   - Let DescriptorParser return an Iterable instead of a List, which
     prepares parsing large descriptor files descriptor by descriptor.
146
147
148
   - Add new method to retrieve the raw descriptor length, rather than
     forcing applications to request (a copy of) raw descriptor bytes
     only to determine the raw descriptor length.
149

150
151
152
153
154
155
 * Minor changes
   - Fix a bug where NetworkStatusEntry's getMicrodescriptorDigests()
     and getMicrodescriptorDigestsSha256Base64() return hex strings
     rather than base64 strings.


156
157
158
159
160
161
# Changes in version 1.8.2 - 2017-06-16

 * Medium changes
   - Fix a regression where any DescriptorParseException thrown while
     parsing a descriptor is encapsulated and rethrown as
     RuntimeException.
Karsten Loesing's avatar
Karsten Loesing committed
162
163


Karsten Loesing's avatar
Karsten Loesing committed
164
165
166
167
168
# Changes in version 1.8.1 - 2017-06-08

 * Medium changes
   - Fix a regression in parsing microdescriptors and version 1
     directories introduced in 1.8.0.
Karsten Loesing's avatar
Karsten Loesing committed
169
170


Karsten Loesing's avatar
Karsten Loesing committed
171
# Changes in version 1.8.0 - 2017-06-07
172

173
174
175
176
177
 * Medium changes
   - Store raw descriptor contents as offset and length into a
     referenced byte[], rather than copying contents into a separate
     byte[] per descriptor.

178
179
180
181
 * Minor changes
   - Turn keyword strings into enums and use the appropriate enum sets
     and maps to avoid repeating string literals and to use more speedy
     collection types.
182
   - Simplify and avoid repetition in parse helper methods.
183
184
   - Fix a bug where Microdescriptor's getDigestSha256Base64() returns
     a hex string rather than a base64 string.
185
   - Move descriptor digest computation to DescriptorImpl.
186
187
   - Fix a bug in digest computation by making sure that the
     descriptor string actually contains the end token.
188
189
190
191
   - Fix a bug where both RelayDirectoryImpl and all NetworkStatusImpl
     subclasses fail to get indexes right if parts of raw descriptor
     strings contain non-ASCII chars.  In practice, this only affects
     version 1 directories which were last archived in 2007.
192
193


Karsten Loesing's avatar
Karsten Loesing committed
194
# Changes in version 1.7.0 - 2017-05-17
195

Karsten Loesing's avatar
Karsten Loesing committed
196
 * Medium changes
197
198
   - Fix a bug where unrecognized lines in extra-info descriptors
     below crypto blocks were silently skipped.
199
   - Add support for six new key-value pairs added by OnionPerf.
200
201
   - Fix a bug where DescriptorIndexCollector would not delete
     extraneous local files if remote paths start with /.
202
   - Add previously missing method to obtain the digest of a vote.
Karsten Loesing's avatar
Karsten Loesing committed
203
   - Deprecate setFailUnrecognizedDescriptorLines() in
204
205
206
     DescriptorParser and DescriptorReader and refer to
     getUnrecognizedLines() in Descriptor if applications really need
     to fail descriptors containing unrecognized lines.
207
   - Parse "padding-counts" lines in extra-info descriptors.
208

209
210
211
 * Minor changes
   - Accept extra arguments in statistics-related extra-info
     descriptor lines, as permitted by dir-spec.txt.
212
   - Streamline digest method names.
213

214

Karsten Loesing's avatar
Karsten Loesing committed
215
# Changes in version 1.6.0 - 2017-02-17
216

217
218
219
220
 * Major changes
   - Deprecate DescriptorDownloader in favor of the much more widely
     used DescriptorCollector.

221
222
223
224
 * Medium changes
   - Add two methods for loading and saving a parse history file in
     the descriptor reader to avoid situations where applications fail
     after all descriptors are read but before they are all processed.
iwakeh's avatar
iwakeh committed
225
226
227
   - Unify the build process by adding git-submodule metrics-base in
     src/build and removing all centralized parts of the build
     process.
228
229
   - Avoid deleting extraneous local descriptor files when collecting
     descriptors from CollecTor.
230
231
232
233
   - Turn the descriptor reader thread into a daemon thread, so that
     the application can decide at any time to stop consuming
     descriptors without having to worry about the reader thread not
     being done.
234
235
236
   - Parse "proto" lines in server descriptors, "pr" lines in status
     entries, and "(recommended|required)-(client|relay)-protocols"
     lines in consensuses and votes.
237
   - Parse "shared-rand-.*" lines in consensuses and votes.
238
239
   - Deprecate DescriptorCollectorImpl now that
     DescriptorIndexCollector is the default.
240
241


Karsten Loesing's avatar
Karsten Loesing committed
242
# Changes in version 1.5.0 - 2016-10-19
243

244
245
246
247
248
249
 * Major changes
   - Make the DescriptorCollector implementation that uses CollecTor's
     index.json file to determine which descriptor files to fetch the
     new default.  Applications must provide gson-2.2.4.jar or higher
     as dependency.

250
251
252
253
 * Minor changes
   - Avoid running into an IOException and logging a warning for it.


Karsten Loesing's avatar
Karsten Loesing committed
254
# Changes in version 1.4.0 - 2016-08-31
255

256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
 * Major changes
   - Add the Simple Logging Facade for Java (slf4j) for logging
     support rather than printing warnings to stderr.  Applications
     must provide slf4j-api-1.7.7.jar or higher as dependency and can
     optionally provide a compatible logging framework of their choice
     (java.util.logging, logback, log4j).

 * Medium changes
   - Add an alpha version of a DescriptorCollector implementation that
     is not enabled by default and that uses CollecTor's index.json
     file to determine which descriptor files to fetch.  Applications
     can enable this implementation by providing gson-2.2.4.jar or
     higher as dependency and setting property descriptor.collector to
     org.torproject.descriptor.index.DescriptorIndexCollector.

271
 * Minor changes
272
273
   - Include resource files in src/*/resources/ in the release
     tarball.
274
   - Move executable, source, and javadoc jar to generated/dist/.
275
276


277
278
279
280
281
282
283
# Changes in version 1.3.1 - 2016-08-01

 * Medium changes
   - Adapt to CollecTor's new date format to make DescriptorCollector
     work again.


Karsten Loesing's avatar
Karsten Loesing committed
284
# Changes in version 1.3.0 - 2016-07-06
285
286
287

 * Medium changes
   - Parse "package" lines in consensuses and votes.
288
289
290
291
292
293
294
295
   - Support more than one "directory-signature" line in a vote, which
     may become relevant when authorities start signing votes using
     more than one algorithm.
   - Provide directory signatures in consensuses and votes in a list
     rather than a map to support multiple signatures made using the
     same identity key digest but different algorithms.
   - Be more lenient about digest lengths in directory signatures
     which may be longer or shorter than 20 bytes.
296
   - Parse "tunnelled-dir-server" lines in server descriptors.
297

298
299
300
301
 * Minor changes
   - Stop reporting "-----END .*-----" lines in v2 network statuses as
     unrecognized.

302

Karsten Loesing's avatar
Karsten Loesing committed
303
# Changes in version 1.2.0 - 2016-05-31
304
305
306
307

 * Medium changes
   - Include the hostname in directory source entries of consensuses
     and votes.
308
   - Also accept \r\n as newline in Torperf results files.
309
310
   - Make unrecognized keys of Torperf results available together with
     the corresponding values, rather than just the whole line.
311
312
   - In Torperf results, recognize all percentiles of expected bytes
     read for 0 <= x <= 100 rather than just x = { 10, 20, ..., 90 }.
313
314
   - Rename properties for overriding default descriptor source
     implementation classes.
315
   - Actually return the signing key digest in network status votes.
316
   - Parse crypto parts in network status votes.
317
318
   - Document all public parts in org.torproject.descriptor and add
     an Ant target to generate Javadocs.
319

320
321
322
 * Minor changes
   - Include a Torperf results line with more than one unrecognized
     key only once in the unrecognized lines.
323
324
   - Make "consensus-methods" line optional in network statuses votes,
     which would mean that only method 1 is supported.
325
326
   - Stop reporting "-----END .*-----" lines in directory key
     certificates as unrecognized.
Karsten Loesing's avatar
Karsten Loesing committed
327
   - Add code used for benchmarking.
328

329

Karsten Loesing's avatar
Karsten Loesing committed
330
# Changes in version 1.1.0 - 2015-12-28
331
332

 * Medium changes
333
334
335
336
337
338
   - Parse flag thresholds in bridge network statuses, and parse the
     "ignoring-advertised-bws" flag threshold in relay network status
     votes.
   - Support parsing of .xz-compressed tarballs using Apache Commons
     Compress and XZ for Java.  Applications only need to add XZ for
     Java as dependency if they want to parse .xz-compressed tarballs.
iwakeh's avatar
iwakeh committed
339
340
341
342
343
   - Introduce a new ExitList.Entry type for exit list entries instead
     of the ExitListEntry type which is now deprecated.  The main
     difference between the two is that ExitList.Entry can hold more
     than one exit address and scan time which were previously parsed
     as multiple ExitListEntry instances.
344
345
346
347
348
349
   - Introduce four new types to distinguish between relay and bridge
     descriptors: RelayServerDescriptor, RelayExtraInfoDescriptor,
     BridgeServerDescriptor, and BridgeExtraInfoDescriptor.  The
     existing types, ServerDescriptor and ExtraInfoDescriptor, are
     still usable and will not be deprecated, because applications may
     not care whether a relay or a bridge published a descriptor.
350
351
352
353
354
   - Support Ed25519 certificates, Ed25519 master keys, SHA-256
     digests, and Ed25519 signatures thereof in server descriptors and
     extra-info descriptors, and support Ed25519 master keys in votes.
   - Include RSA-1024 signatures of SHA-1 digests of extra-info
     descriptors, which were parsed and discarded before.
355
   - Support hidden-service statistics in extra-info descriptors.
356
357
   - Support onion-key and ntor-onion-key cross certificates in server
     descriptors.
358

359
360
361
362
 * Minor changes
   - Start using Java 7 features like the diamond operator and switch
     on String, and use StringBuilder correctly in many places.

363

Karsten Loesing's avatar
Karsten Loesing committed
364
# Changes in version 1.0.0 - 2015-12-05
Karsten Loesing's avatar
Karsten Loesing committed
365
366

 * Major changes
367
368
   - This is the initial release after four years of development.
     Happy 4th birthday!
Karsten Loesing's avatar
Karsten Loesing committed
369