ockam_core 0.64.0

Core types of the Ockam library.
Documentation
# Changelog
All notable changes to this project will be documented in this file.

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

## 0.64.0 - 2022-08-17

### Changed

- Use generic attributes in credential
- Move `CowStr` and `CowBytes` to `ockam_core`
- Move api structs to `ockam_core`
- Updated dependencies

## 0.63.0 - 2022-08-12

### Changed

- Use generic attributes in credential
- Updated dependencies

## 0.62.0 - 2022-08-04

### Changed

- Updated dependencies

## 0.57.0 - 2022-06-30

### Changed

- `Storage` -> `AuthenticatedTable`
- `AuthenticatedTable` -> `AuthenticatedStorage`

## 0.56.0 - 2022-06-14

### Changed

- Implement initial access control prototype
- Refinements to initial access control prototype

## 0.55.0 - 2022-06-06

### Added

- Add ockam_api_nodes
- Add simple `Vault` service

### Changed

- Switch `Vault` to `String` `KeyId` instead of integer `Secret`
- Implement new `Vault` serialization
- Move `TypeTag` to `ockam_core`
- Partially add cbor support to `ockam_core/vault`
- Updated dependencies

### Removed

- Remove `AsRef` from `PublicKey` to avoid confusion

## 0.54.0 - 2022-05-09

### Changed

- Rename github organization to build-trust
- Updated dependencies

## 0.53.0 - 2022-04-25

### Changed

- Updated dependencies

## 0.52.0 - 2022-04-19

### Changed

- Introduce error type
- Build error mapping for various crates
- Clean up ockam_core import paths
- Update broken tests
- Move allow and deny utils to ockam_core root
- Rename error2 to error
- Updated dependencies

### Fixed

- Update `compat::sync::Mutex` to return `Result` instead of `Option`
- Fix error module lints
- Errors: fix ockam_core
- Errors: fix ockam_vault
- Errors: fix ockam
- Fix various clippy and rustfmt lints

### Removed

- Remove ockam_node errors and add new util module
- Remove traits module from ockam_core
- Remove thiserror as it does not support no_std

## 0.51.0 - 2022-04-11

### Changed

- Get rid of common `RouterMessage` in favor of transport-specific structs (ble, ws)
- Make `ockam_core::Error` derive `Eq` and `PartialEq`
- Don't re-export `hex` or `hashbrown` from `ockam_core`
- Tune up some of the documentation
- Ensure more documentation ends up in the right place
- Implement miniature `ockam` command for demo
- Vault updates
- Updated dependencies

### Fixed

- Insert a temporary mechanism to improve error messages
- Fix clippy warnings

## 0.50.0 - 2022-03-28

### Added

- Add examples for all public functions in `ockam_core`
- Add tests for `ockam_core`

### Changed

- Edit `ockam_core` documentation for typos, clarity and consistency
- Move `traits` module into its own file
- Move `ockam_core::println_no_std` to `ockam_core::compat::println`
- Friendlify api for `ockam_core::access_control`
- Friendlify api for `ockam_core::routing::address`
- Friendlify api for `ockam_core::vault::key_id_vault`
- `TODO` return `Result<&Address>` from `ockam_core::Route.recipient()`
- Implement basic sender resend handler
- Various clippy fixes
- Updated dependencies

### Removed

- Remove unused type `ockam_core::ResultMessage`

## 0.47.0 - 2022-02-22

### Added

- Add `From<(u8, String>)` implementation for `Address`

## 0.46.0 - 2022-02-08

### Changed

- Update crate edition to 2021

## 0.43.0 - 2022-01-10

### Added

- Add no_main arg support to ockam::node macro

### Changed

- Improve formatting of `Cargo.toml`s  and add `rust-version` 1.56.0
- Use the tracing crate for logging on no_std

## 0.42.0 - 2021-12-13

### Added

- Add access control
- Add ockam_core/bls feature and small fixes

### Changed

- Update `LocalInfo` logic
- Initial ockam channel implementation
- Simplify channel creation handshake
- Move ockam_vault_core crate into ockam_core

## 0.41.0 - 2021-12-06

### Added

- Add `take_payload` to `Routed`

### Changed

- Merge macro crates

### Removed

- Remove symlinks to `DEVELOP.md` and `LICENSE`
- Remove need for separate macro crates

## v0.40.0 - 2021-11-22


### Added

- Add route prepend mechanism and test

### Changed

- Deny warnings in ci, not local development


## v0.39.0 - 2021-11-15
### Changed
- fix `no_std` breakage
- Dependencies updated

## v0.38.0 - 2021-11-08
### Added
- add proc macro to auto derive `AsyncTryClone` trait
### Changed
- replace `AsyncTryClone` trait impls with `#[derive(AsyncTryClone)]` wherever applicable
- replaced tokio::try_join with futures_util::try_join
- Dependencies updated

## v0.37.0 - 2021-11-01
### Changed
- Explicitly derive Message trait
- Dependencies updated

## v0.36.0 - 2021-10-25
### Added
- Add generic AsyncTryClone implementation for structs with Clone.
### Changed
- Make async-trait crate used through ockam_core.
- Replace instances of `&Vec<T>` with `&[T]`.
- Simplified feature usage.
- Move as many things as possible into a workspace.
- Dependencies updated

## v0.35.0 - 2021-10-18
### Added
- Added new 'no_main' feature to control ockam_node_attribute behavior on bare metal platforms
### Changed
- Only use cortex_m_semihosting on arm platforms
- Dependencies updated

## v0.34.0 - 2021-10-11
### Added
- Implement From<Iterator> and Into<Iterator> for AddressSet
- Implement FromStr for Address
### Changed
- Dependencies updated

