holochain 0.0.122

Holochain, a framework for distributed applications
# Changelog

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## Unreleased

## 0.0.122

- Adds better batching to validation workflows for much faster validation. [\#1167]https://github.com/holochain/holochain/pull/1167.

## 0.0.121

- **BREAKING CHANGE** Removed `app_info` from HDK [1108]https://github.com/holochain/holochain/pull/1108
- Permissions on host functions now return an error instead of panicking [1141]https://github.com/holochain/holochain/pull/1141
- Add `--build-info` CLI flag for displaying various information in JSON format. [\#1163]https://github.com/holochain/holochain/pull/1163

## 0.0.120

## 0.0.119

## 0.0.118

- **BREAKING CHANGE** - Gossip now exchanges local peer info with `initiate` and `accept` request types. [\#1114]https://github.com/holochain/holochain/pull/1114.

## 0.0.117

## 0.0.116

## 0.0.115

- Fix [issue]https://github.com/holochain/holochain/issues/1100 where private dht ops were being leaked through the incoming ops sender. [1104]https://github.com/holochain/holochain/pull/1104.
- Kitsune now attempts to rebind the network interface in the event of endpoint shutdown. Note, it’s still recommended to bind to `0.0.0.0` as the OS provides additional resiliency for interfaces coming and going. [\#1083]https://github.com/holochain/holochain/pull/1083
- **BREAKING CHANGE** current chain head including recent writes available in agent info [\#1079]https://github.com/holochain/holochain/pull/1079
- **BREAKING (If using new lair)** If you are using the new (non-legacy) `lair_server` keystore, you will need to rebuild your keystore, we now pre-hash the passphrase used to access it to mitigate some information leakage. [\#1094]https://github.com/holochain/holochain/pull/1094
- Better lair signature fallback child process management. The child process will now be properly restarted if it exits. (Note this can take a few millis on Windows, and may result in some signature errors.) [\#1094]https://github.com/holochain/holochain/pull/1094

## 0.0.114

- `remote_signal` has always been a fire-and-forget operation. Now it also uses the more efficient fire-and-forget “notify” low-level networking plumbing. [\#1075]https://github.com/holochain/holochain/pull/1075

- **BREAKING CHANGE** `entry_defs` added to `zome_info` and referenced by macros [PR1055]https://github.com/holochain/holochain/pull/1055

- **BREAKING CHANGE**: The notion of “cell nicknames” (“nicks”) and “app slots” has been unified into the notion of “app roles”. This introduces several breaking changes. In general, you will need to rebuild any app bundles you are using, and potentially update some usages of the admin interface. In particular:
  
  - The `slots` field in App manifests is now called `roles`
  - The `InstallApp` admin method now takes a `role_id` field instead of a `nick` field
  - In the return value for any admin method which lists installed apps, e.g. `ListEnabledApps`, any reference to `"slots"` is now named `"roles"`
  - See [\#1045]https://github.com/holochain/holochain/pull/1045

- Adds test utils for creating simulated networks. [\#1037]https://github.com/holochain/holochain/pull/1037.

- Conductor can take a mocked network for testing simulated networks. [\#1036]https://github.com/holochain/holochain/pull/1036

- Added `DumpFullState` to the admin interface, as a more complete form of `DumpState` which returns full `Vec<DhtOp>` instead of just their count, enabling more introspection of the state of the cell [\#1065]https://github.com/holochain/holochain/pull/1065.

- **BREAKING CHANGE** Added function name to call info in HDK. [\#1078]https://github.com/holochain/holochain/pull/1078.

## 0.0.113

- Post commit is now infallible and expects no return value [PR1049]https://github.com/holochain/holochain/pull/1049
- Always depend on `itertools` to make `cargo build --no-default-features` work [\#1060]https://github.com/holochain/holochain/pull/1060
- `call_info` includes provenance and cap grant information [PR1063]https://github.com/holochain/holochain/pull/1063
- Always depend on `itertools` to make `cargo build --no-default-features` work [\#1060]https://github.com/holochain/holochain/pull/1060

## 0.0.112

- Always depend on `itertools` to make `cargo build --no-default-features` work [\#1060]https://github.com/holochain/holochain/pull/1060

## 0.0.111

- `call_info` is now implemented [1047]https://github.com/holochain/holochain/pull/1047

- `dna_info` now returns `DnaInfo` correctly [\#1044]https://github.com/holochain/holochain/pull/1044
  
  - `ZomeInfo` no longer includes what is now on `DnaInfo`
  - `ZomeInfo` renames `zome_name` and `zome_id` to `name` and `id`
  - `DnaInfo` includes `name`, `hash`, `properties`

- `post_commit` hook is implemented now [PR 1000]https://github.com/holochain/holochain/pull/1000

- Bump legacy lair version to 0.0.8 fixing a crash when error message was too long [\#1046]https://github.com/holochain/holochain/pull/1046

- Options to use new lair keystore [\#1040]https://github.com/holochain/holochain/pull/1040

<!-- end list -->

``` yaml
keystore:
  type: danger_test_keystore
```

or

``` yaml
keystore:
  type: lair_server
  connection_url: "unix:///my/path/socket?k=Foo"
```

## 0.0.110

- Publish now runs on a loop if there are ops still needing receipts. [\#1024]https://github.com/holochain/holochain/pull/1024
- Batch peer store write so we use less transactions. [\#1007]https://github.com/holochain/holochain/pull/1007/.
- Preparation for new lair api [\#1017]https://github.com/holochain/holochain/pull/1017
  - there should be no functional changes with this update.
  - adds new lair as an additional dependency and begins preparation for a config-time switch allowing use of new api lair keystore.
- Add method `SweetDnaFile::from_bundle_with_overrides` [\#1030]https://github.com/holochain/holochain/pull/1030
- Some `SweetConductor::setup_app_*` methods now take anything iterable, instead of array slices, for specifying lists of agents and DNAs [\#1030]https://github.com/holochain/holochain/pull/1030
- BREAKING conductor config changes [\#1031]https://github.com/holochain/holochain/pull/1031

Where previously, you might have had:

``` yaml
use_dangerous_test_keystore: false
keystore_path: /my/path
passphrase_service:
  type: danger_insecure_from_config
  passphrase: "test-passphrase"
```

now you will use:

``` yaml
keystore:
  type: lair_server_legacy_deprecated
  keystore_path: /my/path
  danger_passphrase_insecure_from_config: "test-passphrase"
```

or:

``` yaml
keystore:
  type: danger_test_keystore_legacy_deprecated
```

## 0.0.109

- Make validation run concurrently up to 50 DhtOps. This allows us to make progress on other ops when waiting for the network. [\#1005]https://github.com/holochain/holochain/pull/1005
- FIX: Prevent the conductor from trying to join cells to the network that are already in the process of joining. [\#1006]https://github.com/holochain/holochain/pull/1006

## 0.0.108

- Refactor conductor to use parking lot rw lock instead of tokio rw lock. (Faster and prevents deadlocks.). [\#979]https://github.com/holochain/holochain/pull/979.

### Changed

- The scheduler should work now

## 0.0.107

## 0.0.106

### Changed

- All Holochain `Timestamp`s (including those in Headers) are now at the precision of microseconds rather than nanoseconds. This saves 4 bytes per timestamp in memory and on disk.
- Various database field names changed. **Databases created in prior versions will be incompatible.**
- HDK `sys_time` now returns a `holochain_zome_types::Timestamp` instead of a `core::time::Duration`.
- Exposes `UninstallApp` in the conductor admin API.

## 0.0.105

## 0.0.104

- Updates lair to 0.0.4 which pins rcgen to 0.8.11 to work around [https://github.com/est31/rcgen/issues/63]https://github.com/est31/rcgen/issues/63

## 0.0.103

### Fixed

- This release solves the issues with installing happ bundles or registering DNA via the admin API concurrently. [\#881]https://github.com/holochain/holochain/pull/881.

### Changed

- Header builder now uses chain top timestamp for new headers if in the future
- Timestamps in headers require strict inequality in sys validation

## 0.0.102

### Known Issues :exclamation:

- We’ve become aware of a bug that locks up the conductor when installing happ bundles or registering DNA via the admin API concurrently. Please perform these actions sequentially until we’ve resolved the bug.

### Fixed

- Concurrent zome calls could cause the `init()` zome callback to run multiple times concurrently, causing `HeadMoved` errors. This is fixed, so that `init()` can only ever run once.
  - If a zome call has been waiting for another zome call to finish running `init()` for longer than 30 seconds, it will timeout.

### Changed

- Apps now have a more complex status. Apps now can be either enabled/disabled as well as running/stopped, the combination of which is captured by three distinctly named states:
  - “Running” (enabled + running) -\> The app is running normally
  - “Paused” (enabled + stopped) -\> The app is currently stopped due to some minor problem in one of its cells such as failed network access, but will start running again as soon as it’s able. Some Cells may still be running normally.
  - “Disabled” (disabled + stopped) -\> The app is stopped and will remain so until explicitly enabled via `EnableApp` admin method. Apps can be disabled manually via `DisableApp`, or automatically due to an unrecoverable error in a Cell.
- Some admin methods are deprecated due to the app status changes:
  - `ActivateApp` is deprecated in favor of `EnableApp`
  - `DeactivateApp` is deprecated in favor of `DisableApp`
- Apps will be automatically Paused if not all of their cells are able to join the network during startup

### Added

- `InstallAppBundle` command added to admin conductor API. [\#665]https://github.com/holochain/holochain/pull/665
- `DnaSource` in conductor\_api `RegisterDna` call now can take a `DnaBundle` [\#665]https://github.com/holochain/holochain/pull/665
- New admin interface methods:
  - `EnableApp` (replaces `ActivateApp`)
  - `DisableApp` (replaces `DeactivateApp`)
  - `StartApp` (used to attempt to manually restart a Paused app)
- Using the 3 level PLRU instance cache from latest holochain wasmer `v0.0.72`

## 0.0.101

This version contains breaking changes to the conductor API as well as a major upgrade to the underlying Wasm runtime.

***:exclamation: Performance impact***

The version of wasmer that is used in this holochain release contains bugs in the scoping of wasmer modules vs. instances, such that it blocks the proper release of memory and slows down execution of concurrent Wasm instances. While we were able to at least mitigate these effects and are coordinating with wasmer to find a proper solution as soon as possible.

The severity of these issues increases with cell concurrency, i.e. using multiple cells with the same DNA. Application development with a single conductor and a few cells are expected to work well unless your machine has serious resource restrictions.

### Added

- `InstallAppBundle` command added to admin conductor API. [\#665]https://github.com/holochain/holochain/pull/665
- `DnaSource` in conductor\_api `RegisterDna` call now can take a `DnaBundle` [\#665]https://github.com/holochain/holochain/pull/665

### Removed

- BREAKING:  `InstallAppDnaPayload` in admin conductor API `InstallApp` command now only accepts a hash.  Both properties and path have been removed as per deprecation warning.  Use either `RegisterDna` or `InstallAppBundle` instead. [\#665]https://github.com/holochain/holochain/pull/665
- BREAKING: `DnaSource(Path)` in conductor\_api `RegisterDna` call now must point to `DnaBundle` as created by `hc dna pack` not a `DnaFile` created by `dna_util` [\#665]https://github.com/holochain/holochain/pull/665

### CHANGED

- Updated to a version of `holochain_wasmer` that includes a migration to wasmer v2+. [\#773]https://github.com/holochain/holochain/pull/773/files, [\#801]https://github.com/holochain/holochain/pull/80, [\#836]https://github.com/holochain/holochain/pull/836
- Introduced a simple instance cache to mitigate and potentially outweigh the effects of the aforementioned wasmer conditions [\#848]https://github.com/holochain/holochain/pull/848

## 0.0.100

This is the first version number for the version of Holochain with a refactored state model (you may see references to it as Holochain RSM).

## 0.0.52-alpha2

*Note: Versions 0.0.52-alpha2 and older are belong to previous iterations of the Holochain architecture and are not tracked here.*