# AMP Release 6.4.0

* [Introduction](#introduction)
* [Major New Features](#major-new-features)
* [Other Enhancements](#other-enhancements)
* [Bug And Vulnerability Fixes](#bug-and-vulnerability-fixes)
* [Deprecation Announcements](#deprecation-announcements)
* [Known Issues](#known-issues)
* [Backwards Compatibility](#backwards-compatibility)
* [Installation and Upgrade Instructions](#installation-and-upgrade-instructions)

## Introduction

Thank you to our community who have contributed a lot of improvements and feedback! Thanks also go to Apache Brooklyn's
commercial users who have funded this development and made some major contributions.

For more information, please visit https://cloudsoft.io/amp, https://docs.cloudsoft.io and https://brooklyn.apache.org

This is a major upgrade from AMP version 6.3.0 and includes a number of extra improvements on the top of version 6.3.0.

## Major New Features

* New `update-children` workflow step type
  * Simplify the synchronization of entities in AMP with elements in a list
  * Example showing the use of this with output from an `aws` CLI, to create, update, and delete AMP entities corresponding to resources in AWS

* Other workflow improvements, including:
  * Sharing variables with sub-workflows via `reducing` on `workflow` and on a new `foreach` step
  * Ternary operator supported in expressions, e.g. `let foo = <expression> ? <value-if-true> : <value-if-false>`
  * List index specifiers supported when setting, e.g. `let mylist[1] = 4`
  * Replace Transforms such as the following:
  ```
  - transform x = "hello world" | replace regex l.* k
  - transform y = "hello world" | replace glob l*w k
  - transform z = "hello world" | replace literal 'o w' k
  ```
  * Mathematical operations apply to time/date and duration, and strings can be coerced to numbers
  * Ability to test if an effector is defined, eg `${entity.effector.start}` for if there is a `start` effector on `entity`
  * Tidy to forgive a rogue colon and to allow a list of steps to be interpreted as a workflow

## Other Enhancements

* The version of Go used for the Apache Brooklyn CLI has been updated to 1.20.2
* Catalog metadata now supports an iconUrl field, allowing icons to be provided for bundles

## Bug and Vulnerability Fixes

* [Issue with CLI sslcheck flag](https://github.com/apache/brooklyn-client/pull/97)
  There was a global flag and a command flag and both are not supported so now there's only a command flag

* [Mitigate CVE-2023-1370](https://github.com/apache/brooklyn-server/pull/1384)
  see: https://security.snyk.io/vuln/SNYK-JAVA-NETMINIDEV-3369748

* [Improved filter layout](https://github.com/apache/brooklyn-ui/pull/373)

* UI wrapping and field rendering fixes

* [Fix Terraform state change treatment as drift](https://github.com/cloudsoft/brooklyn-terraform/pull/68) and 
  [service.problems computation in some cases](https://github.com/cloudsoft/brooklyn-terraform/pull/67)


## Known Issues

* For new OPENSSH PRIVATE KEY format keys, passphrases are not supported due to limitations of the java cryptography libraries.

## Backwards Compatibility

* For backwards compatibility with 3.x and 4.x, please see the intermediate release notes.

## Installation and Upgrade Instructions

To install see https://docs.cloudsoft.io/operations/production-installation.html

To upgrade existing installations see https://docs.cloudsoft.io/operations/upgrades/

