Skip to content

Releases: thought-machine/please

Please v3.6.0

04 Jul 10:51
Compare
Choose a tag to compare

v3.6.0
Features:

  • #107 Introduce https and mutual auth support to RPC cache
  • #108 New query subcommand, plz query whatoutputs, which queries the current graph and returns the target responsible for the provided file(s)
  • add a src_dir argument to java_library
  • allow attaching deps to a remote_file

Bugfixes:

  • fix plz clean background bug

Please v3.3.0

22 Jun 09:06
Compare
Choose a tag to compare

Version 3.3.0 is now ready for public use.

As usual I've been a little slow about releases and so this includes features from 3.1.x and 3.2.x as well.

Significant new features:

  • Please is now (mostly) compilable on FreeBSD; the RPC cache is still disabled due to lack of gRPC support but otherwise it should work.
  • When a target fails to build, plz waits for other building targets to finish before dying. This should improve build times over repeated builds where one doesn't keep starting work that never gets finished.
  • Added explicit type checks on arguments to build rules.
  • Build / test commands are always run with -o pipefail, because it's easy to forget and basically always what you want.
  • RPC cache gives up after a sufficient number of failures.
  • Any entries in srcs of a rule that are None are now silently ignored, which makes it easier to write some rules.
  • GOPATH additions are configurable in config file.
  • pip_library commands have been changed to improve determinism.
  • Artifacts are built locally if they fail hash verification after being retrieved from the cache.

Plus various other minor features & bugfixes.

Please v3.0.2

28 May 11:00
Compare
Choose a tag to compare

First public-ready release of Please v3.x!

The major change in this version is a rewrite of the parser engine's interop code to use cffi's new embedding mode. This allows runtime-loadable parsers and means that it's possible to run Please with a cpython engine as well as PyPy. Hopefully this should make deployment / running easier.

Other significant changes include:

  • Builtin rules no longer call zip and jar, instead we use our own tooling which creates deterministic outputs.
  • Python targets now have a stripped build config that precompiles .pyc files and removes the source code, for cases where you might want to distribute sourceless pexes. They also initialise a bit faster.
  • Added a Bazel compatibility mode that accepts various alternate argument names and mimics some of their builtins. This allows parsing simple Bazel projects although not loading Skylark rules.
  • filegroup rules are now a builtin, which is faster, simplifies some internal code and avoids some issues with command lengths for rules that expand to many sources.
  • cc_library rules parallelise internal compilation better when they have multiple srcs.
  • Fixes to cache servers to handle some fringe cases, especially around directories.

Please v2.1.2

10 May 09:45
Compare
Choose a tag to compare

Minor feature addition since 2.0.0:

  • Adds additional features to sh_binary to make it more complete. sh_binary now creates a single bash script. This script contains all dependencies as well as the main script to be executed. When the sh_binary is run, it extracts all the files to the current directory and finally executes the main script.

Please v2.0.0

05 May 16:54
Compare
Choose a tag to compare

New release, with a bunch of new features! We are now doing semver so the major version will be bumped to indicate incompatible changes.

Highlights of this release:

  • More convenient output on incorrect hashes.
  • C++ tests now honour being given a specific test to run (The current implementation
    of this requires C++11, we could write it in a more tedious way if it's a problem).
  • Reading stdin for build labels is now done asynchronously.
  • plz query alltargets now does not display hidden targets (those starting with an
    underscore) by default. It has a new --hidden flag which will show them as well.
  • subinclude() can now be given a URL to download build defs from.
  • Fix interactive display on versions of iTerm (2.1.x) that don't support the
    ANSI CPL instruction.
  • Go version in config now only affects hashes of Go targets.
  • Suffix temp build directories with #.build (and tests with #.test instead of just .test)
    to avoid cases where they clash with paths to sub-packages that happen to
    begin with the same name.
  • Support for loading arch-specific config files, .plzconfig_linux_amd64 etc.
    Allows tweaking config for different machine types.
  • Reworked internal queuing implementation which prioritises subinclude() targets
    more highly. subinclude() itself also caches compiled code.
  • New feature, plz query reverseDeps which finds reverse dependencies of a target.
  • plz query graph output has more features in it.
  • new setting in config, blacklistdirs, which excludes certain directory names from
    being walked by plz build ... and the like.
  • Upgraded python coverage package.
  • Upgraded gRPC implementation. Note that this is a breaking change for the RPC cache
    so that will need to be upgraded in sync with plz itself.
  • Allow passing build target expressions to --exclude.

Please v1.7.2

12 Apr 16:56
Compare
Choose a tag to compare

Minor feature additions since v1.7.0:

  • Additional flag, --include_file, to plz cover which filters coverage output to
    just the given files.
  • maven_jars now has two new arguments, combine which combines its transitive deps
    into a single uberjar and hash which sets the hash for that uberjar.
    The intention here is to make it more lightweight to set a hash for a single target
    rather than having to provide potentially many individual hashes.
  • Fixed aliases which were accidentally broken by some flag changes.

Please v1.7.0

11 Apr 16:01
Compare
Choose a tag to compare

First release of 1.7.x, after the short-lived 1.6.x series never made it here. Notable changes include:

  • Reworking of error handling in parsing code. Previous code used to panic back through
    the parser which deeply upset PyPy (often we got away with it because we'd die before
    anything else could go wrong, but not always). Now errors are returned to Python and
    reraised as exceptions there - which implies that it's possible for BUILD code to
    catch and handle such exceptions, although I don't recommend writing them that way :)
  • Optimised glob() a bit so it doesn't descend into some directories that will never match
    the given pattern.
  • Officially ban subincluding of local targets (didn't actually work before anyway, but now
    you get an 'official' message explaining why)
  • plz clean now cleans sub-targets as well
  • Banned double slashes in build labels which was being incorrectly let though, leading
    to some very strange failures.
  • Ensure paths are relative in hash memoisation - improves hit rate by about 30% and
    is a performance improvement (although probably not very noticeable in most cases).
  • plz cover now has a --line_coverage_report / -l flag to produce line-by-line
    coverage output for its affected files.

Please v1.5.11

24 Feb 10:29
Compare
Choose a tag to compare

A series of minor fixes over 1.5.8. We remain hopeful there isn't much left for the 1.5.x branch :)

* Write explicit failures into unit test output on timeout etc. Needed for some downstream
  tools that don't check attributes like 'failures' and need explicit entries.
* Fix for multiple caches which could sometimes panic with a negative waitgroup.
* grpc_library now correctly honours the 'languages' argument.

Please v1.5.8

16 Feb 18:58
Compare
Choose a tag to compare

A selection of changes & fixes:

  • Fix bug in go_test where it would sometimes return success if a test panicked
  • plz query completions treats : as equivalent to : to help bash completion work
  • go_generate rule added
  • Fixes to RPC cache

Please v1.5.4

11 Feb 12:37
Compare
Choose a tag to compare

Contains minor fixes versus 1.5.4:

  • Consistent naming of please_go_test
  • Fix to cache_cleaner which sometimes didn't clean properly