# Release 019 Announcement
## Summary
Pantavisor 019 brings an extensive collection of exciting new features, as well as a robust set security and stability improvements.
### New Features
* Introducing [container groups](https://docs.pantahub.com/containers/#groups) to define common properties such as [status goal](https://docs.pantahub.com/containers/#status-goal) or [restart policy](https://docs.pantahub.com/containers/#restart-policy), to achieve deterministic startup order and meet middleware availability needs.
* New [status goal](https://docs.pantahub.com/containers/#status-goal) feature which can be used to determine the boot up order of containers. Status goal has a configurable timeout that will make [updates](https://docs.pantahub.com/updates/) either [fail](https://docs.pantahub.com/updates/#error) or unblock other groups if the [revision](https://docs.pantahub.com/revisions/) was already [validated](https://docs.pantahub.com/updates/#done) when the goals are not met.
* New [restart policy](https://docs.pantahub.com/containers/#restart-policy) to specify how [transitions](https://docs.pantahub.com/updates/#inprogress) to new [updates](https://docs.pantahub.com/updates/) will be performed. More fine grained control of reboot vs. warm updates to reduce system downtime.
* Pantavisor [configuration keys](https://docs.pantahub.com/pantavisor-configuration/) can be now bundled as [runtime policies](https://docs.pantahub.com/pantavisor-configuration/#using-policies) and switched dynamically without having to re-[compile](https://docs.pantahub.com/environment-setup/) the BSP.
* Declarative [managed drivers](https://docs.pantahub.com/bsp/#managed-drivers) provider/consumer protocol that allows BSPs to provide a high-level concept of functionality such as "wifi", and have it automatically map to a set of named kernel modules. [Containers](https://docs.pantahub.com/containers/#drivers) can declare a dependency on such high-level names being available, and have them either auto-load upon starting or [on-demand](https://docs.pantahub.com/pantavisor-commands/#drivers).
### Security
* [Secure Boot](https://docs.pantahub.com/storage/#integrity) supports now the ES256, ES384 and ES512 algorithms.
* Both [device](https://docs.pantahub.com/storage/#device-metadata) and [user](https://docs.pantahub.com/storage/#user-metadata) metadata can now be [stored](https://docs.pantahub.com/storage/#volumes) on [encrypted disks](https://docs.pantahub.com/storage/#disks).
### Stability
* Multiple bugs have been fixed for an improved and smoother experience both in [local](https://docs.pantahub.com/local-control/) and [remote](https://docs.pantahub.com/remote-control/) mode.
### Instrumentation and Tools
* [PVControl](https://docs.pantahub.com/pantavisor-commands/) has now more capabilities such as [listing all running containers](https://docs.pantahub.com/pantavisor-commands/#containers), [send signals](https://docs.pantahub.com/pantavisor-commands/#signal), [load drivers on run-time](https://docs.pantahub.com/pantavisor-commands/#drivers) and [put objects in a secure way](https://docs.pantahub.com/pantavisor-commands/#objects).
* Pantavisor can centralize all your [logs](https://docs.pantahub.com/storage/#logs). Log server is now more powerful and allows to configure logs output to multiple different sinks: filetree, single-file stdout and/or nullsink.
* Pantavisor 019 comes alongside the [pvr 036](https://gitlab.com/pantacor/pvr/-/tags/036) tool. This version of pvr brings diff-[updates](https://docs.pantahub.com/updates/) and shared [root file system](https://docs.pantahub.com/containers/#storage) baselines, amongst other things.
* Introducing App Engine, meant to prototype Pantavisor without having to configure and compile a full BSP for your specific board, allowing Pantavisor to run as a [daemon](https://docs.pantahub.com/init-mode/#app-engine-mode).
## Feature Walkthrough
### Groups
Containers can now be [grouped](https://docs.pantahub.com/containers/#groups) to support complex startup dependencies as well as status reporting, which together with [status goal](#status-goal) and [restart policy](#restart-policy) provide for a rich configuration and fine-tuning experience when designing your system.
By default, groups will honor our legacy run-level (date, root, platform and app) boot up order and behavior -- however any configuration of your choice can be set up. New containers will be automatically set to the last existing group unless explicitly configured.
### Status Goals
Both containers and [groups of containers](#groups) can be now set to a specific [status goal](https://docs.pantahub.com/containers/#status-goal).
Status goal is just the [status](https://docs.pantahub.com/containers/#status) that Pantavisor will consider as the final stage of a container. These are the currently supported:
* MOUNTED: the root file system has been mounted but the container will not be started
* STARTED: the container has been started
* READY: the container has been started and has sent a signal using [pvcontrol](#pvcontrol)
Status goal has a configurable timeout that will make [updates](https://docs.pantahub.com/updates/) [fail](https://docs.pantahub.com/updates/#error) or unblock other groups if the [revision](https://docs.pantahub.com/revisions/) was already [validated](https://docs.pantahub.com/updates/#done).
### Restart Policy
As well as with [status goal](#status-goal), containers and [groups](#groups) [restart policy](https://docs.pantahub.com/containers/#restart-policy) can be configured to trigger a board [reboot](https://docs.pantahub.com/updates/#reboot-transition) or [not](https://docs.pantahub.com/updates/#non-reboot-transition) depending on coming [updates](https://docs.pantahub.com/updates/) affecting those containers.
### PVControl
New [endpoints](https://docs.pantahub.com/pantavisor-commands/) have been added to Pantavisor. You can try them by [inspecting](https://docs.pantahub.com/inspect-device/) your [pvr-sdk platform](https://docs.pantahub.com/initial-devices/#about-pantavisor-initial-devices) included in our [initial devices](https://docs.pantahub.com/initial-devices/).
For example, you can list all running containers with their status:
```
pvcontrol ls
```
Also, send a [READY](#status-goal) signal to Pantavisor:
```
pvcontrol signal READY
```
Finally, object PUT now validates checksum before saving a new object:
```
pvcontrol objects put
```
### Drivers
Define a list of BSP [drivers](https://docs.pantahub.com/bsp/#managed-drivers) in a declarative manner. These drivers can then be used by [containers](https://docs.pantahub.com/containers/#drivers) both during and after [updates](https://docs.pantahub.com/updates) with [pvcontrol](#pvcontrol).
### Policies
With [policies](https://docs.pantahub.com/pantavisor-configuration/#using-policies), Pantavisor [configuration keys](https://docs.pantahub.com/pantavisor-configuration/) can be bundled and switched without having to re-[compile](https://docs.pantahub.com/environment-setup/) the BSP.
The typical use case for this would be to have a "production" and a "development" policies. The "development" policy could have [verbose logs](https://docs.pantahub.com/storage/#logs), [enabled debug tools](https://docs.pantahub.com/inspect-device/) and [secureboot sctrictness](https://docs.pantahub.com/storage/#state-signature) set to lenient, while the "production" one would disable the debug tools and set a [strict securboot validation](https://docs.pantahub.com/storage/#state-signature). This would allow to compile and use the same BSP both for testing and release.
### Diff-Updates
Pantavisor 019 comes alongside the [pvr 036](https://gitlab.com/pantacor/pvr/-/tags/036) tool. This version of pvr brings diff-[updates](https://docs.pantahub.com/updates/) and shared [root file system](https://docs.pantahub.com/containers/#storage) baselines.
While it took a while, the approach we deliver now is far simpler and easier to manage and navigate than what you would have to do with docker and feels more natural for the embedded world as it aims to have the least amount of layers to keep disk footprint and IO overhead minimal.
### Secureboot
[Secureboot](https://docs.pantahub.com/storage/#integrity) supports now the ES256, ES384 and ES512 algorithms for validating pantavisor json packages.
### Metadata
Both [device](https://docs.pantahub.com/storage/#device-metadata) and [user](https://docs.pantahub.com/storage/#user-metadata) metadata can now be [stored](https://docs.pantahub.com/storage/#volumes) on [crypt disks](https://docs.pantahub.com/storage/#disks).
### Log Server
Pantavisor can centralize your container [logs](https://docs.pantahub.com/storage/#logs). Log server is now more powerful and allow to output logs in different formats:
* filetree: our Pantavisor legacy format, with different files for each revision
* singlefile: all platform logs are presented in a single file in JSON format
* stdout: standard output
* nullsink: ignore all coming logs
### App Engine
App Engine allows to operate and orchestrate containers on devices using Pantavisor on top of your existing embedded linux product by running Pantavisor as a [daemon](https://docs.pantahub.com/init-mode/#app-engine-mode).
### Bug Fixing
Multiple bugs have been fixed for an improved and smoother experience both in [local](https://docs.pantahub.com/local-control/) and [remote](https://docs.pantahub.com/remote-control/) mode.