forked from aantron/bisect_ppx
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCHANGES
572 lines (440 loc) · 19.7 KB
/
CHANGES
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
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
Version 2.8.2 (2023-04-13):
---------------------------
Additions
- ppxlib 0.26.0 and 0.27.0 compatibility (#400, Sonja Heinze).
Bugs fixed
- Collation of subdirectories in HTML report (#401, Luke Maurer).
Version 2.8.1 (2022-03-14):
---------------------------
Bugs fixed
- OCaml 5.00 compatibility (#399, @kit-ty-kate).
Version 2.8.0 (2022-02-10):
---------------------------
Additions
- HTML: collapsible tree index for large projects, activated by --tree option
(#396, Arvid Jakobsson).
Bugs fixed
- Don't instrument lazy values which are compiled as already forced (#398,
reported by @Ngoguey42).
- Use Sys.backend_type to detect js_of_ocaml (#397, Pat Rondon).
- Text summary report: show files with 0 points as having 100% coverage
(f3b9108).
Version 2.7.1 (2022-01-19):
---------------------------
Bugs fixed
- Emit point data as arrays instead of as lists, to avoid exposing JavaScript
tooling to large AST structures (#395, Jaap Frolich).
- Reporter: look for files relative to Dune workspace root (#369).
Version 2.7.0 (2021-11-23):
---------------------------
Additions
- Reports in Cobertura XML format, used on GitLab (#383, Valentin Chaboche).
- .coverage file merging (#389, Valentin Chaboche).
- Environment variable BISECT_SIGTERM and PPX option --bisect-sigterm, which
cause the runtime to write .coverage files upon receiving SIGTERM (#390,
Arvid Jakobsson).
- bisect-ppx-report: verbose logging now hidden behind new --verbose flag
(4b36eb4).
- HTML: minimal metadata so that links to reports are decorated by social
media platforms (#373).
Bugs fixed
- Adapt to change in how ReScript represents -> (#382, reported by Danni
Friedland).
- Broken installation on pnpm (#381, reported by Tillmann Rendel).
- bisect-ppx-report: clearer error messages (#386, 6327d04).
- HTML: visit count tooltip not visible on last line of report (#374).
Version 2.6.3 (2021-07-21):
---------------------------
Bugs fixed
- Downgrade binaries to require Ubuntu only 18.04, not 20.04 (6f86646,
reported by Peter Piekarczyk).
Version 2.6.2 (2021-07-20):
---------------------------
Changes
- Remove dependency on Marshal from Bisect_common to adapt to upstream changes
in ReScript (#376, reported by John Doneth).
Version 2.6.1 (2021-05-04):
---------------------------
Bugs fixed
- Do not instrument React.forwardRef and React.memo (#375, reported by Mathieu
Haton).
Version 2.6.0 (2021-02-06):
---------------------------
Changes
- Port to ppxlib (#327, Sonja Heinze).
- CSS: use ligature fonts, if installed (#339).
- Internal: switch to Dune cram tests, finding lots of bugs in the process
(beb80b3, 593a7c2, #352).
Bugs fixed
- Workaround for typing issue with instrumentation of or-patterns under GADTs;
includes a new match instrumenter (#325, reported by Mehdi Bouaziz).
- The second subexpression of (||) and (&&) is in tail position iff the whole
expression is in tail position; Bisect was unconditionally wrapping the
second expression in successor code (#359, reported by Benjamin Monate).
- HTML: words that have an instrumentation point on one of their characters
were not searchable (#346).
- Don't clobber the global random number generator (#344).
- (or) nested inside (||) not properly instrumented (#347).
- Subexpressions of Pexp_newtype were always treated as if they were in tail
position (#348).
- assert instrumentation was placed at the wrong point in the generated code
(#349).
- assert false should not be instrumented; the point is unreachable (#355).
- Instrumentation of or-patterns inside local open patterns could trigger
unused open warning (#350).
Removed
These removals were planned and announced in the 2.0.0 release.
- PPX option --mode (#200).
- PPX option --no-comment-parsing (#202).
- PPX option --exclude (#244).
- PPX option --exclude-file, which has been renamed to --exclusions (#245).
- Reporter options --html, --text, --coveralls, which have been replaced by
html, summary, send-to subcommands, respectively (#145).
- Support for discovering .out files. Bisect switched to extension .coverage
in 2.0.0 (#110).
- --dump, --csv, and the old-style text report (#251).
- The old command line, including single-dashed (-) multi-character options,
and usage of bisect-ppx-report without a subcommand (such as
bisect-ppx-report html) (#145).
Version 2.5.0 (2020-10-19):
---------------------------
Additions
- Support Dune's --instrument-with integration, introduced in Dune 2.7.0
(#331, Pau Ruiz Safont).
Bugs fixed
- runtime.unix_open is not a function in js_of_ocaml integration, occurring
since Dune 2.7.0 (#334).
- Don't assume that (&&) is always applied to two arguments (#333, reported
Vladimir Keleshev).
- esy sandbox directory specified in environment variable cur__target_dir
might not exist (#328, reported David Sancho).
- Reporter: don't crash on symlink cycles (#324, reported Rudi Grinberg).
Version 2.4.1 (2020-05-10):
---------------------------
Bugs fixed
- Support Jest with in-source builds (#322, Jihchi Lee).
- Make application expression instrumentation less invasive (#319).
Changes
- Use OCaml 4.11 AST (#321).
Version 2.4.0 (2020-04-21):
---------------------------
Additions
- PPX --exclude-files command-line option (#313).
- Jest integration (#314, Jihchi Lee).
- Register exit hook automatically on Node (3471d2a).
Bugs fixed
- CSS: display text cursor over entire code view (#315).
Version 2.3.2 (2020-04-19):
---------------------------
Bugs fixed
- Support taking PPX options from BuckleScript (#310).
- Find exclusions file when run from ./lib/bs by BuckleScript (#311).
Version 2.3.1 (2020-04-13):
---------------------------
Bugs fixed
- Support JS method calls (#308).
Version 2.3.0 (2020-04-06):
---------------------------
Additions
- Dark theme support (#301, Ulrik Strid).
- Dark theme based on GitHub-Dark (#260).
- PPX options --bisect-file and --bisect-silent as alternatives to BISECT_FILE
and BISECT_SILENT environment variables (#303, Mehdi Bouaziz).
Bugs fixed
- HTML: coverage meters displayed incorrectly (b61f46a, reported Ulrik Strid).
- HTML: Firefox would use the default font in pre > code (#300, Ulrik Strid).
- HTML: don't show tooltip over unvisited points (#304).
Version 2.2.0 (2020-03-26):
---------------------------
Additions
- Support for exception pattern extensions added in OCaml 4.08 (#297).
Bugs fixed
- HTML: generate <!DOCTYPE html> and <html lang="en"> (#288, @zapashcanon).
- Invalid doc comment section heading levels (#291, reported Risto Stevcev).
- Hide generated code from odoc (#293, reported Risto Stevcev).
Version 2.1.0 (2020-03-20):
---------------------------
Additions
- GitHub Actions integration (#280, Ulrik Strid).
- Reporter --coverage-path option to specify search paths for .coverage files
(#269).
- Reporter --source-path option to specify search paths for source files
(#283).
Deprecations
- -I in favor of --search-path (#283).
Version 2.0.0 (2020-03-17):
---------------------------
Additions
- BuckleScript support and NPM packaging (#206, #249).
- Js_of_ocaml support (#212).
- Automated sending of reports from Travis and CircleCI to Coveralls and
Codecov (#241).
- Better integration with Dune (#235).
- Better integration with esy (#263, #270).
- [@coverage off] attribute and its variants for excluding expressions and
module items from coverage (#198).
- [@@@coverage exclude file] for excluding entire files (#130, #219).
- Cmdliner-based command line (#145).
- Reporter automatically searches for .coverage files (#236).
- New, more disciplined instrumentation strategy (#82, #128, #205).
- Syntax highlighting in the generated reports (#135).
- Sanity-checking the set of source files included in the coverage report
(a7a4ca0).
- Use 4.10 ASTs internally for the transformation (#274).
- MIT license (#199).
Deprecations
These features will be removed in 2.1.0.
- PPX -mode option (#200).
- PPX -no-comment-parsing option (#202).
- PPX -exclude option (#244).
- PPX -exclude-file in favor of --exclusions (#245).
- Reporter --html, --text, --coveralls are deprecated in favor of the html,
summary, coveralls sub-commands, respectively (#145).
- All other reporter multi-character options with a single dash (-) prefix are
deprecated in favor of double-dashed (--) versions (#145).
- .out files are now .coverage files (#110).
Removed
- BISECT-IGNORE comments, in favor of [@coverage off] (#202).
Bugs fixed
- Randomize intermediate filenames to avoid collisions upon their creation
(#194, Mindy Preston).
- Left margin indicators in the HTML report could be invisible, if they were
located at the bottom of the margin (#254).
Version 1.4.2 (2020-01-17):
---------------------------
Changes
- Use OCaml 4.09 ASTs during preprocessing (88d24c5, 02dfb10).
Version 1.4.1 (2018-03-25):
---------------------------
Additions
- PPX -no-comment-parsing option, to work around Bisect_ppx trying to parse
(*BISECT-IGNORE*) comments (#187, reported Ben Anderson).
Bugs fixed
- Bisect_ppx should run after other PPXs (#186, reported Brian Caine).
- Round displayed coverage percentages down (#172, reported Iago Abal).
Version 1.4.0 (2018-11-28):
---------------------------
Additions
- Coveralls reports with bisect-ppx-report -coveralls ... (#176, Sam Miller).
Bugs fixed
- Infinite loop when unable to create bisect*.out files (#175, reported Josh
Berdine).
- Infinite loop when source file was compiled with an absolute path (#180,
reported Calvin Beck).
Version 1.3.4 (2018-07-23):
---------------------------
- Remove manual call to PPX driver (#173, Rudi Grinberg).
Version 1.3.3 (2018-04-29):
---------------------------
Bugs fixed
- Don't try to read .exclude file when Bisect_ppx is disabled (#169, Gary
Trakhman).
- Refactor how instrumented code registers itself with the Bisect_ppx runtime,
to make it easier to use Bisect_ppx with libraries other than stdlib (#171,
Hugo Heuzard).
Packaging
- The deprecated packages bisect_ppx.ocamlbuild and bisect_ppx.plugin, which
contained the Bisect_ppx Ocamlbuild plugin, have been deleted. The plugin is
now available only through bisect_ppx-ocamlbuild (#143).
- The deprecated package alias bisect_ppx.fast has been deleted (#144).
Miscellaneous
- Major refactoring of the instrumenter to make it much easier to work on.
Version 1.3.2 (2017-12-21):
---------------------------
Bugs fixed
- Report names of intermediate files when Bisect_ppx is unable to read them
(#163, Emilio Jesús Gallego Arias).
- Don't apply instrumentation to attributes in .mli files (#164, reported
Etienne Millon).
Improvements
- Generate HTML report filenames from source filenames, instead of assigning
them numbers (#139, Brad Langel).
Version 1.3.1 (2017-10-05):
---------------------------
Compatibility with OCaml 4.06
- Do not treat bytes and string as equivalent types.
Bugs fixed
- Reporter tool now has better usage/help output (76220cf).
- Various documentation improvements.
- Reduce chance of generated identifier collisions, and make collision a
compile-time error (#160).
Simplifications
- Drop pre-visited points (BISECT-VISIT), and implement them as ignored
points (#159).
- Remove -simple-cases PPX option. This was an internal feature.
- Remove -inexhaustive-matching PPX option. This was an internal feature.
- Internal source code improvements, including a complete reorganization of
the PPX.
Version 1.3.0 (2017-08-16):
---------------------------
Planned to break in the future 2.0.0
- The Ocamlbuild plugin will be factored out into its own OPAM package
bisect_ppx-ocamlbuild, and the ocamlfind package will be changed to also
have that name, instead of the current bisect_ppx.ocamlbuild. The new OPAM
package is available now, since Bisect_ppx 1.3.0 (#146).
- Delete ocamlfind package bisect_ppx.fast. It is a little-used alias for
package bisect_ppx (#144).
- Delete ocamlfind package bisect_ppx.plugin. It is a little-used alias for
bisect_ppx.ocamlbuild (#144).
Additions
- Port to Jbuilder (#117, Rudi Grinberg).
- Port to ocaml-migrate-parsetree (#117, Rudi Grinberg).
- Add "-conditional" workaround for Jbuilder (#153).
- API for dumping coverage statistics before program exit, e.g. for
long-running daemons (#129, Edwin Török).
- Match cases consisting of only assert false are no longer instrumented
(#118, Gabriel Scherer).
- Change license to MPL 2.0, from GPL 3.0 (#133).
Bugs fixed
- Don't instrument refutation cases ("| p -> .") (#118, Gabriel Scherer).
- Some builds failing with "unary operator expected" (#123, Brad Langel).
- Better error messages for malformed bisect*.out files (#137,
Emilio Jesús Gallego Arias).
Miscellaneous
- Document bisect*.out file format (#138, Brad Langel).
- Testing, build, debuggability improvements, including by Gabriel Scherer,
Emilio Jesús Gallego Arias.
Version 1.2.0 (2016-11-08):
---------------------------
Additions
- Compatibility with OCaml 4.04 (#113).
- Install .mli files (#98, prompted Christian Lindig).
Removals
This release removes several features which appear to get little or no use.
- Rename package bisect_ppx.plugin to bisect_ppx.ocamlbuild; bisect_ppx.plugin
is still available as a deprecated name (#93).
- Remove -combine-expr option from the reporter (#105, #106).
- Remove EMMA, XML, and "bisect" output formats (#105, #106).
- Remove obsolete -no-navbar and -no-folding options from HTML output (#106).
- Remove point kinds (#101).
- Eliminate .cmp files; this makes the -I option unnecessary for output
formats besides HTML (#102, #108).
Version 1.1.0 (2016-04-02):
---------------------------
- Port to 4.03.
- Allow exclusion of entire files, instead of only top-level values (prompted
@solongordon).
- Allow files to be excluded by regular expression, instead of only by exact
string match (requested @solongordon).
Version 1.0.1 (2016-03-04):
---------------------------
- Add option -ignore-missing-files to bisect-ppx-report, which allows the
reporter to silently ignore missing source files instead of failing. This is
intended for build processes that generate temporary source files, but
delete them before the reporter is run (requested Ivan Gotovchits).
- Fix bug in which bisect-ppx-report treated source code as format strings for
Buffer.add_substitute. This caused wrong behavior on source code substrings
that looked like Buffer.add_substitute patterns (reported Ivan Gotovchits).
- Various minor documentation and internal build fixes.
Version 1.0.0 (2016-02-09):
---------------------------
- Redesign HTML reports.
- Put separate points on each clause of or-patterns.
- Put points on applications of |>.
- Eliminate -safe, -fast, -faster modes. All modes now fast and thread-safe.
- Improve integration with other ppx preprocessors.
- Install native ppx rewriter when possible.
- Adjust which points have which kinds.
- Clean up command-line help of bisect-ppx-report.
- Add Ocamlbuild plugin helper and "coverage" tag.
- New documentation.
- Testing, build, and packaging improvements.
Version 0.2.6 (2016-01-01):
--------------------------
- Fix missing 'function' and 'fun' expression instrumentation (Anton Bachin).
- Update bisect-report test for recent points (Anton Bachin).
- Added appropriate tests (Anton Bachin).
Version 0.2.5 (2015-09-07):
---------------------------
- Revert the _Random_ indices for output files, just create multiple
- Correct dependency on Str in META.
- Obey OCamls line directive when looking for BISECT comments.
Version 0.2.4 (2015-08-14):
---------------------------
- Fast mode returns: create one array to track instrumented points per
implementation file (module). Created a separate findlib package:
bisect_ppx.fast to implement this method (just calls the ppx rewriter
with the appropriate argument).
- Runtime logging now default to a file: bisect.log. To regain original
behavior set BISECT_SILENT=ERR. You can use the same variable to set
a filename.
- Fixed bug for creating html reports off of implicit filenames.
Version 0.2.3 (2015-06-17):
--------------------------
- @hnrgrgr Fixed more comment lexing bugs
Version 0.2.2 (2015-06-12):
---------------------------
- Added a runtime only package distribution for findlib.
- Change the points annotation method, 'For' loops are correctly labeled.
- Updated appropriate test.
- When linking with '-thread' _Random_ indices are used for the output files.
- @simonjbeaumont, fix for exclusions of locally abstract typed definitions.
Version 0.2.1 (2015-05-22):
---------------------------
- fix double slashes at the end of a string bug, due to BISECT
specifiy commenting.
Version 0.2 (2015-05-15):
-------------------------
- fix bug to make sure that we don't instrument other ppx attributes.
Version 0.1 (2015-05-06):
-------------------------
- start versioning for bisect_ppx (just the ppx no CamlP4) of Bisect.
- Original bisect (changes below).
Version 1.3 (2012-11-03):
-------------------------
- new instrumenter based on '-ppx'
- new '-summary-only' to output only summary (text mode only)
- refactoring, including minor bugfixes
- bug#86: '-ocaml-prefix' doesn't really work
- bug#87: install shouldn't build anything
- bug#89: do not activate warnings by default
Version 1.2 (2012-08-14):
-------------------------
- new '-combine-expr' to allow combination of results
- new 'dump' output mode (mainly for debug)
- new 'bisect' output mode (i. e. format of runtime data)
- new '-exclude-file' command-line switch to exclude toplevel functions
listed in a file
- update for OCaml 4.00.0
- bug #95: polymorphic recursion is not handled
- bug #104: configure script should be executable
Version 1.1 (2011-02-12):
-------------------------
- update for Objective Caml 3.12.0
- new build system
- 'instrument.cmo' renamed to 'bisect_pp.cmo' (and now depends on 'str.cma')
- instrumentation modes ('safe', 'fast', and 'faster')
- '-exclude' command-line switch to exclude functions from instrumentation
- '(*BISECT-MARK*)' / '(*BISECT-VISIT*)' comments to mark lines
- '(*BISECT-IGNORE-BEGIN*)' / '(*BISECT-IGNORE-END*)' / '(*BISECT-IGNORE*)'
comments to ignore parts of source file
- bug #51: unportable use of 'which'
- bug #52: thread-compatibility module does not compile
- bug #59: instrumented code is 20 times slower
Version 1.0 (2009-12-17):
-------------------------
- switch to OCaml 3.11.1
- multiple outputs now allowed at once
- '-enable' / '-disable' command-line switches to control instrumentation
- support for multithread applications
- new output mode: EMMA-compatible XML
- support for ocamlfind installation
- major code refactoring and improvement
- bug #41: '-I' command-line switch to specify search path
Version 1.0-beta (2009-05-31):
------------------------------
- switch to OCaml 3.11.0
- bug #30: incorrect detection of ocamljava
- bug #31: default make target
- bug #32: incorrect source rendering under Firefox
- bug #33: information about global coverage missing
- bug #34: bare text mode added
- bug #35: introduction of navigation bar and code folding
- bug #36: instrumentation with -unsafe switch
- bug #37: incorrect handling of array literals
- unreported bug regarding the handling of if/then construct with no else
- introduction of CSV, XML modes
- major code refactoring and improvement
Version 1.0-alpha (2008-07-06):
-------------------------------
- first public version