The HDK helps in writing Holochain applications.
Holochain DNAs need to be written in WebAssembly, or a language that compiles to Wasm,
such as Rust. The HDK handles some of the low-level details of Wasm execution like
memory allocation, (de)serializing data, and shuffling data and functions into and out of Wasm
memory via some helper functions and Holochain-specific macros.

The HDK lets the developer focus on application logic and, as much as possible, forget about the
underlying low-level implementation. It would be possible to write DNA source code without an
HDK, but it would be extremely tedious!

Throughout the development process it will be helpful to click around through this reference, but
the most useful places to start reading are the define_zome! macro, and the list of exposed functions
that Holochain offers: the API.

Holds the internal/private zome API function init_globals
which initializes the Zome API Globals with the values it receives from the Ribosome.
It is automatically called at startup of each Zome function call.

This file contains the "secret" functions that get added to Zomes, by the HDK. These functions match expectations that Holochain has... every Zome technically needs these functions,
but not every developer should have to write them. A notable function defined here is
__hdk_get_json_definition which allows Holochain to retrieve JSON defining the Zome.

The from macro is a helper for creating ValidatingEntryType definitions
for use within the entry macro.
It is a convenience wrapper around link! that has all the
same properties except for the direction which gets set to LinkDirection::From.

The to macro is a helper for creating ValidatingEntryType definitions
for use within the entry macro.
It is a convenience wrapper around link! that has all the
same properties except for the direction which gets set to LinkDirection::To.