- Update the error message when When `pulumi` commands fail to detect your project to mention that `pulumi new` can be used to create a new project (fixes [pulumi/pulumi2234](https://github.com/pulumi/pulumi/issues/2234))
- Added a `--stack` argument (short form `-s`) to `pulumi stack`, `pulumi stack init`, `pulumi state delete` and `pulumi state unprotect` to allow operating on a different stack than the currently selected stack. This brings these commands in line with the other commands that operate on stacks and already provided a `--stack` option (fixes [pulumi/pulumi1648](https://github.com/pulumi/pulumi/issues/1648))
- Fix an issue that caused panics due to shutting the Jaeger tracing infrastructure down before all traces had finished ([pulumi/pulumi1850](https://github.com/pulumi/pulumi/issues/1850))
- Configuration and stack commands now take a `--config-file` options. This option allows the user to override the file used to fetch and store config information for a stack during the execution of a command.
- Fix an issue where ANSI escape codes would appear in messages printed from the CLI when running on Windows.
- Fix an error about a bad icotl when trying to read sensitive input from the console and standard in was not connected to a terminal.
- The dynamic provider would fail to launch if your `node_modules` folder was non in the default location or had a non standard layout. This has been fixed so we correctly find your `node_modules` folder in the same way node does. (fixes [pulumi/pulumi2261](https://github.com/pulumi/pulumi/issues/2261))
- When running a Python program, pulumi will now run `python3` instead of `python`, since `python` often points at Python 2.7 binary, and Pulumi requires Python 3.6 or later. The environment variable `PULUMI_PYTHON_CMD` can be used to provide a different binary to run.
- Allow `Output`s in the dependsOn property of `ResourceOptions` (fixes [pulumi/pulumi991](https://github.com/pulumi/pulumi/issues/991))
- Add a new `StackReference` type to the node SDK which allows referencing an output of another stack (fixes [pulumi/pulumi109](https://github.com/pulumi/pulumi/issues/109))
- Fix an issue where `pulumi` would not respect common `NO_PROXY` settings (fixes [pulumi/pulumi2134](https://github.com/pulumi/pulumi/issues/2134))
- The CLI wil now correctly report any output from a Python program which writes to `sys.stderr` (fixes [pulumi/pulumi1542](https://github.com/pulumi/pulumi/issues/1542))
- Don't install packages by default for Python projects when creating a new project from a template using `pulumi new`. Previously, `pulumi` would install these packages using `pip install` and they would be installed globally when `pulumi` was run outside a virtualenv.
- Fix an issue where `pulumi` could panic during a peview when using a first class provider which was constructed using an output property of another resource (fixes [pulumi/pulumi2223](https://github.com/pulumi/pulumi/issues/2223))
- Fix an issue where `pulumi` would fail to load resource plugins for newer dev builds.
- Fix an issue where running two copies of `pulumi plugin install` in parallel for the same plugin version could cause one to fail with an error about renaming a directory.
- Fix an issue where if the directory containing the `pulumi` executable was not on the `$PATH` we would fail to load language plugins. We now will also search next to the current running copy of Pulumi (fixes [pulumi/pulumi1956](https://github.com/pulumi/pulumi/issues/1956))
- Fix an issue where passing a key of the form `foo:config:bar:baz` to `pulumi config set` would succeed but cause errors later when trying to interact with the stack. Setting this value is now blocked eagerly (fixes [pulumi/pulumi2171](https://github.com/pulumi/pulumi/issues/2171))
- Fix an issue where `pulumi plugin install` would fail on Windows with an access deined message.
- If you're using Pulumi with Python, this release removes Python 2.7 support in favor of Python 3.6 and greater. In addition, some members have been renamed. For example the `stack_output` function has been renamed to `export`. All major features of Pulumi work with this release, including parallelism!
- Download plugins to a temporary folder during `pulumi plugin install` to ensure if the operation is canceled, the have downloaded plugin is not used.
- If an update is in progress when `pulumi stack ls` is run, don't show its last update time as "a long time ago".
- Add `--preserve-config` to `pulumi stack rm` which causes Pulumi to keep the `Pulumi.<stack-name>.yaml` when removing a stack.
- Support passing template names to `pulumi up` the same as `pulumi new` does.
- When `-g` or `--generate-only` is passed to `pulumi new`, don't show a confusing message that says it will update a stack.
- Fix an issue where an output property of a resource would change its type during an update in some cases.
- Provide richer detail on the properties during a multi-stage replace.
- Fix `pulumi logs` so it can collect log messages from Lambdas on AWS.
- Pulumi now reports metadata during CI runs on CircleCI, for later display on app.pulumi.com.
- Fix an assert that could fire if a checkpoint had multiple resources with the same URN (which could happen in cases where a delete operation was pending on an old copy of a resource).
- When `$TERM` is set to `dumb`, Pulumi should no longer try to use interactive reading from the terminal, which would fail.
- When displaying elapsed time for an update, round to the nearest second.
- Add the `--json` flag to the `pulumi logs` command.
- Add an `iterable` module to `pulumi/pulumi` with two helpful combinators `toObject` and `groupBy` to help combine multiple `Output<T>`'s into a single object.
- Pulumi no longer prompts you for confirmation when `--skip-preview` is passed to `pulumi update`. Instead, it just preforms the update as requested.
- Add the `--json` flag to the `pulumi stack ls` command.
- The `--color=always` flag should now be respected in all cases.
- Pulumi now reports metadata about GitLab repositories when doing an update, so they can be shown on app.pulumi.com.
- Pulumi now uses compression when uploading your checkpoint file to the Pulumi service, which should speed up updates where your stack has many resources.
- "First Class" providers used to be shown as changing during previews. This is no longer the case.
- Add some experimental abstractions for Services and Tasks in the `experimental` module.
- Fix an issue where passing a cluster to another component would fail in some cases.