Skip to content

Releases: thought-machine/please

Please v13.0.3

03 Jul 09:27
Compare
Choose a tag to compare

Version 13 is finally out!

Headline features:

  • Can now start shared test workers in a similar way to shared build workers. The worker protocol has been changed to JSON instead of protobuf. This isn't compatible with older versions, but they shouldn't normally mix anyway.
  • Now communicating with Docker using a proper API instead of execing the CLI. docker_run_args is no longer supported as a result.
  • Directory cache now supports a dircompress config option which stores artifacts as gzipped tarballs. This is slower to save / restore but results in fewer files and less space used.
  • Support behave as a Python test runner.
  • Supports Python 3.7
  • Better preservation of XML test results

Thanks to all who contributed!

Please v12.2.0

03 May 15:23
Compare
Choose a tag to compare

Please v12.2.0 is done. Notable changes / improvements include:

  • Initial cross-compiling support via new --arch flag. See the docs for more info:
    https://please.build/cross_compiling.html. Note that this is still experimental.
  • Added support for the Java --release flag (new in Java 9/10).
  • Support to pass through environment variables (#302, fixes #205)
  • Added 'plz query changes' subcommand. This supersedes the old workflow involving plz_diff_graphs and is considerably faster.

Plus the usual assortment of fixed & new bugs.
Thanks to the contributors for this release!

Please v12.1.1

06 Apr 10:46
Compare
Choose a tag to compare

Please v12.1 is ready. Notable updates in this version include:

  • pip_library rules output single .whl files for better cache performance (#297)
  • Corrected some distutils errors when using Homebrew's pip3 (#294)
  • Initial (still experimental) implementation of http_archive and new_http_archive rules, and other Bazel compatibility improvements.
  • remote_file now has a builtin implementation and can show progress.
  • A lot of internal refactoring around the implementation of subinclude(). Parse tasks now happen off the main worker 'threads' so they don't block them.
  • Migrated most uses of filepath.Walk to godirwalk (#273).
  • Fixed handling of aliases (#298)
  • More repeatable Python bytecode generation - turns out that some rare cases have been nondeterministic (probably since forever).

We're releasing v12.1.1 immediately since the Python bytecode fix landed before 12.1.0 was tagged.
Thanks to all the contributors to this release!

Please v12.0.0

14 Mar 10:06
Compare
Choose a tag to compare

This one has been incubating for a little while, but Please 12 is now done.

The headline feature is a complete overhaul of the BUILD file parser; there is now no cgo / cffi involved and no requirement for Python to be installed on a machine during initial bootstrap.
The still-unnamed BUILD language is now a much tighter subset of Python, which will hopefully not present too many issues unless one is doing particularly fiddly things in BUILD files. See the documentation for specific information about what's supported.

Other features include:

  • Go rules now filter their sources via build tags (including implicit ones derived from
    filenames) as go build would. This can be suppressed by setting filter_srcs = False
    if the old behaviour is preferred.
  • The default Python interpreter is now python3. It can be set to python in the
    .plzconfig if one prefers the old behaviour.
  • The GoVersion config attribute has been removed, and with it support for versions < 1.5.
  • The BUILD file linter (accessed via plz tool lint) has been removed. The warnings that
    it reported are essentially all now prohibited by the new parser.
  • The RPC cache now uses gzip compression; the server will need to be updated to the
    latest version to be able to communicate with clients.

Thanks to the various contributors to this release!

Please v11.4.0

19 Feb 12:23
Compare
Choose a tag to compare

Please v11.4.0 is ready!

This release comes with the following new set of features:

  • Added --run flag to plz watch which invokes the targets using plz run instead of build / test (#272).
  • Replace hyphen with underscore in buildenv plzconfig sections (#274)
  • Added plz query rules which prints out the currently known set of rules definitions.

Also includes features from previous versions which haven't been announced here yet:

  • Support for Java 9 and JEP-220 features: java_module and java_runtime_image can be used to build a standalone Java image using modules.
    New config properties jlinktool and javahome have been added.
  • Add support for merging Akka's reference.conf files when building java_library and java_binary targets with akka dependencies
  • Add --env flag on plz run that applies config values to the environment (notably PATH)
  • python_binary and python_test rules can now import binary modules directly via an import hook that dynamically extracts them as needed. Hence zip_safe is not needed in many cases it was previously.

This is planned to be the last non-patch release in the 11.x series. v12.x is not too far away and will contain major changes & enhancements to the parsing engine.

Please v11.0.0

22 Dec 10:56
Compare
Choose a tag to compare

The next version of Please is ready, and since this time it contains a couple of slightly breaking features so it's a major version. Headline features include:

  • Now ships with a completely builtin parser engine so the .so's aren't necessary
    (although still included in the download for now) and there's no requirement to
    have cffi or any Python version installed to run.
  • Interactive debugging for tests; passing -d to plz test or plz cover
    causes the test to break into an interactive debugger on failure. Currently only
    works on Python (with pytest as the test runner), C and C++ tests.
  • Altered priority of config files; /etc/plzconfig is now the lowest priority and
    there is an additional ~/.please/plzconfig immediately after it.
  • Added --profile flag which selects a config profile, e.g. --profile dev will
    attempt to read .plzconfig.dev if it exists.
  • Added --version flag to plz update to force updating to a particular version,
    and --latest flag to always update to the latest.
  • parse.experimentaldir config property can now be repeated.

Plus a bunch of smaller bugfixes and whatnot.

Thanks to everyone who contributed, made suggestions & reviewed changes!

Please v10.3.0

06 Dec 13:47
Compare
Choose a tag to compare

Version 10.3.0 is done!

The headline feature in this release is being able to swap the Python test runner to be pytest instead of unittest (via the testrunner property under [python] in .plzconfig). Unittest tests have also been optimised a bit for faster rebuilding using some of the same mechanisms.

Other notable features include cgo_library rules accepting a pkg_config argument to determine appropriate compiler flags for dependencies, and the ability to opt individual go_library rules out of coverage instrumentation.

Thanks to contributors, and to the bugs & suggestions for these features.

Please v10.1.0

25 Nov 13:57
Compare
Choose a tag to compare

This is Please v10.1.0

  • Dynamic support for Python wheel naming schemes, either via name_scheme on the
    rule or by setting it in the config.
  • diff_graphs added to plz tool.

Please v10.0.0

25 Nov 13:57
Compare
Choose a tag to compare

This is Please v10.0.0

  • please_pex rewritten to be more efficient. This is a breaking change for anyone
    who assumed they could import pkg_resources or pex as a global which will no longer
    be available (although these are easy to add using pip_library or python_wheel rules
    if still needed).
  • cgo_library takes a subdir argument that is needed if sources are in a subdirectory
    from the BUILD file (this isn't breaking since it never worked without).
  • Support for assembly (using go tool asm) in go_library and go_binary rules.
  • Removed a number of deprecated config properties.
  • Removed a number of deprecated arguments to builtin build rules (most have been
    deprecated and often nonfunctional for a long time now).

Please v9.5.0

25 Nov 13:55
Compare
Choose a tag to compare

This is Please v9.5.0

  • New config property, parse.preloadbuilddefs which specifies files to be loaded
    into the global rule context.
  • Moved a bunch of config properties (buildfilename, blacklistdirs, lang, parserengine,
    nonce, experimentaldir and linttool) out of the [please] section since that had
    turned into a bit of a grab-bag of unstructured properties.
    Old ones are still honoured for now but will be removed in v10.0.
  • please_sandbox now mounts a tmpfs on /tmp
  • plz query print prints a comment & build label on stdout rather then the bare label
    on stderr.