github.phpd.cn/thought-machine/please@v12.2.0+incompatible/ChangeLog (about)

     1  Version 12.2.0
     2  --------------
     3  
     4      * Initial cross-compiling support via new --arch flag.
     5        See the docs for more info: https://please.build/cross_compiling.html
     6      * Added support for the Java --release flag (new in Java 9/10).
     7      * Support to pass environment variables (#302, fixes #205)
     8      * Added 'plz query changes' subcommand. This supersedes the old workflow
     9        involving plz_diff_graphs and is considerably faster.
    10  
    11  
    12  Version 12.1.8
    13  --------------
    14  
    15      * Make sure run arguments are passed into sh_binary.
    16      * Use jarcat when creating archives for sh_binary rules.
    17      * Fix sh_binary to use zip/unzip instead of tar.
    18      * Ensure sh_binary extracts files into the same directory as the script being run.
    19  
    20  Version 12.1.3
    21  --------------
    22  
    23      * More symlink fixes in outputs (#299)
    24  
    25  
    26  Version 12.1.2
    27  --------------
    28  
    29      * Fix for some errors relating to symlinks in outputs.
    30  
    31  
    32  Version 12.1.1
    33  --------------
    34  
    35      * Fix to incrementality in python_library rules where in some cases bytecode
    36        was generated inconsistently.
    37  
    38  
    39  Version 12.1.0
    40  --------------
    41  
    42      * `pip_library` rules output single .whl files for better cache performance (#297)
    43      * Corrected some distutils errors when using Homebrew's `pip3` (#294)
    44      * Initial (still experimental) implementation of `http_archive` and
    45        `new_http_archive` rules.
    46      * Various other improvements to Bazel compatibility.
    47      * `remote_file` now has a builtin implementation and can show progress.
    48      * A lot of internal refactoring around the implementation of subinclude().
    49        Parse tasks now happen off the main worker 'threads' so they don't block them.
    50        This is a prerequisite for subrepo support.
    51      * Migrated most uses of `filepath.Walk` to `godirwalk` (#273).
    52      * Fixed handling of aliases (#298)
    53  
    54  
    55  Version 12.0.0
    56  --------------
    57  
    58      * Parser overhaul, cgo interface / cffi has been removed. There is now no requirement
    59        for Python to be installed on a machine during initial bootstrap.
    60        The still-unnamed BUILD language is now a much tighter subset of Python, which
    61        will hopefully not present too many issues unless one is doing particularly fiddly
    62        things in BUILD files.
    63      * Go rules now filter their sources via build tags (including implicit ones derived from
    64        filenames) as `go build` would. This can be suppressed by setting `filter_srcs = False`
    65        if the old behaviour is preferred.
    66      * The default Python interpreter is now python3. It can be set to python in the
    67        .plzconfig if one prefers the old behaviour.
    68      * The GoVersion config attribute has been removed, and with it support for versions < 1.5.
    69      * The BUILD file linter (accessed via `plz tool lint`) has been removed. The warnings that
    70  	  it reported are essentially all now prohibited by the parser.
    71  	* The RPC cache now uses gzip compression; the server will need to be updated to the
    72        latest version to be able to communicate with clients.
    73  
    74  
    75  Version 11.4.0
    76  --------------
    77  
    78      * Added --run flag to plz watch which invokes the targets using `plz run`
    79        instead of build / test.
    80      * Replace hyphen with underscore in buildenv plzconfig sections (#274)
    81      * Added `plz query rules` which prints out the currently known set of rules definitions.
    82  
    83  
    84  Version 11.3.2
    85  --------------
    86  
    87      * Fix for build failures in a rare case where there's a stale output file that is
    88        part of the path for another output in a subdirectory, ultimately failing with
    89        "not a directory" errors.
    90  
    91  
    92  Version 11.3.1
    93  --------------
    94  
    95      * Improved checking for banned or deprecated BUILD language features
    96      * Compiled with Go 1.9.3, hopefully this may fix rare "sweep increased allocation count"
    97        bugs due to https://github.com/golang/go/issues/22781.
    98  
    99  
   100  Version 11.3.0
   101  --------------
   102  
   103      * Support for Java 9 and JEP-220 features: `java_module` and `java_runtime_image`
   104        can be used to build a standalone Java image using modules.
   105        New config properties `jlinktool` and `javahome` have been added.
   106  
   107  
   108  Version 11.2.1
   109  --------------
   110  
   111      * Small fix for some Java coverage instrumentation issues.
   112  
   113  
   114  Version 11.2.0
   115  --------------
   116  
   117      * Add support for merging Akka's reference.conf files when building
   118        java_library and java_binary targets with akka dependencies
   119      * Add --env flag on plz run that applies config values to the environment
   120        (notably PATH)
   121  
   122  Version 11.1.3
   123  --------------
   124  
   125      * As much sorting as possible of original targets is now retained when they are passed
   126        into subcommands (most notably `plz run sequential`, but could be others too).
   127      * Fixed some duplicate flags on proto_library.
   128  
   129  
   130  Version 11.1.2
   131  --------------
   132  
   133      * Fix for go_library when asm_srcs are passed, in some cases build would fail
   134        with permissions errors.
   135  
   136  
   137  Version 11.1.0
   138  --------------
   139  
   140      * python_binary and python_test rules can now import binary modules directly
   141        via an import hook that dynamically extracts them as needed. Hence zip_safe is
   142        not needed in many cases it was previously.
   143  
   144  
   145  Version 11.0.2
   146  --------------
   147  
   148      * Several small fixes to please_maven correcting a few cases.
   149  
   150  
   151  Version 11.0.1
   152  --------------
   153  
   154      * Fixed a rare internal data race.
   155      * Added a warning for potential cases where one target outputs into a directory written
   156        by another target, which can cause subtle build failures.
   157  
   158  
   159  Version 11.0.0
   160  --------------
   161  
   162      * Now ships with a builtin parser engine so the .so's aren't necessary (although
   163        still included for now) and there's no requirement to have cffi or any Python
   164        version installed to run.
   165      * Interactive debugging for tests; passing `-d` to `plz test` or `plz cover`
   166        causes the test to break into an interactive debugger on failure. Currently only
   167        works on Python, C and C++ tests.
   168      * Altered priority of config files; `/etc/plzconfig` is now the lowest priority and
   169        there is an additional `~/.please/plzconfig` immediately after it.
   170      * Added --profile flag which selects a config profile, e.g. `--profile dev` will
   171        attempt to read `.plzconfig.dev` if it exists.
   172      * Added --version flag to `plz update` to force updating to a particular version,
   173        and --latest flag to always update to the latest.
   174      * parse.experimentaldir config property can now be repeated.
   175      * Removed deprecated plz query completions --bash_script / --zsh_script flags
   176        in favour of plz --completion_script.
   177      * Fixed a bug where Python tests could fail under coverage for non-trivial setups
   178        (like where the srcs are outputs of rules from another package).
   179  
   180  
   181  Version 10.3.5
   182  --------------
   183  
   184      * Fix an issue on OSX where the parser engine was sometimes not found when plz
   185        was invoked through a symlink.
   186  
   187  
   188  Version 10.3.4
   189  --------------
   190  
   191      * Fix bug where some java tests couldn't load package-private classes when run with
   192        coverage and without a test package specified due to security boundaries created
   193        by instrumentation process.
   194  
   195  
   196  Version 10.3.3
   197  --------------
   198  
   199      * Fixed RPC cache server to serve metrics on --http_port as the flag documentation said.
   200        --metrics_port still works but will be removed in some future version.
   201  
   202  
   203  Version 10.3.2
   204  --------------
   205  
   206      * Minor fix to calculation of number of test runs when specifying -n on a flaky test.
   207      * Updated metrics on RPC cache server.
   208  
   209  
   210  Version 10.3.1
   211  --------------
   212  
   213      * Small tab completion fixes.
   214  
   215  
   216  Version 10.3.0
   217  --------------
   218  
   219      * Support for using pytest as the test runner instead of unittest
   220      * Python tests now supply test files as runtime files instead of packaging into
   221        the pex itself, leading to somewhat faster rebuild times.
   222      * `go_library` rules can now be individually opted out of coverage instrumentation.
   223      * `cgo_library` rules now accept a `pkg_config` argument to determine appropriate
   224        compiler flags for dependencies.
   225  
   226  
   227  Version 10.2.0
   228  --------------
   229  
   230      * Support for specifying Go import paths (#249)
   231      * `plz follow` now works anywhere (you don't have to be in a plz repo)
   232      * Fixed `sh_binary` which wasn't honouring visibility correctly.
   233  
   234  
   235  Version 10.1.1
   236  --------------
   237  
   238      * Fixes a long-lurking bug where some config values didn't override properly.
   239  
   240  
   241  Version 10.1.0
   242  --------------
   243  
   244      * Dynamic support for Python wheel naming schemes, either via name_scheme on the
   245        rule or by setting it in the config.
   246      * diff_graphs added to plz tool.
   247  
   248  
   249  Version 10.0.1
   250  --------------
   251  
   252      * Minor fix to Python import hooks in please_pex.
   253  
   254  
   255  Version 10.0.0
   256  --------------
   257  
   258      * please_pex rewritten to be more efficient. This is a breaking change for anyone
   259        who assumed they could import pkg_resources or pex as a global which will no longer
   260        be available (although these are easy to add using pip_library or python_wheel rules
   261        if still needed).
   262      * cgo_library takes a subdir argument that is needed if sources are in a subdirectory
   263        from the BUILD file (this isn't breaking since it never worked without).
   264      * Support for assembly (using go tool asm) in go_library and go_binary rules.
   265      * Removed a number of deprecated config properties.
   266      * Removed a number of deprecated arguments to builtin build rules (most have been
   267        deprecated and often nonfunctional for a long time now).
   268  
   269  
   270  Version 9.5.1
   271  -------------
   272  
   273      * Is now possible to prevent Java tests from consuming stdout / stderr by passing
   274        -DPLZ_NO_OUTPUT_CAPTURE to Java when running the jars. This isn't exposed through
   275        plz anywhere though.
   276  
   277  
   278  Version 9.5.0
   279  -------------
   280  
   281      * New config property, parse.preloadbuilddefs which specifies files to be loaded
   282        into the global rule context.
   283      * Moved a bunch of config properties (buildfilename, blacklistdirs, lang, parserengine,
   284        nonce, experimentaldir and linttool) out of the [please] section since that had
   285        turned into a bit of a grab-bag of unstructured properties.
   286        Old ones are still honoured for now but will be removed in v10.0.
   287      * please_sandbox now mounts a tmpfs on /tmp
   288      * `plz query print` prints a comment & build label on stdout rather then the bare label
   289        on stderr.
   290  
   291  
   292  Version 9.4.3
   293  -------------
   294  
   295      * Fix a subtle bug in junit_runner where it could throw an index exception on
   296        certain filenames.
   297  
   298  
   299  Version 9.4.2
   300  -------------
   301  
   302      * Fix to result parsing of Go tests when things log to stdout
   303        before the first test begins.
   304  
   305  
   306  Version 9.4.1
   307  -------------
   308  
   309      * Small fix to maven_jar rules on OSX which would sometimes take the wrong path for
   310        binary artifacts.
   311  
   312  
   313  Version 9.4.0
   314  -------------
   315  
   316      * Added a c_object rule which lets you compile a C or C++ object file from a single
   317        input. It's lower-level than c_library so rarely needed, but allows a bit more control.
   318      * Added protoc_binary which can download a protoc release to use as the protoc_tool.
   319        Unfortunately there is no equivalent available for gRPC C++ / Python plugins.
   320      * Pre- and post- build functions are now better optimised about recalculating
   321        changes after they run. Can significantly speed up building packages with
   322        many c_library rules in them.
   323      * Jarcat can now align files to specific size boundaries in a similar way to
   324        Android's zipalign command.
   325      * Setting PDEATHSIG on child commands which may help ensure that subprocesses
   326        (especially workers) terminate correctly.
   327      * Runtime data of tests is exposed in a $DATA env var.
   328      * Cleaning of the directory cache is now done in-process rather than in a
   329        forked subprocess. This allows it to be better synchronised with the main build
   330        about what it's deleting.
   331  
   332  
   333  Version 9.3.2
   334  -------------
   335  
   336      * Fixed a bug where data entries of targets would turn up at build time as well.
   337  
   338  
   339  Version 9.3.1
   340  -------------
   341  
   342      * Fixed command in previous version.
   343  
   344  
   345  Version 9.3.0
   346  -------------
   347  
   348      * Downloaded versions are now verified against a detached GPG signature.
   349      * Support for following the progress of a remote build using `plz follow`.
   350        Requires it to open a port, which is configured in the [events] section
   351        of .plzconfig.
   352      * Support for arbitrary env vars in .plzconfig which are available to all build rules.
   353        Note that these cause rebuilds of all targets on change, because we can't know what
   354        effects they'll have.
   355      * Go 1.9 is now required to compile Please.
   356  
   357  
   358  Version 9.2.3
   359  -------------
   360  
   361      * Fix a bug where C++ rules with a single source didn't always honour includes.
   362      * Fixed a panic in flags unmarshalling (only when flags were already incorrect,
   363        but we now handle it more nicely).
   364  
   365  
   366  Version 9.2.2
   367  -------------
   368  
   369      * Bugfix in go_get which sometimes failed due to not finding any directories to remove.
   370  
   371  
   372  Version 9.2.1
   373  -------------
   374  
   375      * Fixed one case that didn't correctly honour the `go` command location.
   376      * maven_jars / please_maven now correctly support the @aar syntax.
   377  
   378  
   379  Version 9.2.0
   380  -------------
   381  
   382      * Added check_config builtin which helps with asserting that things are
   383        set in .plzconfig, and ConfigError which is a little more specific than
   384        ParseError.
   385      * Support for passing multiple values for Maven repos (in config and to
   386        rules directly). They're searched in sequence and the rule succeeds as
   387        long as any one contains the requested artifact.
   388      * The name / location of the command invoked for `go` is now configurable.
   389  
   390  
   391  Version 9.1.7
   392  -------------
   393  
   394      * Fixed -o flag to be able to override map fields in config, such as buildconfig
   395        and aliases.
   396      * Fixed gc.keep field in config which wasn't being honoured properly.
   397  
   398  
   399  Version 9.1.6
   400  -------------
   401  
   402      * Fixed a subtle interaction of srcs and deps whereby transitive deps couldn't
   403        be accessed when specified as both srcs and deps.
   404  
   405  
   406  Version 9.1.5
   407  -------------
   408  
   409      * Actually fixed Python coverage some more.
   410  
   411  
   412  Version 9.1.4
   413  -------------
   414  
   415      * Fixed test code accidentally introduced into previous version for Python tests.
   416  
   417  
   418  Version 9.1.3
   419  -------------
   420  
   421      * Fixed `plz tool lint` which was looking in the wrong place.
   422  
   423  
   424  Version 9.1.2
   425  -------------
   426  
   427      * Fixed plz_diff_graphs again, pray I do not fix it further.
   428  
   429  
   430  Version 9.1.1
   431  -------------
   432  
   433      * Quick fix for plz_diff_graphs to honour manual:linux_amd64.
   434        Doesn't work correctly on OSX yet though.
   435  
   436  
   437  Version 9.1.0
   438  -------------
   439  
   440      * The 'manual' label can now be applied per-architecture, e.g. manual:linux_amd64.
   441  
   442  
   443  Version 9.0.4
   444  -------------
   445  
   446      * Fixed plz hash --update for cases where the hashes are on child rules.
   447  
   448  
   449  Version 9.0.3
   450  -------------
   451  
   452      * Minor fix to plz_maven to allow it to compare multiple repositories correctly.
   453  
   454  
   455  Version 9.0.2
   456  -------------
   457  
   458      * Fixed some pexes from previous commit where pex_root wasn't set properly.
   459  
   460  
   461  Version 9.0.1
   462  -------------
   463  
   464      * Better incrementality for python_test / python_binary rules.
   465  
   466  
   467  Version 9.0.0
   468  -------------
   469  
   470      * Better support for multiple Python versions; should now support python 2.7, 3.4, 3.5
   471        and 3.6 for bootstrap, and binary artifacts for all of those are written for coverage
   472        in generated test pexes.
   473      * Removed a number of esoteric builtin rules: github_file, git_repo, fpm_package and
   474        fpm_deb. Removed long-deprecated go_yacc rule and `link` argument to filegroup.
   475        Removed rules are available at github.com/thought-machine/pleasings as build_defs
   476        files; they will still work equivalently but it's unnecessary to have those built
   477        into the core.
   478  
   479  
   480  Version 8.7.5
   481  -------------
   482  
   483      * $(hash ) replacements correctly use output hashes instead of target hashes.
   484  
   485  
   486  Version 8.7.4
   487  -------------
   488  
   489      * Small fix for `maven_jar`; output filegroup is correctly tagged as binary.
   490  
   491  
   492  Version 8.7.3
   493  -------------
   494  
   495      * Fix for Debian's pip mess; we now attempt to pass --system to fix it
   496        if we can identify that we're running on Debian and using pip3.
   497  
   498  
   499  Version 8.7.2
   500  -------------
   501  
   502      * Fixed some bugs around handling >= in version specifier.
   503  
   504  
   505  Version 8.7.1
   506  -------------
   507  
   508      * Fixed a bug where building the :all or /... pseudo-targets would fail when
   509        post-build functions ran and require/provide meant not all the targets were needed.
   510  
   511  
   512  Version 8.7.0
   513  -------------
   514  
   515      * The protoc_flags argument to proto_library now applies transitively to any
   516        further protoc_library rules that depend on it, in a similar fashion to C++ rules.
   517        Since protos always need all transitive dependencies to compile they typically
   518        require transitive compiler flags as well.
   519      * Added a decompose function to the build builtins which breaks a build label into
   520        its package and name parts.
   521  
   522  
   523  Version 8.6.1
   524  -------------
   525  
   526      * No code change, but is now compiled with Go 1.9.
   527  
   528  
   529  Version 8.6.0
   530  -------------
   531  
   532      * Optional support for per-test metrics.
   533  
   534  
   535  Version 8.5.4
   536  -------------
   537  
   538      * Separate build & test sandboxing more correctly.
   539  
   540  
   541  Version 8.5.3
   542  -------------
   543  
   544      * Expand home paths correctly in secrets.
   545  
   546  
   547  Version 8.5.2
   548  -------------
   549  
   550      * Corrections to incrementality calculations when toggling targets between
   551        sandboxed and unsandboxed.
   552  
   553  
   554  Version 8.5.1
   555  -------------
   556  
   557      * Fixing timeouts in sandboxed actions by passing signals through to subprocesses.
   558  
   559  
   560  Version 8.5.0
   561  -------------
   562  
   563      * Adds an option for lightweight sandboxing of test / build actions.
   564        This only works on Linux right now, using a helper binary named please_sandbox
   565        which must be installed separately (the .deb is still built in this repo).
   566  
   567  
   568  Version 8.4.4
   569  -------------
   570  
   571      * Fixed issue with java_library rule introduced in previous version.
   572  
   573  
   574  Version 8.4.3
   575  -------------
   576  
   577      * Set $HOME during builds for some tools (notably Python) that want to know
   578        where it is and on some machine setups can fail without.
   579  
   580  
   581  Version 8.4.2
   582  -------------
   583  
   584      * Collect _pb2_grpc.py files for Python grpc_library rules.
   585      * Minor jarcat fix to improve determinism of outputs for tarballs.
   586  
   587  
   588  Version 8.4.1
   589  -------------
   590  
   591      * Pass -S when invoking the Python interpreter to byte-compile code.
   592        Fixes some cases where it failed importing site due to $HOME not being defined.
   593  
   594  
   595  Version 8.4.0
   596  -------------
   597  
   598      * `--include` and `--exclude` can now take a comma-separated list. These are essentially
   599        ANDed together (unlike passing the flag multiple times which ORs them).
   600      * `plz run parallel` limits the number of subprocesses run simultaneously.
   601  
   602  
   603  Version 8.3.1
   604  -------------
   605  
   606      * RPC cache now writes metadata files indicating who submitted artifacts.
   607  
   608  
   609  Version 8.3.0
   610  -------------
   611  
   612      * Added `manifest` argument to `java_binary` so you can specify an explicit MANIFEST.MF
   613  
   614  
   615  Version 8.2.6
   616  -------------
   617  
   618      * Fix to dependency cycle detection which could sometimes take a very long time.
   619  
   620  
   621  Version 8.2.5
   622  -------------
   623  
   624      * Some changes to how source hashes of other rules are calculated; fixes
   625        some subtle cases related to file names changing when contents don't.
   626  
   627  
   628  Version 8.2.4
   629  -------------
   630  
   631      * Internal improvements to hash_filegroup; it is now a known internal rule
   632        and operates more like normal filegroups (e.g. outputs are links and are
   633        never cached etc).
   634  
   635  
   636  Version 8.2.3
   637  -------------
   638  
   639      * Another fairly subtle fix to cc rules.
   640  
   641  
   642  Version 8.2.2
   643  -------------
   644  
   645      * Fairly subtle fix; add a missing `require` on `cc_static_library`.
   646  
   647  
   648  Version 8.2.1
   649  -------------
   650  
   651      * Leave the Python interpreter as given in the shebang of the pex, don't
   652        turn it into an absolute path.
   653  
   654  
   655  Version 8.2.0
   656  -------------
   657  
   658      * Rewrite of parts of Python rules for better performance
   659      * Added `static` argument to `go_test` rule, analogous to `go_binary`.
   660  
   661  
   662  Version 8.1.1
   663  -------------
   664  
   665      * Minor completion fixes to suppress warnings when version differs.
   666  
   667  
   668  Version 8.1.0
   669  -------------
   670  
   671      * Rewritten completion script; is now activated using
   672        `source <(plz --completion_script)` which works for both bash and zsh.
   673        It should also be more robust for more subtle flag combinations.
   674  
   675  
   676  Version 8.0.5
   677  -------------
   678  
   679      * Potential fix for a rare issue with rules like `hash_filegroup` that sometimes
   680        weren't marked as rebuilt correctly.
   681  
   682  
   683  Version 8.0.4
   684  -------------
   685  
   686      * Fix some tool-related errors in `proto_library` and `grpc_library`.
   687  
   688  
   689  Version 8.0.3
   690  -------------
   691  
   692      * Fix to cgo_library for cases where some of the sources are produced by a genrule.
   693  
   694  
   695  Version 8.0.2
   696  -------------
   697  
   698      * Small fix to jarcat to add __init__.py files in a couple more cases.
   699      * Subtle require/provide fix.
   700  
   701  
   702  Version 8.0.1
   703  -------------
   704  
   705      * Small fix to secrets in previous version which were causing some targets to rebuild
   706        more often than they should.
   707  
   708  
   709  Version 8.0.0
   710  -------------
   711  
   712      * The `tarball` rule has been rewritten to be more deterministic. As a consequence it now
   713        only supports gzip compression; the previous `compression` argument has been removed.
   714        This is obviously a breaking change for anything that was setting that argument.
   715      * Build rules with `needs_transitive_deps = True` no longer receive transitive deps of
   716        their `srcs`, only their `deps`.
   717        This is again a breaking change although a relatively subtle case that doesn't affect
   718        many rules; most cases that were using `srcs` and `deps` semantically correctly won't notice.
   719      * `plz query print` now accepts a `--fields` argument to print only the given fields.
   720      * `plz run` now has two new subcommands, `sequential` and `parallel` that allow passing
   721        multiple targets to be run either consecutively or concurrently.
   722      * Go 1.8 is now required to build the Please repo. Support for targeted Go versions is
   723        unchanged.
   724  
   725  
   726  Version 7.12.0
   727  --------------
   728  
   729      * Support for named output groups on rules. Outs can now optionally be specified as
   730        a dict of name -> outputs, and other rules can collect just the group they want.
   731        Resolves a few long-standing TODOs around the place.
   732  
   733  
   734  Version 7.11.4
   735  --------------
   736  
   737      * Fixed some indeterminacy in Go rules to do with the infamous symlinking malarkey.
   738  
   739  
   740  Version 7.11.3
   741  --------------
   742  
   743      * Fixed bug in RPC server that failed to load certificates from a directory.
   744  
   745  
   746  Version 7.11.2
   747  --------------
   748  
   749      * Tarballs are now correctly marked as `output_is_complete` so downstream rules don't
   750        fetch their transitive dependencies as well. Fixes some subtle interactions between
   751        `tarball` and `sh_binary`.
   752  
   753  
   754  Version 7.11.1
   755  --------------
   756  
   757      * Fix for performance regression of some setups (mostly large Java trees) introduced
   758        in previous version.
   759  
   760  
   761  Version 7.11.0
   762  --------------
   763  
   764      * `pkg_config_libs` is now applied transitively for `cc_library` and `c_library` rules.
   765      * Fixed a bug in pex writing where the output was not always deterministic.
   766      * Linter now detects deprecated & missing arguments and for duplicate third-party artifacts.
   767  
   768  
   769  Version 7.10.3
   770  --------------
   771  
   772      * Disabling tracing on RPC cache server, possible fix for aforementioned
   773        memory leak.
   774      * Fix for #208, whereby some C++ settings were not being honoured properly.
   775  
   776  
   777  Version 7.10.2
   778  --------------
   779  
   780      * Protobuf / gRPC update, testing to see if this helps an apparent memory leak in
   781        RPC cache server.
   782  
   783  
   784  Version 7.10.1
   785  --------------
   786  
   787      * Fix to go_get change in 7.10 to make it BSD-compatible.
   788  
   789  
   790  Version 7.10.0
   791  --------------
   792  
   793      * Add support for classifiers on `maven_jar`.
   794      * Automatic creation of `plz-out/go`, which contains some symlinks making it
   795        suitable for setting your GOPATH to to find some things in plz-out/gen (e.g.
   796        generated code).
   797      * Fix go_get with dependencies when in declared in repo root
   798  
   799  
   800  Version 7.9.2
   801  -------------
   802  
   803      * Honour the PATH settings given in plzconfig when starting worker processes.
   804  
   805  
   806  Version 7.9.1
   807  -------------
   808  
   809      * `proto_library` is a little more robust about some cases involving sources in
   810        subdirectories.
   811      * Fixed alwayslink for `cc_library` which was sometimes not honoured.
   812  
   813  
   814  Version 7.9.0
   815  -------------
   816  
   817      * Rewrite of proto_library and grpc_library rules. It's now possible to configure new
   818        languages externally for plugins such as grpc-gateway.
   819      * Add <root>/third_party/ to the default GOPATH
   820      * Added --shell flag to plz build, which is like --prepare but opens a shell in the
   821        work directory with an appropriate environment set.
   822      * Added --update flag to plz hash to rewrite hashes in a BUILD file.
   823  
   824  
   825  Version 7.8.2
   826  -------------
   827  
   828      * Correctly pass `pkg_config_libs` through `cc_binary` to `cc_library` (#190).
   829  
   830  
   831  Version 7.8.1
   832  -------------
   833  
   834      * Fixate tarball timestamps #188
   835  
   836  
   837  Version 7.8.0
   838  -------------
   839  
   840      * Added `plz export` command which exports a subset of the repo and its dependencies
   841        to an arbitrary directory.
   842      * Updating has a progress bar
   843      * Fixed some subtle linking issues in the compiled artifacts.
   844  
   845  
   846  Version 7.7.1
   847  -------------
   848  
   849      * Fixed flags argument to python_test rules.
   850  
   851  
   852  Version 7.7.0
   853  -------------
   854  
   855      * Versions in .plzconfig can now be specified as >=. Other patterns aren't (yet?) supported.
   856      * plz clean honours --include / --exclude
   857      * plz gc now rewrites / removes files and can be filtered to a list of targets
   858      * python3 parser engine now (mostly) works
   859      * Help message output improved
   860      * Fixed plz query revdeps when given a subpackage path (//src/... etc)
   861  
   862  
   863  Version 7.6.4
   864  -------------
   865  
   866      * Excluding errors from Python coverage reports; fixes failures when dynamically
   867        loading modules inside tests which coverage can't find the source for.
   868  
   869  
   870  Version 7.6.3
   871  -------------
   872  
   873      * Logging a periodic message during long-running tasks so it's possible to see
   874        what's still going (often the slowest test started a while back and you don't see
   875        any further messages logged while waiting).
   876  
   877  
   878  Version 7.6.2
   879  -------------
   880  
   881      * Minor bugfixes
   882  
   883  
   884  Version 7.6.1
   885  -------------
   886  
   887      * Fix to Istanbul coverage parsing to support instrumenting the source in a different
   888        target to the test target.
   889  
   890  
   891  Version 7.6.0
   892  -------------
   893  
   894      * Allow Unicode characters in target names.
   895      * Fixed some issues with plz cover when using Go 1.8
   896      * Fixed plz clean so it does not parse the repo unnecessarily.
   897      * Add current package directory to GOPATH, fixes #184.
   898      * Correctly exclude BUILD files from glob()
   899      * Fixed glob() for paths containing some atoms like ++
   900  
   901  
   902  Version 7.5.0
   903  -------------
   904  
   905      * Support for Istanbul's JSON coverage format.
   906      * please_pex now packages multiple versions of coverage.tracer which it attempts to
   907        import as appropriate.
   908  
   909  
   910  Version 7.4.8
   911  -------------
   912  
   913      * Support for Go 1.8 (specifically the changes to testing.MainStart).
   914  
   915  
   916  Version 7.4.7
   917  -------------
   918  
   919      * Fixed long-standing subtle issue with packaging Guava in junit_runner.
   920  
   921  
   922  Version 7.4.6
   923  -------------
   924  
   925      * Fix outs for js grpc_library rules.
   926  
   927  
   928  Version 7.4.5
   929  -------------
   930  
   931      * Add missing option to JS protos to generate serialisation code.
   932  
   933  
   934  Version 7.4.4
   935  -------------
   936  
   937      * Fix deadlock in metrics code.
   938  
   939  
   940  Version 7.4.3
   941  -------------
   942  
   943      * Suppress logging messages from worker processes as they die.
   944  
   945  
   946  Version 7.4.2
   947  -------------
   948  
   949      * Ensure that worker processes are killed at the end of a build.
   950  
   951  
   952  Version 7.4.1
   953  -------------
   954  
   955      * Fixed proto JS rules to correctly pick up transitive dependencies.
   956  
   957  
   958  Version 7.4.0
   959  -------------
   960  
   961      * Fixed please_pex for Python 3.6
   962      * Fixed go_test rules in the repo root.
   963      * Added proto.jsdep config option that gets used when building JS protos (#176)
   964  
   965  
   966  Version 7.3.0
   967  -------------
   968  
   969      * Support for generating Javascript files from a proto_library. Currently the
   970        generated code is not compiled in any way.
   971      * Fix to some obscure cases of building filegroups that weren't working properly.
   972      * Removed -Wextra from default CFLAGS, since many repos don't compile cleanly with it.
   973      * Falls back to trying to find a Bazel WORKSPACE file if run outside a plz repository.
   974  
   975  
   976  Version 7.2.0
   977  -------------
   978  
   979      * Support for 'remote' worker processes which are persisted throughout the build.
   980        These can be used to speed up compile times in cases where the compiler supports this
   981        and has significant startup overhead. Initial implementation for Java can have up to
   982        a 4x speedup on sufficiently large build graphs.
   983      * Added `plz help` command which can show reference information about built-in build rules,
   984        config settings, etc.
   985      * The Linux implementation will attempt to download a portable PyPy distribution if
   986        none of the plugins work against the system versions. Should make it easier to get
   987        up & running since it's not completely trivial to install.
   988      * Support for caches to store asynchronously, so further build actions don't have to
   989        wait on network latency. Retrieves must still happen synchronously, of course.
   990        The cache request scheme is also a little more efficient and will make slightly
   991  	  fewer requests overall.
   992  
   993  
   994  Version 7.1.1
   995  -------------
   996  
   997      * Reverted an internal update to guava which broke some Java tests.
   998        In future we'll look more at compatibility here, ideally it shouldn't matter but it's
   999        not fully obvious what is best to do.
  1000  
  1001  
  1002  Version 7.1.0
  1003  -------------
  1004  
  1005      * Support for an "experimental" directory specified in plzconfig. If set it is subject
  1006        to the following rules:
  1007         - Targets in the experimental tree can depend on any other target, regardless
  1008           of visibility constraints.
  1009         - Targets outside the experimental tree can't depend on targets in it, again
  1010           regardless of their visibility declaration.
  1011         - Please doesn't descend into the experimental tree for commands like `plz test //...`
  1012           so tests in there wouldn't generally be run.
  1013      * New command, `plz gc`, which attempts to identify unused targets across the repo.
  1014        "GC roots" are inferred from non-test binary targets, but can also be specified in .plzconfig.
  1015      * `plz query revdeps` no longer prints the targets it was given in the first place.
  1016      * More careful locking when building filegroups to avoid some race conditions.
  1017      * `plz query graph` is now better optimised for the case of outputting the entire graph,
  1018        which should be close to twice as fast as before.
  1019      * filegroup() now honours the `hashes` argument correctly.
  1020  
  1021  
  1022  Version 7.0.8
  1023  -------------
  1024  
  1025      * Fixed a formatting bug with `plz query print`.
  1026  
  1027  
  1028  Version 7.0.6
  1029  -------------
  1030  
  1031      * Fixed a long-standing but mysteriously unfound bug in incrementality where we did not
  1032        correctly handle symlinks to directories within a build dir.
  1033  
  1034  
  1035  Version 7.0.5
  1036  -------------
  1037  
  1038      * Fixed a requires statement on python_binary / python_test rules.
  1039  
  1040  
  1041  Version 7.0.4
  1042  -------------
  1043  
  1044      * Fixed some small issues around coverage for cgo_test rules.
  1045  
  1046  
  1047  Version 7.0.3
  1048  -------------
  1049  
  1050      * Fixed dependencies on fpm_deb again, pray I do not fix them further.
  1051  
  1052  
  1053  Version 7.0.2
  1054  -------------
  1055  
  1056      * Fixed dependencies on fpm_deb rules so they have Depends, not Build-Depends.
  1057  
  1058  
  1059  Version 7.0.1
  1060  -------------
  1061  
  1062      * Fixed a small bug where get_labels and has_label would return labels below a target
  1063        marked output_is_complete, which would cause some build rules to then fail.
  1064      * Fixed fpm_package which was not correctly honouring the `labels` argument.
  1065  
  1066  
  1067  Version 7.0.0
  1068  -------------
  1069  
  1070      * Introduced a set of c_library, c_binary rules etc. These parallel the cc_ versions and
  1071        share most of the implementation.
  1072      * cctool config setting renamed to cpptool, cctool now defines the compiler used for new
  1073        c_library etc rules. This is a breaking change.
  1074      * Similarly defaultoptcppflags and defaultdbgcppflags introduced.
  1075      * The defines argument to cc_library now accepts a dict of token name -> value.
  1076      * cgo_library has been extensively rewritten, and now takes separate arguments for srcs,
  1077        go_srcs (Go files that don't import "C"), c_srcs and hdrs. This allows better integration
  1078        with other native rules since it now honours the compiler and linker settings correctly.
  1079      * Timeouts in .plzconfig are now given as durations instead of plain ints.
  1080        The default is seconds but they can be suffixed with units (m, s, ms, etc).
  1081        Interpretation of any existing values is unchanged apart from metrics.frequency which
  1082        was inconsistently interpreted as milliseconds, and will now be interpreted as seconds
  1083        if no unit is given. This would obviously only affect anyone who'd overridden that value.
  1084  
  1085  
  1086  Version 6.1.2
  1087  -------------
  1088  
  1089      * Some small fixes to Java rules
  1090      * Fixed a bug where two filegroup rules outputting the same rule would sometimes fail
  1091        when built simultaneously.
  1092  
  1093  
  1094  Version 6.1.0
  1095  -------------
  1096  
  1097      * Added a static flag to cc_binary to attempt to link it statically.
  1098      * Fix cc_shared_object when srcs is empty.
  1099      * Suppress gcc build ids to reduce nondetermism
  1100      * Can now call HasLabel on an arbitrary build label, but it should be a transitive
  1101        dependency of the currently building rule to be safe.
  1102      * All sub-rules of a rule are rebuilt on 'plz rebuild'
  1103      * fpm_deb and fpm_package take a 'dirs' argument allowing passing rules with multiple outputs
  1104  
  1105  
  1106  Version 6.0.3
  1107  -------------
  1108  
  1109      * Finally fixed cc_embed_binary for OSX
  1110  
  1111  
  1112  Version 6.0.2
  1113  -------------
  1114  
  1115      * Another small maven_jar fix, related to Android this time
  1116      * plz query deps now filters its outputs by --include and --exclude
  1117  
  1118  
  1119  Version 6.0.1
  1120  -------------
  1121  
  1122      * Small maven_jar fix.
  1123  
  1124  
  1125  Version 6.0.0
  1126  -------------
  1127  
  1128      * Outputs are ordered canonically before hashing so tools like buildifier don't change
  1129        rule hashes.
  1130      * maven_jar is split into separate rules for binary & source artifacts, for better
  1131        incrementality & being easier to consume by other rules (since source artifacts are
  1132        generally not part of the build and only there for help for IDEs).
  1133      * cgo_library's 'package' argument has been changed to 'out' to be more consistent with
  1134        other rules (most notably go_library).
  1135      * cgo_library and cgo_test now have a setting in the config describing what they should
  1136        use for CC.
  1137      * go_binary now accepts a 'static' flag that attempts to completely statically link
  1138        the target.
  1139      * plz watch now discards events that do not relate to source files it cares about
  1140        (previously it would fire on any event in a relevant directory).
  1141      * include_defs and the cxx_ forms of the cc_* rules are now only available in Bazel
  1142        compatibility mode (which essentially also covers Buck now too).
  1143      * The version in .plzconfig is now parsed as a semver so must be valid by those rules.
  1144        Shouldn't be a major problem since there haven't been any versions for a long time
  1145        that wouldn't be valid.
  1146  
  1147  
  1148  Version 5.5.4
  1149  -------------
  1150  
  1151      * Fix a bug where multiple filegroups writing the same file could race with one another.
  1152  
  1153  Version 5.5.3
  1154  -------------
  1155  
  1156      * bugfix: make sh_binary work with and without dependencies
  1157      * sh_binary switched to use the same shebang as the original script (when there
  1158        are dependencies)
  1159  
  1160  Version 5.5.2
  1161  -------------
  1162  
  1163      * Increased maximum message size limit on RPC cache server to 100MB since at some
  1164        point gRPC started limiting it, and their 4MB default is too low for this case.
  1165      * Small fix for plz watch for targets with named sources.
  1166  
  1167  
  1168  Version 5.5.1
  1169  -------------
  1170  
  1171      * Fixed several potential sources of nondeterminism in various places.
  1172  
  1173  
  1174  Version 5.5.0
  1175  -------------
  1176  
  1177      * Linter can now suppress warnings over an entire file by adding a line with only
  1178        the suppression comment on it.
  1179      * Support for adding generic properties to the config which makes it less awkward to
  1180        write third-party rules that want to be able to set such things.
  1181      * Log file is always written (there seems to be no real performance penalty)
  1182      * `plz query revdeps` correctly identifies subincludes
  1183  
  1184  
  1185  Version 5.4.1
  1186  -------------
  1187  
  1188      * Fixed name of please_build_linter to be consistent between .deb and tarballs.
  1189  
  1190  
  1191  Version 5.4.0
  1192  -------------
  1193  
  1194      * Now ships with a linter to identify potential problems in BUILD / build_defs files.
  1195      * Minor determinism fix to go_get
  1196      * please_pex now only specifies 'python', not the version it was built with.
  1197      * Fixed running single tests in go_test rules.
  1198  
  1199  
  1200  Version 5.3.0
  1201  -------------
  1202  
  1203      * Some fairly extensive tweaks / cleanups to C++ rules.
  1204      * Added config options for configuring flags for pip in pip_library rules.
  1205      * Fixed generation of __init__.py files.
  1206      * Various _test rules now support being passed flags which are added to their test_cmd.
  1207      * Fixed some indeterminacy in some Java rules
  1208      * Fixed some deps being incorrectly attached to proto rules of the wrong language.
  1209      * Cache servers now accept durations in the form "3m", "10h25m", etc.
  1210      * Cache servers have a parameter to clean artifacts that haven't been accessed in
  1211        a certain period, defaulting to 30 days.
  1212  
  1213  
  1214  Version 5.2.3
  1215  -------------
  1216  
  1217      * Correct a small bug where visibility labels sometimes incorrectly applied too widely
  1218      * Various Python rules now respect package() directives correctly
  1219      * Fix to pip_library for rules with install_subdirectory=True and names not matching
  1220        the package name.
  1221  
  1222  
  1223  Version 5.2.2
  1224  -------------
  1225  
  1226      * Added missing protoc tool to proto_library / grpc_library rules.
  1227  
  1228  
  1229  Version 5.2.1
  1230  -------------
  1231  
  1232      * Reduced cardinality of labels sent to Prometheus so pushgateways don't get
  1233        overwhelmed so quickly.
  1234      * Licence matching is now case-insensitive.
  1235  
  1236  
  1237  Version 5.2.0
  1238  -------------
  1239  
  1240      * Added support for pushing metrics to a Prometheus pushgateway
  1241      * New flag --show_output / -s for plz test (+cover) to show the output of tests
  1242        even when successful.
  1243      * __init__.py writing moved from parse time to build time.
  1244      * Releases now built with Go 1.7
  1245  
  1246  
  1247  Version 5.1.0
  1248  -------------
  1249  
  1250      * Initial C++ coverage support
  1251      * Support for coverage in Go 1.7
  1252      * Support for Go 1.7 style subtests
  1253      * Added identifying labels to grpc_library rules
  1254      * Support for optional additional outputs on rules.
  1255  
  1256  
  1257  Version 5.0.1
  1258  -------------
  1259  
  1260      * Fix bug in java_library which would fail when given both srcs and resources.
  1261  
  1262  
  1263  Version 5.0.0
  1264  -------------
  1265  
  1266      * `tools` can now accept non-build rule labels which are interpreted as system binaries.
  1267        They are then hashed into the rule so it will rebuild appropriately.
  1268      * Corollary to above: grpcversion and protocversion properties have been removed from config.
  1269        goversion remains since it identifies some compatibility changes for 1.4.
  1270      * please_maven better supports more esoteric details of Maven.
  1271      * `plz watch` honours the previously set build config (i.e. `plz watch -c dbg` invokes
  1272        its subprocesses with `-c dbg` as well).
  1273  
  1274  
  1275  Version 4.5.1
  1276  -------------
  1277  
  1278      * `plz run` does not print to stdout any more, so things can consume stdout of it
  1279        and only get that of the running target.
  1280  
  1281  
  1282  Version 4.5.0
  1283  -------------
  1284  
  1285      * `plz build` now outputs more information about what target produced what files, and
  1286        prints to stdout so other programs can consume it if needed.
  1287  
  1288  
  1289  Version 4.4.1
  1290  -------------
  1291  
  1292      * Fix to `plz watch` which wasn't deduplicating dependencies correctly, so could take
  1293        a very long time to start on deep dependency trees.
  1294      * Performance improvements to `get_labels()`.
  1295  
  1296  
  1297  Version 4.4.0
  1298  -------------
  1299  
  1300      * Added support for multiple per-config test commands in the same way as build commands.
  1301      * Added hash_filegroup rule which acts like a normal filegroup but creates outputs with
  1302        a name based on their hash, which facilitates having immutable names for artifacts.
  1303  
  1304  
  1305  Version 4.3.2
  1306  -------------
  1307  
  1308      * Fix a divide by zero bug in coverage stats display.
  1309  
  1310  
  1311  Version 4.3.1
  1312  -------------
  1313  
  1314      * Fix to java configs from previous version where opt didn't have debug info,
  1315        we have an example of a test that fails in that configuration, so disabling
  1316        until we have more info.
  1317  
  1318  
  1319  Version 4.3.0
  1320  -------------
  1321  
  1322      * Default compiler options for javac are now settable in config file.
  1323      * Fixes to rare, subtle & quick to anger panics from concurrent map accesses in
  1324        plz and the cache servers.
  1325      * Fix to C++ tests where very rarely the output file got overwritten.
  1326      * Work paths are correctly stripped from cgo_library and go_get rules.
  1327  
  1328  
  1329  Version 4.2.2
  1330  -------------
  1331  
  1332      * Fix divide by zero in coverage stats.
  1333      * Another RPC cache fix, do not delete outputs when retrieving other files, only
  1334        when retrieving the main ones in the build step.
  1335  
  1336  
  1337  Version 4.2.1
  1338  -------------
  1339  
  1340      * The RPC cache now deletes outputs of a target to fix a rare case around targets
  1341        that have an output that is a directory and items in it are later removed.
  1342  
  1343  
  1344  Version 4.2.0
  1345  -------------
  1346  
  1347      * Adds some extra stats to output coverage file.
  1348  
  1349  Version 4.1.0
  1350  -------------
  1351  
  1352      * New command, `plz watch`, which watches the sources of a set of targets for
  1353        changes and rebuilds / re-tests them when they do.
  1354      * Support for generating C++ gRPC code in grpc_library.
  1355      * maven_jar now has a `binary` argument which prompts it to download a
  1356        native binary (.exe in Maven parlance).
  1357      * Some subtle changes to pexes to make them work better when not zip_safe.
  1358      * Bazel compatibility mode now supports $@, $<, etc.
  1359  
  1360  
  1361  Version 4.0.2
  1362  -------------
  1363  
  1364      * Remove Docker containers more forcibly.
  1365      * Exit code of fatal build failures changed slightly.
  1366      * python_binary now correctly accepts a rule for its `main`.
  1367  
  1368  
  1369  Version 4.0.1
  1370  -------------
  1371  
  1372      * Fixes some containerised Java tests when calculating coverage.
  1373  
  1374  
  1375  Version 4.0.0
  1376  -------------
  1377  
  1378      * Some rewrites of Go rules with several advantages:
  1379        - Now compatible with Go 1.7. Previously the linker would panic, apparently when doing
  1380          a dead code pass related to x/net/context. Still a little unsure of details.
  1381        - Should be faster, does some linking instead of copying & gives the compiler / linker
  1382          fewer directories to search.
  1383        - Compilation of binary / test code is separated from the linking step for better
  1384          incrementality.
  1385        There are some consequences from this:
  1386        - The gopath config entry must be set appropriately for libraries to be found.
  1387          Normally the defaults will be adequate here.
  1388        - Similarly, `src` subdirs are no longer implicitly searched in some circumstances.
  1389        - A go_binary rule must declare all dependencies used in its main package explicitly;
  1390          previously it was possible to pick them up transitively.
  1391        These will likely break some code that relied on the old behaviour; although such
  1392        code was probably technically incorrect, it's reasonable to consider this a breaking
  1393        change, hence the major version bump.
  1394      * Config options can be dynamically overridden on the command line,
  1395        e.g. `plz build -o go.version:1.7`
  1396      * Output files are made read-only in most cases.
  1397      * Post-build functions are run once only since it's quite tough to require them to be
  1398        idempotent.
  1399  
  1400  
  1401  Version 3.6.2
  1402  -------------
  1403  
  1404      * Remove undocumented skip_cache argument to build_rule; filegroups implicitly have this
  1405        and it's nicer not to expose it to anyone else.
  1406  
  1407  
  1408  Version 3.6.1
  1409  -------------
  1410  
  1411      * Update SRCS for named sources as well as unnamed ones when affected by require/provide.
  1412      * Jarcat has an extra flag to allow renaming directories within a zip file (currently
  1413        not used by any builtin rules).
  1414  
  1415  Version 3.6.0
  1416  -------------
  1417  
  1418      * add a `src_dir` argument to java_library
  1419      * allow attaching deps to a remote_file
  1420      * fix `plz clean` background bug
  1421      * #107 Introduce https and mutual auth support to RPC cache
  1422      * #108 New query subcommand, `plz query whatoutputs`, which queries the current graph and returns the
  1423        target responsible for the provided file(s)
  1424  
  1425  
  1426  Version 3.5.0
  1427  -------------
  1428  
  1429      * New command, `plz rebuild`, which behaves like `plz build` except that the named targets
  1430        (but not their dependencies) are always rebuilt.
  1431      * `remote_file` and `maven_jar` rules now print the URL before fetching, to make it a
  1432        bit easier to follow what they're actually trying to do if they fail.
  1433      * The Python hash seed is fixed before initialising the interpreter, so dict / set iteration
  1434        order should be deterministic between runs. The security implications aren't really a
  1435        concern in this context but repeatability is.
  1436  
  1437  
  1438  Version 3.4.1
  1439  -------------
  1440  
  1441      * fix for type checking script when run through python3
  1442      * Don't try to retrieve results from containerised tests that have no_test_output = True.
  1443      * Private targets are omitted from `plz query somepath`.
  1444  
  1445  
  1446  Version 3.4.0
  1447  -------------
  1448  
  1449      * `plz run` and `plz test` now default to the current package + subpackages when run
  1450        without arguments. `plz clean` and `plz query` still retain the old semantics of the
  1451        entire repo.
  1452  
  1453  
  1454  Version 3.3.0
  1455  -------------
  1456  
  1457      * Build / test commands are now run with "-o pipefail" so you don't have to specify
  1458        yourself. This could potentially break any rules that relied on the default
  1459        behaviour although it's unlikely that anything did that deliberately.
  1460      * Sources are deduplicated on build rules.
  1461      * Fixed a minor bug where plz run would incorrectly pass the --assert_version flag to
  1462        the target if it updated automatically.
  1463      * RPC cache now gives up after a sufficient number of failures so it doesn't drown
  1464        you in messages on long builds.
  1465      * If any of the entries in `srcs` in a build rule are None, they're skipped. This makes
  1466        it easier to write some rules with optional inputs.
  1467      * Added a config property for the default maven repo.
  1468      * Output file from java_binary is now configurable.
  1469  
  1470  
  1471  Version 3.2.0
  1472  -------------
  1473  
  1474      * Added type checks on arguments to build rules, because the errors can be
  1475        obtuse if you get them wrong.
  1476        Strictly speaking this is compatible with the previous release since it simply
  1477        enforces documentation, although there are subtle cases that would have been
  1478        accepted before that no longer are.
  1479  
  1480  
  1481  Version 3.1.3
  1482  -------------
  1483  
  1484      * Die immediately after a build finishes with unsuccessful targets; this matches
  1485        previous behaviour in the face of --failing_tests_ok.
  1486  
  1487  
  1488  Version 3.1.2
  1489  -------------
  1490  
  1491      * When a target fails, plz now waits for all other building targets to conclude
  1492        before terminating. We expect that over repeated builds this will be faster
  1493        because it won't keep abandoning half-complete tasks.
  1494        Compiler feedback should show immediately, and you can Ctrl+C it to stop whenever.
  1495  
  1496  
  1497  Version 3.1.1
  1498  -------------
  1499  
  1500      * Fixed `plz run` on java_binary rules not marked as self_executable.
  1501      * Various minor cache fixes. Access times should be correctly regenerated
  1502        on restart now.
  1503      * Initial work on FreeBSD port; is now mostly buildable there.
  1504  
  1505  
  1506  Version 3.1.0
  1507  -------------
  1508  
  1509      * Extra GOPATH additions for cgo_library / cgo_test are configurable through
  1510        [go]gopath setting. We typically use third_party/go for this.
  1511      * pip_library commands changed a bit to try to make it more deterministic.
  1512      * When artifacts fail hash verification after cache retrieval, attempt to build
  1513        locally instead of failing.
  1514  
  1515  
  1516  Version 3.0.2
  1517  -------------
  1518  
  1519      * Some caching fixes; directory entries are now retrieved correctly between restarts
  1520        of the RPC cache server.
  1521  
  1522  
  1523  Version 3.0.1
  1524  -------------
  1525  
  1526      * Fix to pex generation from previous version where it could sometimes add extraneous
  1527        __init__.py files which conflicted with real ones added later.
  1528  
  1529  
  1530  Version 3.0.0
  1531  -------------
  1532  
  1533      * Rewrite of cffi parser interface to use cffi's new embedding
  1534        (see http://cffi.readthedocs.io/en/latest/embedding.html).
  1535        This means that we can use cpython or pypy as engines, and build both as separate
  1536        .so's which we attempt to dlopen() at runtime. The advantage of all this is that
  1537        it becomes possible to run plz with CPython + cffi, which is quite a bit more
  1538        straightforward to get installed in the way we need on Linux at present.
  1539        PyPy should continue to work for anyone who had it working already though.
  1540      * Builtin rules no longer call zip and jar, because those produce nondeterministic
  1541        output due to encoding timestamps into their output. They now use jarcat instead.
  1542        Note that this is a breaking change for some maven_jars rules whose hashes will change.
  1543  
  1544  
  1545  Version 2.4.0
  1546  -------------
  1547  
  1548      * Minor fixes to Python coverage code
  1549      * Added a 'native' attribute to maven_jar which attempts to fetch a .jar with
  1550        native code. It also now takes 'hashes' since those might of course have
  1551        different ones on each architecture.
  1552      * Minor fixes to reverse deps queries.
  1553  
  1554  
  1555  Version 2.3.5
  1556  -------------
  1557  
  1558      * Better identification of dependency mediation in please_maven
  1559      * Rewording of version upgrade message.
  1560  
  1561  
  1562  Version 2.3.4
  1563  -------------
  1564  
  1565      * Incrementality fix for some cases where targets weren't correctly rebuilt
  1566        if their dependencies had been cached.
  1567  
  1568  
  1569  Version 2.3.3
  1570  -------------
  1571  
  1572      * Fix for sh_binary which used an incorrectly formatted version of sed.
  1573  
  1574  Version 2.3.2
  1575  -------------
  1576  
  1577      * Fix where existing partial outputs were sometimes not removed correctly.
  1578  
  1579  
  1580  Version 2.3.1
  1581  -------------
  1582  
  1583      * Fix for cc_static_library which was broken in previous version.
  1584  
  1585  
  1586  Version 2.3.0
  1587  -------------
  1588  
  1589      * Added Bazel compatibility mode; can be configured in .plzconfig and alters several
  1590        aspects of parsing behaviour to better mimic Bazel's behaviour. This allows parsing
  1591        of simple Bazel projects, complex Skylark rules are a long way from working at this
  1592        point though.
  1593      * cc_library gained new arguments, `includes` and `defines` which add directories to
  1594        the include path and define preprocessor symbols respectively. These are transitively
  1595        applied to dependent cc_library rules.
  1596      * cc_test has a new argument, `write_test_main` which defaults to true. If set to False
  1597        it does not provide a main() and you must write it yourself.
  1598      * java_binary no longer has to have main_class specified.
  1599      * cc_library generates (possibly) more sub-rules to compile each of its `srcs` separately,
  1600        which is significantly faster for large numbers of inputs.
  1601      * filegroup now has an internal implementation rather than being done in bash. This
  1602        allows some things internally to be done more robustly and avoids errors from command
  1603        line length limits for very large filegroups.
  1604      * `plz query somepath` now respects :all labels.
  1605  
  1606  
  1607  Version 2.2.1
  1608  -------------
  1609  
  1610      * Reworked ordering of tasks during build; should make little difference to overall time
  1611        but parses will happen relatively faster so the estimated total task number will rise
  1612        faster. This is more akin to the pre-1.8 behaviour.
  1613      * Fix bug where targets with need_transitive_deps = True could incorrectly receive tools
  1614        of their indirect deps in their tmp directory.
  1615  
  1616  
  1617  Version 2.2.0
  1618  -------------
  1619  
  1620      * Python targets now have a `stripped` build config in which the .py files are stripped out
  1621        and only .pyc / .pyo bytecode files included in the .pex.
  1622        We're considering making this the default behaviour for `opt` but if we do that will be
  1623        left for a future major revision.
  1624  
  1625  
  1626  Version 2.1.2
  1627  -------------
  1628      * Fixes one more bug with sh_binary where paths were taken to be relative when they were absolute.
  1629  
  1630  Version 2.1.1
  1631  -------------
  1632      * Fixes bug with sh_binary not ignoring the main script properly when generating the tarball.
  1633  
  1634  Version 2.1.0
  1635  -------------
  1636      * Adds additional features to sh_binary to make it more complete. sh_binary now creates
  1637        a single bash script. This script contains all dependencies as well as the main
  1638        script to be executed. When the sh_binary is run, it extracts all the files
  1639        to the current directory and finally executes the main script.
  1640  
  1641  Version 2.0.0
  1642  -------------
  1643  
  1644      * We are going to try doing semver from here on, so this release increments the major
  1645        version due to several very slightly breaking changes.
  1646      * More convenient output on incorrect hashes.
  1647      * C++ tests now honour being given a specific test to run (The current implementation
  1648        of this requires C++11, we could write it in a more tedious way if it's a problem).
  1649      * Reading stdin for build labels is now done asynchronously, so Please will build initial
  1650        targets from a relatively slow supplying process immediately rather than waiting for them all.
  1651        `plz query affectedtargets` and `plz query completions` still retain the old behaviour
  1652        for technical reasons (aka. laziness).
  1653        It is also slightly more robust about the input it accepts (esp. around spaces).
  1654      * `plz query alltargets` now does not display hidden targets (those starting with an
  1655        underscore) by default. It has a new `--hidden` flag which will show them as well.
  1656      * `subinclude()` can now be given a URL to download build defs from. Downloads will be
  1657        deduplicated and run as `real` build targets so the parse remains fast (or at least
  1658        as fast as possible given that something has to be downloaded for it to proceed).
  1659  
  1660  
  1661  Version 1.8.2
  1662  -------------
  1663  
  1664      * Fix interactive display on versions of iTerm (2.1.x) that don't support the
  1665        ANSI CPL instruction.
  1666      * Go version in config now only affects hashes of Go targets. This alters the
  1667        general hash calculation logic so unfortunately will force rebuilds of all targets -
  1668        this is unavoidable but will lead to better incrementality in future.
  1669      * Suffix temp build directories with #.build (and tests with #.test instead of just .test)
  1670        to avoid cases where they clash with paths to sub-packages that happen to
  1671        begin with the same name.
  1672  
  1673  
  1674  Version 1.8.1
  1675  -------------
  1676  
  1677      * Support for loading arch-specific config files, .plzconfig_linux_amd64 etc.
  1678        Allows tweaking config for different machine types.
  1679  
  1680  
  1681  Version 1.8.0
  1682  -------------
  1683  
  1684      * Reworked internal queuing implementation which prioritises `subinclude()` targets
  1685        more highly. `subinclude()` itself also caches compiled code.
  1686      * New feature, `plz query reverseDeps` which finds reverse dependencies of a target.
  1687      * `plz query graph` output has more features in it.
  1688      * new setting in config, blacklistdirs, which excludes certain directory names from
  1689        being walked by `plz build ...` and the like.
  1690      * Upgraded python coverage package.
  1691      * Upgraded gRPC implementation. Note that this is a breaking change for the RPC cache
  1692        so that will need to be upgraded in sync with plz itself.
  1693      * Allow passing build target expressions to --exclude.
  1694      * Fix for some relative implicit labels passed on the command line which sometimes
  1695        incorrectly lost a slash.
  1696      * Terminal window titles are now updated as build progresses.
  1697  
  1698  
  1699  Version 1.7.3
  1700  -------------
  1701  
  1702      * Support for maven_jars fetching specified optional dependencies via 'optional' argument.
  1703  
  1704  
  1705  Version 1.7.2
  1706  -------------
  1707  
  1708      * Fix to Java rules which were subtly broken in previous version.
  1709  
  1710  
  1711  Version 1.7.1
  1712  -------------
  1713  
  1714      * Additional flag, `--include_file`, to `plz cover` which filters coverage output to
  1715        just the given files.
  1716      * maven_jars now has two new arguments, `combine` which combines its transitive deps
  1717        into a single uberjar and `hash` which sets the hash for that uberjar.
  1718        The intention here is to make it more lightweight to set a hash for a single target
  1719        rather than having to provide potentially many individual hashes.
  1720      * Fixed aliases which were accidentally broken by some flag changes.
  1721  
  1722  
  1723  Version 1.7.0
  1724  -------------
  1725  
  1726      * Reworking of error handling in parsing code. Previous code used to panic back through
  1727        the parser which deeply upset PyPy (often we got away with it because we'd die before
  1728        anything else could go wrong, but not always). Now errors are returned to Python and
  1729        reraised as exceptions there - which implies that it's possible for BUILD code to
  1730        catch and handle such exceptions, although I don't recommend writing them that way :)
  1731      * Optimised glob() a bit so it doesn't descend into directories that will never match
  1732        the given pattern.
  1733      * Fixed compilation of clang tests with python3
  1734      * Officially ban subincluding of local targets (didn't actually work before anyway)
  1735      * `plz clean` now cleans sub-targets as well
  1736      * Banned double slashes in build labels which was being incorrectly let though, leading
  1737        to some very strange failures.
  1738      * Ensure paths are relative in hash memoisation - improves hit rate by about 30% and
  1739        is a performance improvement (although probably not very noticeable in most cases).
  1740  	* `plz cover` now has a `--line_coverage_report` / `-l` flag to produce line-by-line
  1741        coverage output for its affected files.
  1742  
  1743  
  1744  Version 1.6.7
  1745  -------------
  1746  
  1747      * Fix for go_src part of proto_library; don't think we exercise that internally
  1748        anywhere any more, but it is now a bit less broken than before.
  1749  
  1750  
  1751  Version 1.6.6
  1752  -------------
  1753  
  1754      * Fix to flaky tests; don't count as failures once success has been reached.
  1755  
  1756  
  1757  Version 1.6.5
  1758  -------------
  1759  
  1760      * BuildGraph now uses a RWMutex instead of a normal Mutex for slightly better concurrency.
  1761      * Added `plz hash` command which calculates the current hash for targets.
  1762      * Jarcat now does proper unsigning of jars always.
  1763  
  1764  
  1765  Version 1.6.4
  1766  -------------
  1767  
  1768      * `glob()` now correctly finds files in the current directory that are prefixed
  1769        with **, ie. `glob(['**/*.png'])` matches `a.png`.
  1770  
  1771  
  1772  Version 1.6.3
  1773  -------------
  1774  
  1775      * Proto rules now correctly set up C++ headers / sources separately which fixes
  1776        compilation with Clang.
  1777  
  1778  
  1779  Version 1.6.2
  1780  -------------
  1781  
  1782      * Fix for proto rules where grpc_library sometimes did not add a plugin correctly.
  1783  
  1784  
  1785  Version 1.6.1
  1786  -------------
  1787  
  1788      * Various tools now honour the please.location setting correctly.
  1789  
  1790  
  1791  Version 1.6.0
  1792  -------------
  1793  
  1794      * RPC cache now initialises asynchronously so if it's not available the
  1795        build will not hang waiting for its connection to time out.
  1796        This is a breaking addition to the cache's interface since it is now required to
  1797        implement the gRPC health check (from google.golang.org/grpc/health) so
  1798        v1.6+ of the server will have to be deployed to support v1.6+ clients.
  1799        It will remain backwards compatible for older clients though.
  1800      * Plz now comes with a wrapper script which can be committed and will fetch
  1801        plz and invoke it. Makes it easy to use for people who don't have it
  1802        installed already, ala Gradle's gradlew script.
  1803      * The default location for tools is in ~/.please instead of /opt/please,
  1804        which again makes it easier for people who don't have the tools already.
  1805      * --max_flakes flag has been removed in favour of --num_runs always making
  1806        a test run exactly that many times. Hopefully this is less confusing.
  1807      * `query alltargets` now obeys the original targets and --include / --exclude better.
  1808      * There is now a `system_library` rule which can collect files from outside the build tree.
  1809        Correspondingly, there is a `system_srcs` attribute on `build_rule`.
  1810  
  1811  
  1812  Version 1.5.12
  1813  --------------
  1814  
  1815      * Altered exclusion rules for java_binary / java_test to better support native libraries.
  1816  
  1817  
  1818  Version 1.5.11
  1819  --------------
  1820  
  1821      * Write explicit failures into unit test output on timeout etc. Needed for some downstream
  1822        tools that don't check attributes like 'failures' and need explicit entries.
  1823  
  1824  
  1825  Version 1.5.10
  1826  --------------
  1827  
  1828      * Fix for multiple caches which could sometimes panic with a negative waitgroup.
  1829  
  1830  
  1831  Version 1.5.9
  1832  -------------
  1833  
  1834      * grpc_library now correctly honours the 'languages' argument.
  1835  
  1836  
  1837  Version 1.5.8
  1838  -------------
  1839  
  1840      * Various fixes to RPC cache. Use base64 URL encoding and short hashes.
  1841  
  1842  
  1843  Version 1.5.7
  1844  -------------
  1845  
  1846      * Adds `go generate` support. You can now call it by adding `go_tools` to your go_library.
  1847  
  1848  
  1849  Version 1.5.6
  1850  -------------
  1851  
  1852      * Fix bug where golang tests pass if they panic since the exit code was being ignored
  1853        after piping the command to tee.
  1854      * 'plz query completions' now treats \: as equivalent to : to work around #18.
  1855  
  1856  
  1857  Version 1.5.5
  1858  -------------
  1859  
  1860      * Another similar fix for ForkExec call to cache_cleaner.
  1861  
  1862  
  1863  Version 1.5.4
  1864  -------------
  1865  
  1866      * Fix to cache_cleaner which wasn't always cleaning correctly.
  1867  
  1868  
  1869  Version 1.5.3
  1870  -------------
  1871  
  1872      * Fix tarballs to be consistent about /opt/please/please_go_test.
  1873  
  1874  
  1875  Version 1.5.2
  1876  -------------
  1877  
  1878      * Fix incorrect warning on tools that have multiple outputs.
  1879  
  1880  
  1881  Version 1.5.1
  1882  -------------
  1883  
  1884      * Fixed a bug where importing of libraries in test main files could be indeterminate
  1885        if you had multiple libraries of the same name in different subdirectories.
  1886  
  1887  
  1888  Version 1.5.0
  1889  -------------
  1890  
  1891      * Support for build configurations, activated by '-c opt' and '-c dbg'. Those two
  1892        are provided by default on C++ and Go rules; other languages can stick with a
  1893        single command at present, use those and / or define their own configs.
  1894      * The 'strip' config option and go_binary argument has been removed. It's now
  1895        implicit in -c opt for go_binary.
  1896      * C++ config options have changed a lot; the test / normal dichotomy has gone, we now
  1897        have defaults for dbg and opt and a default set of ldflags. -lunittest++ is applied
  1898        automatically by cc_test.
  1899      * --no_cache has been changed to --nocache for consistency.
  1900      * The -c argument to plz clean is now removed. Default is to clean the cache,
  1901        and it honours the top-level --nocache flag if you don't want to clean that.
  1902      * python_library now has an 'out' argument where you can set the name of the output
  1903        pex. It defaults to the same as before.
  1904      * More reliable returning of test output when tests time out.
  1905  
  1906  
  1907  Version 1.4.9
  1908  -------------
  1909  
  1910      * 'plz clean' now backgrounds itself when possible, in which case the user can
  1911        continue with other tasks with no delay.
  1912      * Added licenses() builtin function for Bazel compatibility; it roughly parallels
  1913        theirs in setting the default licence for all targets in a BUILD file. Implicitly
  1914        we can also now use package(default_licences = [...]) which is equivalent.
  1915      * + is now allowed in names of build rules.
  1916      * Fixed .deb package to include plz_diff_graphs.
  1917  
  1918  
  1919  Version 1.4.8
  1920  -------------
  1921  
  1922      * Fixed a bug where Please would sometimes panic during coverage display.
  1923      * 'plz query graph' now includes all transitive dependencies of requested targets
  1924        as well as the targets themselves.
  1925  
  1926  
  1927  Version 1.4.7
  1928  -------------
  1929  
  1930      * Quoting of expansions in shell commands now only happens when needed.
  1931      * $PKG variable is available to test commands as well.
  1932      * $ROOT_DIR variable is no longer available to any commands.
  1933  
  1934  
  1935  Version 1.4.6
  1936  -------------
  1937  
  1938      * Added a 'tools' attribute on genrules which refers to things used to build a rule
  1939        which aren't copied into the temp directory.
  1940      * Fixed bug where filegroup() didn't correctly honour the binary flag.
  1941  
  1942  
  1943  Version 1.4.5
  1944  -------------
  1945  
  1946      * Fix debs to have .jar suffix correctly.
  1947      * cc_library now correctly supports multiple srcs. As a result it produces a single .a
  1948        always instead of .o files. 'archive' attribute is now deprecated.
  1949  
  1950  
  1951  Version 1.4.4
  1952  -------------
  1953  
  1954      * Make timeout for retrieving Dockerised test results configurable, and default to
  1955        a higher value.
  1956      * Remove results file before running plz test or plz cover.
  1957      * Add configurable extensions which can be excluded from coverage.
  1958  
  1959  
  1960  Version 1.4.3
  1961  -------------
  1962  
  1963      * Adds support for nested tests in golang (e.g. test suites).
  1964  
  1965  
  1966  Version 1.4.2
  1967  -------------
  1968  
  1969      * Add a test failure when the test returns nonzero but produces a valid output
  1970        file with no errors, so we always show at least one in the summary.
  1971      * Add a cc_static_library rule which archives a transitive set of C++ rules.
  1972        Essentially it's the static counterpart to cc_shared_object.
  1973      * 'plz op' repeats the previous operation.
  1974      * Non-zip-safe pexes are now always extracted at startup, even if pex thinks
  1975        it doesn't need to. Fixes a bug where incrementality wasn't always correct
  1976        because we modify the .pex file after pex has built it.
  1977      * New flags --colour and --nocolour allow one to force coloured output on/off.
  1978  
  1979  
  1980  Version 1.4.1
  1981  -------------
  1982  
  1983      * Temporary directories are now cleaned after successfully building or testing.
  1984      * Minor updates to interactive console display.
  1985      * Fixes to make cgo_library more robust.
  1986      * Small fix to cc_embed_binary which no longer requires passing deps if the src
  1987        is generated via a genrule.
  1988  
  1989  
  1990  Version 1.4.0
  1991  -------------
  1992  
  1993      * java_binary and java_test now generate a self-executable .jar file and no
  1994        wrapper script, so the _name#jar sub-rule is no longer generated.
  1995      * A number of deprecated arguments have been removed; for example
  1996        source_under_test, headers / exported_headers, etc.
  1997      * Added a global config parameter to allow enabling/disabling PyPI globally.
  1998      * Slightly stricter type checking of arguments to build_rule
  1999      * All output of build steps now prints to stderr instead of stdout
  2000        (plz query still prints to stdout but plz test / plz build don't)
  2001      * Config hashes are now much more granular; only things that affect something
  2002        global are used in the calculation of the config hash. Changes to tools etc
  2003        are assumed to be handled by the rule hash of any rule using that tool.
  2004      * Test container settings in the global config only affect containerised
  2005        test rules and only at test time.
  2006      * Added a nonce field to the config which we'll use to invalidate the config
  2007        hash when necessary. This might happen at any minor release but should
  2008        be rare that we'll have to change it.
  2009      * Interactive display should be a bit nicer on some non-vsynced terminals
  2010        (xterm? not entirely sure what the conditions here were).
  2011      * 'query graph' now accepts a list of targets to filter to.
  2012      * Support for building with python3.
  2013      * Initial support for aliases in config file; the implementation is a little
  2014        agricultural but they seem to work so far, within their limits.
  2015      * Fix a bunch of small bugs too numerous to mention here.
  2016  
  2017  
  2018  Version 1.3.9
  2019  -------------
  2020  
  2021      * go_get now takes a `revision` argument which allows pinning libraries to a
  2022        particular git revision. `install` now has no effect on it.
  2023      * Adding new targets to a package in post build functions now takes effect
  2024        immediately, rather than waiting until the end of that post build function.
  2025        Fixes some subtle race conditions around dependencies.
  2026  
  2027  
  2028  Version 1.3.8
  2029  -------------
  2030  
  2031      * Fixed several (benign) race conditions in the interactive display in the interest
  2032        of having it run cleanly under go's race detector.
  2033      * Bunch of small cleanups suggested by gometalint.
  2034      * Add fpm_package and fpm_deb rules and use those to build packages instead of
  2035        top-level script.
  2036      * Fix for test result hashes; make them the same length as others so the cache cleaner
  2037        finds them ok.
  2038      * Fixed a hash calculation bug that would sometimes silently fail when the sources of a rule
  2039        included a symlink to a directory.
  2040  
  2041  
  2042  Version 1.3.7
  2043  -------------
  2044  
  2045      * Rules that specify a source dependency on a single output of another rule are now
  2046        honoured correctly when being built into a larger rule (eg. a python_library into
  2047        a python_binary, as happens often with protos).
  2048      * Added option to proto config to rewrite package of Python proto modules.
  2049  
  2050  
  2051  Version 1.3.6
  2052  ------------
  2053  
  2054      * please_maven now correctly fetches all transitive dependencies, not just one level.
  2055      * Added org.ow2.asm:asm-debug-all as a dependency for the test runner which was missing.
  2056      * 'plz query graph' now outputs labels in the graph dump.
  2057      * plz_diff_graphs can now include/exclude based on labels.
  2058  
  2059  
  2060  Version 1.3.5
  2061  -------------
  2062  
  2063      * Fixed a couple of subtle internal race conditions. Suspect that most but not all
  2064        cases were benign, and it's nicer to have them gone, albeit at the cost of more
  2065        lock contention - not that it seems to matter particularly.
  2066      * More robust Python licence detection.
  2067  
  2068  
  2069  Version 1.3.4
  2070  -------------
  2071  
  2072      * More informative error messages when parsing fails due to not finding a package.
  2073      * Defaults for repeated entries in the config files now only take effect if nothing else
  2074        is specified (ie. the entries in the config replace instead of appending). This
  2075        was always the intended behaviour although it's technically breaking.
  2076      * Added 'plz query graph' command that produces a (currently fairly minimal) JSON
  2077        representation of the graph that other tools could consume.
  2078      * Added a tool to diff two graphs produced by new 'query graph' command.
  2079  
  2080  
  2081  Version 1.3.3
  2082  -------------
  2083  
  2084      * Fix to filegroup rules at the top level of the repo.
  2085      * Fix some hash instability in at least some rules.
  2086  
  2087  
  2088  Version 1.3.2
  2089  -------------
  2090  
  2091      * Support for autodetecting licenses for packages found in a maven_jars rule.
  2092        Still pretty experimental since it's surprisingly hard to handle all the maven output
  2093        (maybe having someone write this who knew more about Maven would have been an idea...)
  2094      * Fix a parse bug where we need to transitively pass the requirement to build a target
  2095        that's needed for parse.
  2096      * Correct bug in output where it would sometimes crash in rare circumstances (attempting
  2097        to print build output of a target that wasn't built due to 'manual' label or similar)
  2098  
  2099  
  2100  Version 1.3.1
  2101  -------------
  2102  
  2103      * Added possibility for targets to depend on a single output of another rule,
  2104        using the format //package:target:output_file. This isn't accepted as a command
  2105        line input and is still a little experimental. Proto rules have been changed to
  2106        use it instead of generating #only sub-rules.
  2107      * Changed detection of multiple rules outputting the same file to parse-time detection
  2108        instead of unreliable build-time detection (this requires the proto changes above).
  2109      * The exec statement is now banned from the build language.
  2110      * When multiple caches are configured, artifacts fetched from a lower-priority cache
  2111        are stored into a higher-priority cache (eg. RPC cache -> dir cache).
  2112      * Support for associating licences with build targets. Can specify which to accept
  2113        and reject in the config.
  2114  
  2115  
  2116  Version 1.3
  2117  -----------
  2118  
  2119      * Add support to go_binary for stripping symbols.
  2120      * Added self-cleaning to HTTP cache
  2121      * Added RPC cache implementation.
  2122      * Fixed "source file not found" error in some (fairly complex) cases
  2123        (I think, this one has been a long battle...)
  2124      * Changed jarcat to proper logging & go-flags library
  2125      * Implement file copying to dir cache via copy+rename to avoid errors when files
  2126        are half-written.
  2127      * Building with PyPy 4.0
  2128      * Redid locking around parsing, should allow for better parallelism there
  2129        (although I think PyPy is still limited by its GIL).
  2130      * Introduced new builtin build function subinclude() which is similar to include_defs
  2131        but can be visibility controlled and consumes a real build label instead of basically
  2132        a file path. Will eventually remove include_defs since it can't be visibility controlled.
  2133      * python_binary rules can be depended on by python_library rules and imported as though
  2134        they were a python_library.
  2135  
  2136  
  2137  Version 1.2.7
  2138  -------------
  2139  
  2140      * Tag test results files with their runtime hash so they are correctly re-run
  2141        when runtime data files change
  2142      * Small fix to cc_shared_object which was incorrectly marked as binary.
  2143  
  2144  
  2145  Version 1.2.6
  2146  -------------
  2147  
  2148      * Propagate require / provide through exported_deps when producing sources.
  2149      * Add zip_safe as a flag on python_library and pip_library. python_binary and
  2150        python_test will pick this up if it's in their transitive dependencies and
  2151        mark the pex appropriately.
  2152      * Add a flag to control level of messages logged to file output separate from
  2153        normal verbosity.
  2154  
  2155  
  2156  Version 1.2.5
  2157  -------------
  2158  
  2159      * Import ban in Python changed to work by inspecting the AST instead of hacking
  2160        __builtins__. Removed some hacky global state changes as a result and added
  2161        caching of bytecode which seems quite a bit faster for parsing.
  2162      * Add flag to print commands as they're run (CEO request).
  2163      * Use directories under /tmp for containerised tests rather than top-level ones
  2164        so they can be run as non-root users within the container.
  2165  
  2166  
  2167  Version 1.2.4
  2168  -------------
  2169  
  2170      * Add detection of multiple rules outputting the same files. This is trickier
  2171        then one might think due to things like filegroup() and python_library()
  2172        repeating their outputs again so must be done at build time (not parse time).
  2173      * Make output trace file configurable.
  2174      * Delete test results file at plz startup.
  2175      * Disallow : or / in an incoming target name.
  2176      * Small cleanup which results in Java source / target levels now being strings.
  2177  
  2178  
  2179  Version 1.2.3
  2180  -------------
  2181  
  2182      * Small bugfix: named sources that are build labels now automatically add the
  2183        dependency in the same way that anonymous sources do.
  2184      * Fix a case where post-build rules weren't always linking up deps properly.
  2185  	* Rename split_path_ext to just splitext, it's more natural.
  2186  
  2187  
  2188  Version 1.2.2
  2189  -------------
  2190  
  2191      * Small bugfix: always attempt to kill container, even if we can't retrieve results.
  2192      * Add basename, dirname, split_path and split_path_ext as global utility functions.
  2193  
  2194  
  2195  Version 1.2.1
  2196  -------------
  2197  
  2198      * Docker change: rather than attempting to run as the current user which often
  2199        has weird effects because they're not known within the container, run as root and
  2200        extract the files afterwards with 'docker cp' to avoid root ownership.
  2201      * Added timeout and container arguments to sh_test which were missing
  2202      * Small improvement to 'plz query print' to not repeat things that are implied
  2203        (requires -> labels, exported_deps -> deps).
  2204      * Strip all leading underscores for dependent rule names in interactive display
  2205      * Remove PY_PKG variable, just replace it in bash
  2206      * OP has merged my go-flags patch upstream, it's no longer needed
  2207      * Allow specifying the output name of a go_library rule
  2208      * Add labels arg to filegroup
  2209  
  2210  
  2211  Version 1.2
  2212  -----------
  2213  
  2214      * Support for acquiring the transitive set of labels a rule & its dependencies possess.
  2215        Useful for implementing properties that affect the final target, eg. cc_library
  2216        linker flags being applied to the final cc_binary.
  2217      * cc rules: change 'headers' and 'exported_headers' to just 'hdrs', which are always
  2218        exported because that's generally what you want. Will consider adding 'private_headers'
  2219        or similar later if there's a need but for now I'd prefer the default to be obvious.
  2220      * Incremental pex compilation; every python_library rule generates a little .zip file
  2221        of just its stuff which get merged together in the final rule. Quite fiddly to get
  2222        right but the speedup is dramatic.
  2223      * Some rewriting of Go rules to make them more robust for complex libraries & go_get.
  2224      * Added an exclusive file lock to two plz processes running in the same repo will
  2225        not run simultaneously (unless you pass --nolock).
  2226  
  2227  
  2228  Version 1.1.4
  2229  -------------
  2230  
  2231      * Added jvm_args parameters to java_test and java_binary so it's possible to
  2232        customise JVM startup.
  2233  
  2234  
  2235  Version 1.1.3
  2236  -------------
  2237  
  2238      * `plz update` now ignores the selfupdate field in config and always updates.
  2239      * Added new subcommand, `plz query output` to get the outputs of a rule.
  2240  
  2241  
  2242  Version 1.1.2
  2243  -------------
  2244  
  2245      * Fix passing relative targets on command line; was accidentally broken by parsing
  2246        build labels earlier on in the initialisation process.
  2247      * Refactor of the underlying zip writer stuff in jarcat. Doesn't make much difference
  2248        yet but is a step towards some future work.
  2249      * Add a count of number of targets done / total which better approximates progress.
  2250  
  2251  
  2252  Version 1.1.1
  2253  -------------
  2254  
  2255      * Upgrade to go 1.5, at last fixed the PyPy issue with a couple of lines of Go.
  2256        Note that this is a breaking change for developers (but invisible to users of plz,
  2257        so we're doing it at a minor version).
  2258      * Share env-building code between build & test, and log more for tests.
  2259      * Fixes to http cache.
  2260      * New command, 'query affectedtargets', which is similar to 'query affectedtests' but
  2261        finds all targets, not just tests. 'query affectedtargets --tests' obsoletes
  2262        'query affectedtests' which will be removed at plz 1.2.
  2263  
  2264  
  2265  Version 1.1
  2266  -----------
  2267  
  2268      * Major version bump because numbers were getting too big.
  2269      * HTTP cache ready for early adopter testing
  2270      * Can set containerisation settings on a per-target basis and control the user Docker
  2271        runs as within the container.
  2272      * Changed $(location ...) style substitutions to use relative instead of absolute paths
  2273        so they can be shared via the HTTP cache.
  2274  
  2275  
  2276  Version 1.0.13
  2277  --------------
  2278  
  2279      * Expand ~ to home path when building targets.
  2280  
  2281  
  2282  Version 1.0.12
  2283  --------------
  2284  
  2285      * Initial implementation of HTTP cache, not yet ready to use.
  2286      * Add a little more logging when targets fail to build, which we've seen a few times.
  2287      * Some suggestions from go vet, one of which may improve locking potentially
  2288      * Ensure rule outputs are added uniquely.
  2289  
  2290  
  2291  Version 1.0.11
  2292  --------------
  2293  
  2294      * Fix for cases where sometimes parse errors would not be reported.
  2295        Turned out to be related to disallowing imports, so we attempt to
  2296        allow them during compilation (but not execution) of code.
  2297  	* Update of go rules to be more correct and hopefully streamlined around go_get.
  2298  
  2299  
  2300  Version 1.0.10
  2301  --------------
  2302  
  2303      * Added RunArgs to [docker] section of config file to allow passing it
  2304        arbitrary extra arguments.
  2305      * Rewrite of parts of the Go rules to more correctly support targets
  2306        in subdirectories.
  2307      * add_out() function introduced to build language which can be used
  2308        to annotate a target with additional outputs, particularly during
  2309        post-build function. Still slightly experimental.
  2310  
  2311  
  2312  Version 1.0.9
  2313  -------------
  2314  
  2315      * 'query completions' can now be filtered to particular targets, so it will
  2316        only complete binaries for 'plz run' and tests for 'plz test' or 'plz cover'.
  2317      * Update by downloading tarballs instead of individual binaries. This deprecates
  2318        the --extra_tools flag but we will keep it for compatibility for a while.
  2319      * Fix for query affectedtests so it correctly excludes manual tests.
  2320  
  2321  
  2322  Version 1.0.8
  2323  -------------
  2324  
  2325      * Bugfix, 'query affectedtests' not always reading from stdin properly.
  2326  
  2327  
  2328  Version 1.0.7
  2329  -------------
  2330  
  2331      * Bugfix, previous version mistakenly changed 'query input' to 'query inputs'.
  2332  
  2333  
  2334  Version 1.0.6
  2335  -------------
  2336  
  2337      * Remove SRCDIR variable and built-in supporting code. No longer needed
  2338        for compatibility and the symlink causes problems for some rules because
  2339        it introduces a diamond into the folder structure.
  2340      * Remove __import__ builtin from parser so build scripts can no longer
  2341        import external modules.
  2342      * Added a test_only attribute for library rules that ensures they can only be
  2343        used by tests or other test_only rules.
  2344      * python3 compatibility fix in test_main.py
  2345      * Added a package() function that can be used to set various global config
  2346        things (probably most usefully, default_visibility).
  2347      * Flag parsing refactor; should mostly be invisible externally except that
  2348        `plz clean cache` is now `plz clean --cache`.
  2349      * Selective test running, eg. `plz test //test:my_test my_test_function`
  2350      * --num_runs flag to force a test to run multiple times.
  2351      * Some refactoring & bugfixes to require/provide.
  2352  
  2353  
  2354  Version 1.0.5
  2355  -------------
  2356  
  2357      * Fix crash in output code when window is very small vertically.
  2358      * Support for Go 1.5. Seeing some issues that may be caused by it so
  2359        not upgrading just yet.
  2360      * Populate Java test class names correctly.
  2361      * Display elapsed time for each test.
  2362      * Fix for require / provide stuff still building unnecessary targets
  2363        (they weren't depended on, but still got built).
  2364      * Fix caching targets when run with plz cover.
  2365      * Support for pseudo-targets like :all and ... with plz clean.
  2366  
  2367  
  2368  Version 1.0.4
  2369  -------------
  2370  
  2371      * Fix crash when running tests with --no_cache.
  2372      * Nothing else, quick release to fix crasher.
  2373  
  2374  
  2375  Version 1.0.3
  2376  -------------
  2377  
  2378      * Test results are now cached & retrieved as other build artifacts.
  2379      * Hashes are verified after retrieving from cache
  2380      * Targets retrieved from cache are marked as unchanged when appropriate
  2381      * Added a join_path builtin to the build language.
  2382      * Remove all outputs after a build fails.
  2383      * Attempt to import Python test modules ourselves before relying on unittest's
  2384        detection, which produces misleading error messages if an ImportError is
  2385        thrown while attempting to load the test.
  2386      * Display depending target when we encounter a missing dependency.
  2387      * If build fails due to an apparent dependency cycle, attempt to detect and
  2388        print the cycle.
  2389  
  2390  
  2391  Version 1.0.2
  2392  -------------
  2393  
  2394      * Generate a python_library rule behind a python_binary to symlink
  2395        the main .py file into plz-out. Fixes certain run issues.
  2396      * Set ROOT_DIR variable while running tests.
  2397  
  2398  
  2399  Version 1.0.1
  2400  -------------
  2401  
  2402      * Support for skipping tests in go_test
  2403      * Limit length of printed lines in interactive shell mode so
  2404        output doesn't go berserk when window is too narrow.
  2405        (it's still not great at being resized down but at least it
  2406         stabilises after the window is reduced).
  2407      * Fall back to attempting to copy files if hardlink fails.
  2408  
  2409  
  2410  Version 1.0
  2411  -----------
  2412  
  2413      * f1rst post!!!1!one