-
Notifications
You must be signed in to change notification settings - Fork 207
/
ChangeLog
4581 lines (3272 loc) · 162 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
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
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Version 17.12.7
---------------
* Fix BuildTarget.ProvideFor not checking named data when deciding whether
to skip resolution. (#3316)
Version 17.12.6
---------------
* Add goroutine labels to track what they are getting up to if we suspect a hang (#3292)
* Fix deadlock with queuing data for tests (#3306)
* Fix potential subinclude lockup (#3305)
* Don't queue a target up for test if the target failed to build (#3315)
Version 17.12.5
---------------
* Add a stat for number of BUILD files currently parsing (#3290)
Version 17.12.4
---------------
* Reverted back to arcat v1.0.2 while we work out behavioural issues
Version 17.12.3
---------------
* Updated arcat to fix some subtle issues with ar archives and filenames of an unusual size
Version 17.12.2
---------------
* Exclude test_tools from dependencies in working dir during build.
Version 17.12.1
---------------
* Ensure build env is sorted on input to config hash (#3279)
* Remove test args from remote test command (#3266)
Version 17.12.0
---------------
* Require building tasks to complete before shutdown (#3275)
* Update profile for guided optimisation (#3273)
* Replace channel-based iterators with new-style ones (#3272)
* Expand home path in `fs.PathExists` (#3270)
* Fix bash completion around = character (#3269)
* Add AppArmor profile for Ubuntu Noble (#3271)
* Update to Go 1.23.2 (#3264)
* Bump go-rules plugin to v1.21.5 (#3268)
* Bump python-rules plugin to v1.7.4 (#3267)
* Prohibit running under sudo unless explicitly forced to do so (#3265)
* Make property and operator not part of default object (#3260)
* Minor clean up to len() (#3259)
* Change iterable interface to be more flexible (#3255)
* Update lint (#3239)
* Avoid storing package cache in Alpine build image (#3250)
* Add Go build tags to stdlib (#3252)
* Avoid allocating channels unnecessarily on map inserts (#3246)
* Update toolchain to Go 1.23.1 (#3249, superseded by #3264)
* Fix a couple of things on arm64 (#3251)
* Update to Go 1.23.1 (#3248, superseded by #3264)
* Fix autocompletion by replacing partial text in LSP (#3244)
* Refresh Docker images (#3245)
Version 17.11.0
---------------
* Skip special handling of experimental directories when inside a subrepo (#3242)
* Detach codepath adds env vars (#3241)
* Stop invoking 'rm' as a subprocess (#3238)
* Update Python plugin + some deps (#3227)
* Deal with require/provide in query deps (#3237)
* Implement force deletion for RemoveAll (#3236)
* Make Please traverse build defs dirs recursively to find build defs (#3234)
* Add support for pretty-printing to the `json()` built-in (#3233)
Version 17.10.3
---------------
* Further improve internal comparison of subrepo structures
Version 17.10.2
---------------
* Revert change to filename auto-completion from 17.10.0 (#3229)
Version 17.10.1
---------------
* Improve internal comparison of subrepo structures, resolving a "found multiple definitions for
subrepo" error when cross-compiling a build target (#3223)
Version 17.10.0
---------------
* Make `1`/`0` synonyms for `true`/`false` in boolean plugin config fields (#3220)
* Return `None` for empty optional plugin config fields (#3219)
* Correctly report name of missing dependency when it can't be resolved (#3216)
* Output debug message when plugin config is loaded (#3214)
* Implement `keys`, `values` and `items` methods for `config` builtin type (#3213)
* Report plugin name in error message when failing to override plugin config field value (#3211)
* Add Go toolchain and standard library targets when initialising Go plugin (#3212)
* Don't print input targets in `plz query deps` output (#3204)
* Implement filename auto-completion and support for reading from stdin for the `plz query`
subcommands `whatinputs`, `whatoutputs`, `rules` and `changes` (#3202)
Version 17.9.0
--------------
* Allow values in `provides` to be a list (#3140)
* Don't show passed test output for large numbers of tests (#3131)
* Deduplicate env vars passed to build actions (#3143, #3144)
* More efficient `str.format()` implementation in BUILD language (#3146)
* Fix hang on preloading subincludes with syntax errors (#3151)
* Some low-level performance improvements to BUILD file parsing (#3147, #3152)
* Support \t escapes in strings (#3170)
* Remove mention of pleasings from plz init message (#3173)
* Report remote worker name in interactive output (#3178)
* New `no_test_coverage` option to explicitly opt tests out of producing coverage (#3188)
* Add sandbox flags to `plz debug` matching `plz exec`'s behaviour (#3200)
Version 17.8.7
--------------
* Use local paths only for determining tool changes (#3139)
* Use parser.open rather than os.Open avoiding a panic when using remotefs
(#3030)
* Plz help shows halp for aliases (#3130)
Version 17.8.6
--------------
* Speed up parsing of subrepo-heavy repos (notably `go_repo`) (#3126)
* Query commands take subrepos into account (#3124)
Version 17.8.5
--------------
* Revert #3111
Version 17.8.4
--------------
* Fix a nil pointer when querying targets with the `--arch` flag (#3113)
* Improved output for downloading test outputs (#3112)
* Only download child dirs for filegroups where necessary (#3111)
* Minor parse time performance improvements (#3114)
Version 17.8.3
--------------
* Don't re-parse subrepos unnecessarily (#3103)
* Added some gRPC client metrics (#3104)
* Add a check in parser on unary operator precedence (#3106)
* Various third-party library updates (#3097, #3098)
Version 17.8.2
--------------
* Empty values in some .plzconfig sections now correctly generate keys again (#3095)
Version 17.8.1
--------------
* Allow lists to be passed to subinclude() (#3080)
* `plz query inputs` now outputs in sorted order, and doesn't output intermediate targets from subrepos (#3073)
* Some fixes to operator precedence (#3088)
* Test runs are correctly set for remote execution (#3090)
* Fix calculation of cache size when using compression (#3055)
Version 17.8.0
--------------
* Add a --ignore_unknown flag to query whatinputs (#3057)
* Improve somepath --hidden behaviour (#3067)
* Enable `plz build `--shell` to work correctly with remote execution and
subrepos (#3066) (#3069)
* subinclude can now take annotated label and list (#2990)
Version 17.7.0
--------------
* Make `json()` marshal `range` as a list (#3044)
* Allow setting `PLZ_REPO_ROOT` env variable to tell Please where the repo
root is (#3046)
Version 17.6.2
--------------
* Performance improvements for clean remote execution builds (#3038)
* Recognise `range` type in `isinstance` (#3040)
Version 17.6.1
--------------
* Only automatically sort `tag` parameter below `name` parameter for built-in
Please rules (#3036)
Version 17.6.0
--------------
* Various performance improvements in the build language (#3023, #3024, #3025,
#3028)
* Cache `BUILD` files during remote execution (#3029)
* Place `tag` parameter below `name` parameter when formatting build rule
invocations (#3033)
Version 17.5.0
--------------
* Add a `--json` flag to `plz query outputs` (#3011)
* Repeated `subinclude()` calls are now simplified into one by `plz format` (#3012)
* `plz update --noverify` now ignores hash verification (#3017)
* `plz test -n X` now creates distinct actions for remote execution (#3021)
* Console output for `plz test -n X` improved (#2989)
Version 17.4.3
--------------
* Invalidate the action metadata cache as the action outputs are invalid as of
#3008 (#3016)
Version 17.4.2
--------------
* Fix error message when depending on a target in a non-existant subrepo (#3007)
* Handle `.out` temporary suffixes in remote execution properly (#3008)
Version 17.4.1
--------------
* Fix occasional 'too many open files' errors (#2998)
Version 17.4.0
--------------
* keep going flag (#2932)
* Fix query somepath when it encounters a cycle (#2893)
* Fix text_file strip (#2895)
it now doesn't strip tabs and \ characters.
* plz run parallel/sequential accepts inline args (#2916)
* use character semantics for length and index operations on strings (#2921)
* Add chr built-in function (#2922)
* Add ord built-in function (#2924)
* Add all commit date formats to supported git_show() format verbs (#2930)
* Fix reduce builtin (#2925)
* Fix issue with completing idents in the language server (#2917)
* Improve performance when a large number of input targets are supplied (#2942)
* Virtualise the subrepo filesystem for remote execution to avoid downloading
the whole subrepo to plz-out (#2952, #2954, #2953, #2955, #2960, #2961,
#2962, #2963, #2966, #2968, #2965)
* Fix issue where we would double the architecture subrepo if it was explicitly
specified in a subrepo (#2973)
* Always treat the first argument of `plz run` commands as a build label (#2967)
* Redact secrets from test step logging (#2970)
* Allow `///subrepo@darwin_amd64//package:name` syntax to specify both a subrepo and an
architecture on the command line. Also fixes a few issues with cross compiling using
`go_repo` (#2972)
* Allow dicts to be passed as `genrule`'s `data` parameter, with similar semantics to
those of `srcs` and `tools` (#2985)
* Add `--out_dir` option to `build` command (#2950)
* Add `add_entry_point` and `get_entry_points` built-in functions (#2993)
Version 17.3.1
--------------
* Fixed `plz query somepath` to not hang in the face of a graph cycle (#2893)
* Fix stripping in text_file (#2895)
Version 17.3.0
--------------
* REX: fix issue with downloading the outputs of filegroups with remote execution (#2885)
* Added reduce builtin to the build language (#2880)
* Don't automatically download targets queued for subinclue during remote execution (#2889)
Version 17.2.3
--------------
* Improve locking logic around downloading targets for multiple concurrent plz executions
Version 17.2.2
--------------
* `format`: avoid unneeded parentheses around `in`/`not in` expressions (#2871)
* Pass correct output of uname -a (#2868)
* Fix occasional hang when some targets are not queued
Version 17.2.1
---------------
* Better support preloaded subincludes that themselves subinclude (#2859)
Version 17.2.0
---------------
* Added hostinfo prometheus counter (#2835)
* Fix formatting for timed out message (#2845)
* Strip >= from the PLZ_VERSION variable (#2854)
* Add optimisation profile and enable pgo (#2850)
Version 17.1.0
---------------
* Handle function calls in `isinstance` (#2796)
* Allow `plz query deps` to outout the deps as a dotviz graph (#2801)
* Added a `--notest` flag to `plz watch`, which will then only build test targets.
This can be useful to do a quick smoke test. (#2810)
* Handle malformed input better in the language server to avoid crashes (#2810)
* Improve performance by implementing the `any` and `all` list functions in
Go (#2813)
* Added `--env` to `plz debug` to allow setting env variables in the debug
environment (#2819)
* Support function parameter aliases in `plz fmt` (#2822)
* Added `get_named_outs` which returns the named outputs of a target as a
dictionary (#2808)
* Fixed issues with race conditions in remote execution due to targets
being marked built too early (#2826)
* Fixed issue with finding the package directory with remote execution
when subrepos define a package root e.g. `go_repo` (#2828)
Version 17.0.0
---------------
* Remove all the built in language rules rules in favour of plugins. Use
`plz init plugin [plugin name]` to migrate e.g. `plz init plugin go`
(#2668, #2674, #2651, #2695, #2739)
* Support code completions for `plz exec` (#2786)
* Add `patches` parameters to the subrepo rules to apply a patch file to
the repo (#2745)
* Remove `ExcludeSymlinksInGlob` feature flag, making `glob()` exclude
symlinks by default. This makes it play better with `plz generate`,
however if you need a glob to match symlinks, pass
`include_symlinks = True`. (#2747)
* Remove `PackageOutputsStrictness` feature flag, making Please fail the
build instead of logging when it detects a conflict in package outputs.
(#2736)
* Delete the `ErrorOnEmptyGlob` feature flag, making glob throw and
exception if it matches no files. Pass `allow_empty = True` to `glob()`
to change this behavior (#2730)
* Support named outputs on filegroups (#2709)
* Remove persistent workers (#2690)
* Remove `plz query roots` (#2678)
* Remove the `--quiet` flag from `plz run parallel` (#2675)
* Rename the config options `java.jarcat` to `build.arcat` represent the
fact it has evolved to be a more general archiving tool (#2667
* Remove the deprecated exception types from the build language (#2150)
* Remove `--in_wd` from `plz run` in favour of `--wd .` (#2677)
* Change the way preloaded subincludes work to resolve a number of
race conditions. Subincludes are no longer preloaded when parsing
a BUILD file for subinclude. This means you will have to add
subincludes to `.build_def` files, and the BUILD file that contains
the subinclude target. (#2658)
* Remove JavaBinaryExecutableByDefault feature making Java binaries
self executable by default (#2662)
* Remove --prepare flag from `plz build` (#2666)
* Remove SingleSHA1Hash feature flag making sha1 behave the same as
other algorithms (#2135)
* Change asp.Position to just be an int (#2650)
* Fix stack overflow in asp parser stack unwind (#2659)
* Add plugin documentation to website (#2657)
* Recalculate filegroup outputs when they're not from plz-out (#2660)
* Remove SingleSHA1Hash (#2135)
* Remove --prepare flag from build (#2666)
* Delete JavaBinaryExecutableByDefault feature flag (#2662)
* Clarify that Named Outputs can only be depended on as sources (#2670)
* Make plugin version linting better (#2671)
* Add proto and go-proto rules to docs (#2669)
* Make CLI suggestions work with plugin topics (#2679)
* Auth before releasing website and binaries (#2684)
* Fix typo in gcloud command (#2685)
* Exclude targets in subrepos from `plz query changes` (#2723)
* `plz exec` now follows a similar argument pattern to `plz run` (#2793)
Version 16.27.1
---------------
* Include linux_arm64 in release step (#2646)
Version 16.27.0
---------------
* Have `plz query whatinputs` exit with code 1, when nothing inputs
the file (#2617)
* Please now adds the cache dir tag to it's cache directories, as defined by
by https://bford.info/cachedir/ (#2587)
* Have `plz query whatinputs` resolve the inputs to the repo root (#2623)
* During `plz init`, Please now checks the http status code when hitting the
github API, to avoid retrying user errors (#2631)
* Fix issue with filegroups not being rebuild under some conditions (#2635)
* Include build defs in plugins when searching for docs using `plz help` (#2636)
Version 16.26.1
---------------
* Fix some issues when original targets contain subrepos
Version 16.26.0
---------------
* The C/C++ rules now allow adding additional outputs (#2519)
* Allow subrepos to define an output root to avoid clashing inside
their build directories (#2605)
* Resolve some race conditions when loading plugin config that would
result in Please erroneously claiming that certain plugin configs
don't exist or are not optional (#2611)
* Format the CONFIG object in the same way other dictionaries get formatted
when printed from the build language (#2585)
Version 16.25.1
---------------
* Revert (#2593) as it has a race condition relating to subincludes (#2599)
Version 16.25.0
---------------
* Fix issue where subrepo config was being loaded, overriding configuration
set in the host repo (#2583)
* Make the gitignore check include the package name so it resolves correctly
when passed to `git check-ignore` (#2582)
* Fix issue where subincluding would lock up when including from a target
defined in the same package (#2523, #2586)
* Allow plugins to reference themselves by their plugin id in build labels (#2553)
* Fix issue when overriding config values defined in plugins from config profiles (#2589)
* Stop watching subincludes in subrepos (#2592)
* Use more performant blake3 implementation (#2597)
* Fix race condition in the subrepo parsing (#2598)
* Add warning when output directories conflict with other outputs in the package (#2593)
* Only verify filegroup output hashes when the sources change (#2594)
Version 16.24.0
---------------
* Error on empty glob by default. This feature is gated
behind the `ErrorOnEmptyGlob` feature flag (#2568)
* Improve behaviour of UpdateGitignore (#2571)
* Fix config overrides being passed to built-in rules rather than plugin
on darwin_arm64 circleci build (#2575)
Version 16.23.1
---------------
* Fix to `--env` argument from previous version.
Version 16.23.0
---------------
* `remote_file` downloads are now limited in parallelism, defaulting to 4 simultaneously (#2545)
* `plz exec` now takes an `--env` argument to set environment variables (#2561)
* `go_test` allows setting `env` (#2560)
* Fix benign race condition in progress code (#2528, #2559)
Version 16.22.1
---------------
* Set defaults for `PluginRepo` rather than overriding the config #2541
* Make `remote_file()` retry #2542
* Stop `text_file()` opting out of sandboxing #2547
* Reduce warnings around code in the experimental folder to info level #2550
* Log the body of the response at debug level for non-200 responses in
`remote_file()` #2551
Version 16.22.0
---------------
* Adds `plz exec sequential` and `plz exec parallel` subcommands (#2521, #2536, #2538).
* Fix a fairly rare case of `plz run` not working on a test with remote execution when
the test has a data dependency on something with a matched require/provide (#2527)
* A not dissimilar fix to `plz query inputs` (#2531)
* Fix moving of output directories for remote execution (#2529)
* General improvements to tab completion of optional subcommands (#2537)
* Add debug flag that implies plain output for `breakpoint()` (#2533)
Version 16.21.3
---------------
* Strip host arch from subrepo part of build label (#2508)
Version 16.21.2
---------------
* Fix hangs / very slow behaviour in `plz query deps`.
Version 16.21.1
---------------
* Fix visibility parsing when the visibility list is defined as a constant in
a subincluded build_def file
Version 16.21.0
---------------
* Only exit plz fmt with exit code 1 on error or if in quiet mode (#2265)
* Fix bug where we wouldn't traverse excluded deps (#2496)
* Update gcfg to allow setting empty values in SSM sections (#2499)
* Set TESTS for remote execution as well as local (#2501)
* Fix data race in remote stats code (#2500)
* Fixed compile of assembly in third-party Go libraries for Go 1.19
* Expose `go_binary` sources when included as a `go_test` dependency (#2503)
Version 16.20.4
---------------
* Support embedding directories using Golang embed comments #2479
* Fix determinism issue in `go_toolchain()` when cross compiling #2496
* Fix deadlock when parsing a locally defined subrepo #2487
* Ensure hardlinks and symlinks are updated correctly when linking
generated sources #2493
Version 16.20.3
---------------
* The build metadata store for remote execution now prefixes the path rather than
convoluting hashes, making items in it easier to locate (#2464)
* Build outputs are printed without formatting when stdout is not interactive (#2480)
* Fixed a race condition between building initial targets in a subrepo and preloaded
subincludes (#2482)
Version 16.20.2
---------------
* Make `plz query deps` traverse hidden dependencies even when
we don't print them #2453
Version 16.20.1
---------------
* When configured, require `remote_file()` rules are covered by
the `Sandbox.ExcludeableTargets` config value #2436
* REX: Skip caching when `--num_runs` is provided to `plz test`
#2450
* Fix indentation in `plz query deps` when we exclude targets #2454
Version 16.20.0
---------------
* Fix issue with the `pleasew` wrapper script downloading the wrong
architecture on arm platforms #2286
* Make the `pleasew` wrapper read config files in the same order that Please
does #2324
* Add `no_test_output` parameter to `cc_test()` #2292
* Include `data = []` dependencies in `plz export` #2294
* Remove the experimental `@self` psudo-subrepo #2295
* The `[Plugin "id"]` section now requires you to define the
subrepo target that provides the subrepo #2285
* Rework the context package during subincludes. This major change
allows us to subinclude from preloaded subincludes and fixes a number
of inconsistencies with how `package_name()` and `subrepo_name()`
#2289
* REX: Fix text file and remote file not being marked as executable in remote
execution #2314 #2427
* Use the Target field to provide help text for plugins #2253
* REX: Don't cache action results when the result is missing some of the
targets outputs #2322
* REX: Don't rename outputs when they collide with folders in the source
tree. This was only necessary for local builds. #2325
* Fix issue with `go_test()` where it was not correctly discovering the test
package sources when built in subrepos #2329
* Allow adding arbitrary labels to third party build rules #2333 #2355
* REX: Optionally download any targets that link their outputs. This can help with
generated sources #2318
* Preserve file permissions when storing files in a directory cache that's on a
different file system #2346
* Handle miss-configured sandbox tool gracefully #2345
* Make the built in Please sandboxing run as the host user's PID instead of
mapping that user to root in the namespace #2359
* Fix issue where nested dictionaries were left mutable after a subinclude
#2365
* REX: acquire the target lock when downloading target outputs. This fixes
a race condition where parallel Please processes would clobber eachothers
outputs #2369
* Allow targets with entry-points to be the target of a `plz exec` #2379
* Parallelize `plz fmt` #2377
* Handle the frozen variants of lists and dicts when serialising them to json
via the `json()` built-in #2373
* Allow accessing multiple levels deep in f-string i.e. `f"{foo.bar.baz}`. Note,
expressions are still limited to basic access like this, not full expressions
#2384
* Allow `glob` to take a string as well as a list i.e. ``glob("*")` #2391
* Allow the context of `text_file()` to be empty #2396
* Add preloaded subincludes to the `plz export` output #2397
* Added a `linux_amd64` build #2411
* REX: sanitise env vars that were passed via `env = {}` #2408
* Parse fields in the `[BuildConfig]` section into the correct values when they
successfully parse as booleans or integers #2414
* Add in the pkg-config and compiler flags to the `go tool cgo` invocation #2428
* Remove the internal `//_please` package from subrepos and use the host repo's
version to download the Please tools #2429
* Stay on the same branch when using `plz query --since` #2431
* Remove remote file headers into the built-in rather than using curl. This also
follows redirects now. #2437
Version 16.19.0
---------------
* Add Go 1.18 fuzz testing support #2269
* Fix incorrect resolving of @self keyword that should resolve relative
to the repo/plugin where it appears #2270
* Sort user provided env for remote execution for better determinism #2273
* Targets can now be specified to opt out of sandboxing #2282
* Fix issue with preloading subincludes, where it would fail if the subinclude
itself also had subincludes #2281
* Allow outputs to be downloaded transitively in remote when debugging is on #2278
* Remove duplicate labels being applied to `go_module()` rules #2254
* Gracefully handle missing tools during `plz query changes` #2130
* Allow specifying a github access token as an environment variable
to `github_repo()` to access private repos #2249
* Show the download rate of `remote_file()` rules in the progress
update #2261
* Improvements to `plz query print --json` to align it more closely
to the python-eque (asp) representation #2250
* Allow hashing `filegroup()`s by the last modified timestamp of their
sources. This helps with large files, and can be done by applying
the `fg:hash-modified-time` label #2266
* Allow plugins to specify if a configuration value should be inherited
from the host repo, or overriden from the subrepo's config #2216
* Allow restricting the hashing algorithms for validating the `hashes`
field #2267
Version 16.18.0
---------------
* Stop showing line by line coverage results when tests fail #2227
* Add support for the xxhash hashing algorithm #2229
* Use an environment variable to pass in go to the go test main tool
to improve migration strategy #2239
* Handle aliases to multi-level commands #2242
* Make `plz run sequential` use the same `--output` flag as
`plz run parallel` #2243
* Implement a command cache to use custom commands to store and
retrieve items from the cache e.g. `s3 cp - s3://cache/$CACHE_KEY`
#2244
Version 16.17.1
---------------
* The default jarcat_tool (now arcat) for Linux is now correctly linked
and does not attempt to use glibc at runtime.
Version 16.17.0
--------------
* `c_library`, `c_static_library`, `cc_library`, `cc_static_library` rules
now expose an `out` field for a custom name #2203
* New `tag()` builtin was added that allows tagging a target name #2202
* Add plugin version check #2206
* `remote_file` rule now includes support for the passing of credentials
and header values #2128
* Fix issue with `plz test -d` where it only accepts a single target but
it isn't considering pseudo targets (i.e. //... or //:all) #2205
* Plugin config keys can be inferred now, if not set #2212
* Further enhancements and fixes to the recent `plz debug` command to
better support IDEs #2213
* Add docs for `plz exec` #2199
* Virtual envs for Python (i.e. venv) are now generated under plz-out #2210
Version 16.16.0
--------------
* Added `plz query config` which can be used to retrieve what the value
a config field has from the variaous places Please loads `.plzconfig`
files #2190
* Fix test fields not appearing for `plz query print` when using `--fields`
#2200
* Fix missing signatures on darwin_arm64 release #2208
Version 16.15.1
--------------
* Preserve original quotes in multi-line strings #2184
Version 16.15.0
--------------
* Added `plz query reporoot` command #2173
* Fixed issue where named fields (e.g. srcs, and outputs) didn't appear
in `plz query print` #2174
* Add the subrepo name to labels in `plz query graph` #2168
* Add `--json` flag to `plz query print` to output the target in json format
#2176
* `cc_static_library()` now exposes headers to dependant targets #2179
Version 16.14.0
--------------
* The `query revdeps` and `query somepath` subcommands now handle
indirect dependencies (i.e. require/provide) between targets
better when not including hidden targets #2127
* Fix issue where we were de-duplicating linker flags for `go_module()`
#2127
* Some improvements to the builtin functions: `get_labels()` now has
a `transitive` parameter that can be used to opt out of getting
labels on transitive dependencies, and `package_name()` now has a label
parameter that can be used to get the package of a specific label.
#2170
* Some improvements to `plz generate` and `LinkGeneratedSources` to
opt to use hard links, or automatically update the `.gitignore`
during builds #2163
Version 16.13.0
--------------
* Some fixes around subrepos and cross compiling #2134 #2148
* Fix issue with `go_module()` when the module is called
`go` #2146
* Make the shebang optional for `sh_binary()` #2144
* Extend the pex tool to support adding debuggers to the pex #2141
* Handle c++ in `go_module()` rules #2161
Version 16.12.1
--------------
* Downgrade ProtonMails go-crypto because the newer versions have
started adding subpackets to the signature that cause older
versions of Please to fail to verify the signature #2138
Version 16.12.0
--------------
* Implemented direct link label, and used this to link go sources
from `go_module()` to `plz-out/go` #2118
* Strip all `BUILD` files, including `WORKSPACE` in `new_http_archive()`,
not just `BUILD`. This is used by `github_repo()` #2117
* Fix display issue with multi-line error messages #2119
* Exclude symlinks from globs by default. This is feature is gated
behind the `ExcludeSymlinksInGlob` feature flag #2052
* Fix issue where unrecognised config was being treated as fatal #2126
* Implement `--shell=run` which will immediately run the build/test
command #2123
* Exclude the location of the Please executable from the remote
PATH #2136
Version 16.11.0
--------------
* Fix some bugs around plugin configuration #2111 #2107
* Implemented a `plz debug` command that can be used to invoke
an interactive debugger, or a remote debugger via the `--port`
flag. This command only works for `go_binary()` and `go_test()`
commands right now but a python implementation is on the way.
#2069
* Fixed some issues around marking sources as done when preparing
inputs for a build action. This resolves some issues where certain
inputs were unexpectedly missing from the build directory. #2091
* Fixed issue with `plz run --wd=.` where relative paths were being
evaluated relative to the repo root not the working directory #2103
Version 16.10.1
--------------
* Fix nil pointer when no cache is set up #2092
* Add feature flags for the java and python language plugins
to exclude these builtins #2098
Version 16.10.0
--------------
* Fix lockup when cross compiling with --arch #2085
* Enable overriding plugin config via `package()` #2083
* Add types to plugin config values #2086
* Deprecated `--in_wd` in favour of `--wd` which can take any
arbitrary path #2095
* Fix issue with multiple preloaded subincludes #2082
Version 16.9.0
--------------
* Fix issue where aliases were being printed multiple times #2070
* Fix issue where messages were being printed incorrectly during a
`plz watch` #2066
* Implemented the plugins API as described in #1843 #1925
Version 16.8.0
--------------
* BUILD files can now be added as sources to rules #2056
* Aliases are now added to help text when printing usage info
#2035
* Outputs can now be saved from `plz exec` #2060
* The wrapper script now looks at more than just .plzconfig
to determine the Please version and download location #2065
Version 16.7.0
--------------
* Sandbox tool now ignored missing directories in `SANDBOX_DIRS`
#2041
* Allow `Python.DefaultInterpretor` to be a build label #2045
* Fix the install script to download arm architectures #2030
* Handle annotated labels in `canonicalise()` #2037
* Handle relative paths in `Please.Location` #2046
* Apply hashes to the download rule in `python_wheel()` instead of the
output rule. This feature is gated behind a feature flag for backwards
compatibility. #2042
* Handle go1.16 embeds in `go_module()` #2036
Version 16.6.1
--------------
* Rules with system sources now run locally by default #2011
* Improve validation around rule outputs to avoid race conditions.
This change is gated behind the `FeatureFlags.PackageOutputsStrictness`.
#1816
* Fix problem in the language server that was causing issues on startup
#2029
* Fix issues with `#cgo` directive in `go_module()` rules #2038
Version 16.6.0
--------------
* Fixed issue with `go_module()` where adding the root package removed
all other items in the install list that came before #2019
* Fixed the linker flags in `pip_library()` for macOS #2015
* Added `ExcludeGlob` config option to the `[Cover]` section that
excludes files from coverage based on a glob pattern #2020 #2023
* Fix issue with `go_module()` where the incorrect release flags
were being applied when filtering third party go sourcews #2024
Version 16.5.1
--------------
* Fix nil pointer when tests fail in certain ways #2016
Version 16.5.0
--------------
* Singleflight all subincludes removing any potential for lockups #2002
* Implemented target level locking enabling multiple please instances to
build at the same time #2004
* Set a timeout on test result uploading #2008
* Updated to use go 1.17. This should be transparent to any users. #2010
* Various fixes and improvements around bash completions #1998 #2013
Version 16.4.2
--------------
* Honour require/provide for `plz query revdeps` and `plz query changes` #1997
* Fix `plz tool langserver` #1999
Version 16.4.1
--------------
* Fixed panic when downloading outputs for stamped targets that were retrived from
the cache #1994
Version 16.4.0
--------------
* Fixed issue where coverage was missing some files. Please now adds in 0% coverage
for lines found in non-test files that are included in the original targets passed
in on the command line #1975
* Reduced the size of a build target in memory #1951
* Added `--go_trace_file` to write a trace file that can be opened with `go tool trace`
#1987
* Added a new `add_data()` builtin that can be used to add data to a target in a pre or
post build function #1973
Version 16.3.0
--------------
* Implemented a `plz exec` subcommand that is designed for used by IDEs to run targets
within the hermetic env for debugging and profiling #1917
* Allow `system_library()` to take in directories #1931
* Some LSP fixes and debug improvements #1937 #1943 #1962
* The python behave test runner now checks `$RESULTS_FILE` #1940
* Rework the cycle detector to run async only once we detect a deadlock. This also addresses
performance problems on large build graphs where the cycle detector was simply too slow. #1936
* Fix issue where `plz watch` couldn't acquire the repo lock #1944
* CLI completions improvements #1936 #1948
* Various performance improvements focussing on memory usage. 16.3.0 now uses 50% less memory
and parses the build graph in 75% of the time. #1949 #1947 #1952 #1956 #1921 #1960 #1955
#1961 #1964 #1969
* `go_mod_download()` and `go_module()` now add the module as a label which can be used to
list modules: `plz query print --label go_module: //third_party/go/...` #1954
* Add a `remote` label to `remote_file()` #1959
* Query revdeps fails fast on targets that don't exist #1953
Version 16.2.1
--------------
* Make `pip_library()` more deterministic by stripping debug symbols in C code #1909
* Make `plz hash --update` keep going once it updates a hash so it can update multiple
in one pass #1919
* Apply linker flags to `go_benchmark()` #1924
* Fix issue where the cycle detector wasn't detecting cycles correctly #1926
* Strip please location from PATH for remote execution #1930
Version 16.2.0
--------------
* Fixed issue where Please would attempt to use xattrs on unsupported filesystems
under some circumstances #1866
* Fixed issue were Please status output during builds would stop updating after a
failure #1868
* Various performance work #1847 #1848 #1869 #1872 #1876 #1877 #1881 #1885
#1878 #1888
* Fixed issue where `post_build` functions would not have config overrides set
via `package()` in some circumstances #1871
* Added an `is_semver()` builtin to check if a string matches the semver format
* `c_binary()` now allows defines to be a dictionary
* Applied the correct expected packages to `go tool compile` invocations to address
some issues with debug symbols #1896
* Added a `gitlab_repo()` rule which works similarly to `github_repo()` #1898
Version 16.1.1
--------------
* Fixed an issue where debug symbols didn't work for go targets build with Go 1.15+
#1845
* Some remote execution small fixes #1838 #1842 #1849
* Added zstd support to the jarcat tool #1837
* Allow defined on `cc_binary()` to be a dict #1854
* Root package is now picked up by `plz query changes` #1855
* Check that a target owns it's named inputs #1857
* Fixed issue where goland definitions weren't being applied when
the binary found linker flags on it's dependencies #1859
* Handle the empty string in the `go_module()` install list #1858
Version 16.1.0
--------------
* Redesigned the build graph to be more event driven utilise channels and blocking
threads to reduce lock contention. #1102 #1781 #1787 #1820 #1803
* Add output grouping to `plz run parallel` so that the stdout and stderr can be
linked back to the target that generated them afterwards. #1768
* Fix issue with `plz watch --run` where it didn't clean up its process properly
on restarting #1780
* Fix issue with rpartition #1784
* Fix non-deterministic hashing of test tools when it's a dictionary #1791
* Handle \r in BUILD files #1815
* Make go_mod_download() create a dummy go.mod to avoid picking up the main
repo's go.mod #1814
* Make `plz generate` automatically link generated sources even if we haven't
set LinkGeneratedSources in the .plzconfig #1770
* Fix some issues around go_module() when compiling binaries #1826
* Implement pkg-config for go_module() #1823
* Added a `plz query whatinputs` subcommand to find targets that consume a given
source file #1825
Version 16.0.1
--------------
* For remote execution, Please now downloads runtime data for locally
executed tests first, avoiding errors when calculating the runtime hash #1769
* Please now support multiple profiles provided by `--profile` #1773
* The http cache now record the hash on the files avoiding issues where
subsequent runs resulted in a cache miss #1771
Version 16.0.0
--------------
* The migration guide detailing the breaking changes and how to address them
can be found on this issue: #1590
* Various changes and fixes around remote execution #1584 #1624 #1642 #1656 #1672
#1698 #1699 #1713 #1724 #1732
* Implement `text_file()` rule that can be used to generate a file from
the build language. This is used in `sh_cmd()` to avoid escaping env vars
by the setting `expand_env_vars = False` #1585 #1666
* Move please_go_install and please_go_test into unified please_go
tool #1600 #1603
* Removed the --nocache flag #1612
* Removed the `out` param on `go_library()` in favour of the `package`
param #1561
* Removed `rule_metadata` param on `build_rule()` #1580
* Stop pulling in transitive dependencies for `go_test()` and other
go rules #1593 #1609
* Removed `//:pleasings` as a default repo. This can be added back in
with `plz init pleasings` #1591
* Removed `FeatureFlags.PleaseDownloadTools` and made Please download
them automatically #1582
* Added architectures to `go_toolchain()` to facilitate cross compiling
when targetting with a build label e.g. `///linux_amd64//...` #1605
* Improved ergonomics around git scm commands to report errors from stdout
#1611
* Added `--level` to `plz query changes` to get the reverse deps of the
changed target. This replaces `--include_dependees` which is now deprecated
and to be removed in v17 #1607
* The interpreter will now print the stack trace when encountering a
go panic #1614
* Various linux sandbox improvements to allow finer control #1617 #1618 #1622
#1632
* Fix cross-compiling binary `go_get()` targets #1628
* Added `deps` subcommand to `//_please:please_go` which can resolve go
imports based on the Please build graph #1631
* `plz help` no longer prints private args to build rules #1633
* Add `includes` and `defines` to cc rules #1637
* Performance improvements around `glob()` #1637
* Fixed some bugs with `.format()` #1635
* `protoc_binary()` can now take multiple URLs based on platform #1651
* Various improvements and fixes to proto and grpc rules. Mostly around
go and the new protoc plugins. #1653 #1655 #1665 #1716 #1717 #1705
* Handle zipsafe applied directly on python binaries #1660 #1688
* Add trimpath to `go_module()` to improve determinism when compiling
third party code #1654
* Fixes to `go_test()` related to coverage import paths #1667 #1670
* Please will no longer set the stdout and stderr in `log/test_results.xml`
to save space in CI. Added a config option to opt in. #1674 #1685
* Please can now compress test results when uploading them #1668
* Deprecated `raise()` which will be removed in v17 #1634
* Fixed issues related to `go_test()` in the repo root #1675
* Please no longer allows the go package `some/package` to be imported as
`some/package/package` #1680
* Test tools are now included in the runtime hash, fixing some issues around
test caching. #1690
* Changes around accessing `$HASH` to make it available for non-stamped
targets (`stamp = False`) #1696
* Added `semver_check()` which can be used to check semver constraints
from the build language #1704
* Various changes to `plz query changes` and `plz query revdeps` #1702
#1718
* Change how download and hash maven jars (removed FeatureFlags.MavenJar)
#1701 #1710
* Please now retrieves optional outputs from the cache #1727 #1731
* Deprecate `plz build --prepare` in favour of just using `--shell` #1730
* Fix up how we determine installing into a subdirectory for `pip_library()`
#1728
* Implement patches for `go_module()` and optionally strip sources from
`go_toolchain()` #1734
* Make `go_module()` install the root package when using the `foo/...`
wildcard #1732
* Fixed some issues around python coverage on macOS #1735
* Added `--in_tmp_dir` flag to `plz run` to run in the same temp directory
that `plz test` would run in #1733
* `gentest()` can now accept lists for `cmd` and `test_cmd` #1760
* `plz-out` is now excluded from `glob()` results #1756
* Added a darwin_arm64 release for the new apple silicone. Will need to be