github.com/sercand/please@v13.4.0+incompatible/ChangeLog (about)

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