Releases: thought-machine/please
Please v13.0.3
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
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
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
andnew_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
togodirwalk
(#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
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) asgo build
would. This can be suppressed by settingfilter_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
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
andjava_runtime_image
can be used to build a standalone Java image using modules.
New config propertiesjlinktool
andjavahome
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
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
toplz test
orplz 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
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
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
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
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.