## v0.33.0 - 2021-10-04
### Added
- Implement AsyncTryClone for VaultSync
### Changed
- Dependencies updated

## v0.32.0 - 2021-09-27
### Changed
- Add ockam_core::compat::task.
- Use forked version of crates core2 and serde_bare.
- Use main core2 repo.
- Ockam compiles under no_std + alloc.
- thread_rng state does not advance with repeated instantiations.
- Dependencies updated

## v0.31.0 - 2021-09-20
### Changed
- Dependencies updated

## v0.30.0 - 2021-09-14
### Changed
- Fixed incorrect link in README

## v0.29.0 - 2021-09-13
### Changed
- Dependencies updated.

## v0.28.0 - 2021-09-03
### Changed
- Dependencies updated.

## v0.27.0 - 2021-08-30
### Added
- Processor trait.
### Changed
- Dependencies updated.

## v0.26.0 - 2021-08-23
### Changed
- Replace std:: modules with core:: and alternate implementations
- Dependencies updated.

## v0.25.0 - 2021-08-16
### Changed
- Dependencies updated.

## v0.24.0 - 2021-08-09
### Changed
- Dependencies updated.

## v0.23.0 - 2021-08-03
### Changed
- Dependencies updated.

## v0.22.0 - 2021-07-29
### Changed
- Dependencies updated.
### Deleted
- Remove service builder from ockam_core.

## v0.21.0 - 2021-07-26
### Added
- Add support for multiple accept addresses for router.
### Changed
- Dependencies updated.

## v0.20.0 - 2021-07-19
### Changed
- Dependencies updated.

## v0.19.0 - 2021-07-12
### Added
- Stream Worker implementation and creation.
- Stream API example.
- Service builder for Ockam Transport implementations.

### Changed
- Dependencies updated.
- Bring Streams implementation up to date with the newly introduced LocalMessage type.
- Return an error instead of panicking when a protocol parser fails.
- Incoming messages now have access to stream routing information.

## v0.18.0 - 2021-07-06
### Changed
- Dependencies updated.

## v0.17.0 - 2021-06-30
### Added
- Identity trait for defining Profile behavior.
### Changed
- Entity and Profile implementation restructured.
- Fix clippy warnings.
- Dependencies updated.

## v0.16.0 - 2021-06-21
### Added
- Added LocalMessage for locally routed messages.
### Changed
- TransportMessage constructor has been extended to use recent routing changes.
- Dependencies updated.

## v0.15.0 - 2021-06-14
### Added
- `route!` macro to simplify construction of message routes.

## v0.14.0 - 2021-05-30
### Added
### Changed
- Dependency updates.
- Fix clippy issues.

## v0.13.0 - 2021-05-17
### Added
- Modular and configurable protocol parser.
- result_message type.
### Changed
- Dependencies updated.
- Worker shutdown is now async.

## v0.12.0 - 2021-05-10
### Added
### Changed
- Renamed `async_worker` to `worker`.
### Deleted

## v0.11.2 - 2021-05-03
### Changed
- Dependencies updated.

## v0.11.1 - 2021-04-26
### Changed
- Dependencies updated.

## v0.11.0 - 2021-04-19
### Changed
- Dependencies updated.
- Updated a routing error internal domain code.

## v0.10.0 - 2021-04-14

### Changed
- Improved debug printability of addresses.
- Improved TCP transport initialisation.

## v0.9.0 - 2021-04-13
### Changed
- Dependencies updated.
- Renamed Context address functions.
- Improved printability of messages and payloads.

## v0.8.0 - 2021-04-12
### Added
- `Any` message type added to ockam_core crate.
### Changed
- Dependencies updated.
- `Routed` message wrapper function APIs renamed.
- `Passthrough` type renamed to `Any`.
- `msg_addr` moved from `Context` to `Routed`.
- `Context` address renamed to `primary_address`.
- Transport message fields renamed.


## v0.7.0 - 2021-04-05
### Added
- Expose onward route information to user workers.
- Random address generation.

### Changed
- Switch payload encoding from bincode to bare.
- Split forwarding examples into two binaries.
- Dependencies updated.
- Rename route fields in transport message.

### Removed
- RemoteMailbox has been moved to the `ockam` crate.


## v0.6.0 - 2021-03-22
### Added
- Routable message abstraction.
- Builder for Routable messags.
- Route metadata for messages.
- Generic transport message.

### Changed

- Dependencies updated.
- Core dependencies, such as hashbrown and hex have been re-exported from this crate.

## v0.5.0 - 2021-03-04
### Added

- Support multiple addresses per worker.

## v0.4.0 - 2021-03-03
### Added

- Auto-implementation of the `Message` trait for certain types.

### Changed

- The `Worker` trait and its methods are now async.
- Dependencies updated.

## v0.3.0 - 2021-02-16
### Added

- Explicit `alloc`, `no_std`, and `std` features.
- Generalized `Address` implementation.
- Global crate lib facade wrapper around `std` and `core` re-exports, for cross-feature compatibility.
- Message trait base implementation.

### Changed

- Dependencies updated.
- Improved documentation.



## v0.2.0 - 2021-02-04
### Added

-  Runs Worker `initialize` function when the Worker is started.
-  Uses `From` trait in place of `Into` in Node error
-  Create Worker example

### Removed
-  Worker Builder

### Changed

-  Moved Worker and Address types to this crate.
-  Renamed executor commands to messages

## v0.1.0 - 2021-01-30
### Added

- `Error` - an error type that can be returned is both `std` and `no_std` modes.
- `Result` - a result type that can be returned is both `std` and `no_std` modes.