Skip to content
This repository has been archived by the owner on Feb 3, 2023. It is now read-only.

WIP: 2020 01 19 wasmer #2079

Open
wants to merge 70 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
7cbb531
wasmer wip
thedavidmeister Jan 19, 2020
18549e3
wasmer compiles
thedavidmeister Jan 20, 2020
09aa1d2
wasmer wip
thedavidmeister Jan 21, 2020
2ef825e
remove wasmi
thedavidmeister Jan 22, 2020
8d58db3
remove wasmi
thedavidmeister Jan 22, 2020
9c83f08
use wasmer branch for serialization
thedavidmeister Jan 23, 2020
428c9d2
fix clippy
thedavidmeister Jan 23, 2020
2b4b18a
no wasmer dep in core types
thedavidmeister Jan 24, 2020
24b5a1b
wip on wasmer memory
thedavidmeister Jan 24, 2020
84d975f
wip on importing fns
thedavidmeister Jan 24, 2020
687f2f5
lint
thedavidmeister Jan 24, 2020
60e24c7
import debug
thedavidmeister Jan 26, 2020
3769b81
wip on wasm handler
thedavidmeister Jan 27, 2020
fc0f1d8
wip on simply memory
thedavidmeister Jan 29, 2020
f29585c
memory wip
thedavidmeister Feb 10, 2020
3813aba
wip
thedavidmeister Feb 10, 2020
3667215
remove memory/ribosome.rs
thedavidmeister Feb 11, 2020
3010931
wip
thedavidmeister Feb 11, 2020
bd743ad
Merge branch 'develop' of github.com:holochain/holochain-rust into 20…
thedavidmeister Feb 11, 2020
573337a
Merge branch 'develop' of github.com:holochain/holochain-rust into 20…
thedavidmeister Feb 12, 2020
f78612a
wip
thedavidmeister Feb 13, 2020
b50ce6b
Merge branch 'develop' of github.com:holochain/holochain-rust into 20…
thedavidmeister Feb 13, 2020
fa6cce6
wip
thedavidmeister Feb 13, 2020
792a70b
wip
thedavidmeister Feb 13, 2020
d8f8926
wip on wasm_engine
thedavidmeister Feb 14, 2020
2efa10e
wip on hdk macro updates
thedavidmeister Feb 14, 2020
4b82ed8
wip on fixing hdk
thedavidmeister Feb 14, 2020
1af1d74
wip on wasmer use
thedavidmeister Feb 15, 2020
0faf991
wasm test port
thedavidmeister Feb 20, 2020
69ecfc2
compiling invoke fns
thedavidmeister Feb 20, 2020
fde1465
wip on validation logic for wasmer
thedavidmeister Feb 20, 2020
00099f5
wip on separate wasm_engine
thedavidmeister Feb 20, 2020
f7523f7
wip on removing invoke_* abstraction
thedavidmeister Feb 21, 2020
81deb41
WIP on compiler chasing
thedavidmeister Feb 23, 2020
09352d4
wip on compiler chasing
thedavidmeister Feb 23, 2020
68c0700
wip on compiler
thedavidmeister Feb 24, 2020
3a594f4
wip on compiler
thedavidmeister Feb 24, 2020
b53466d
wasm error
thedavidmeister Feb 24, 2020
89cae94
chasing compiler
thedavidmeister Feb 24, 2020
b59b67b
compiler wip
thedavidmeister Feb 24, 2020
a53a452
wip on validation result
thedavidmeister Feb 24, 2020
41678e6
repro compiler issue
thedavidmeister Feb 24, 2020
2b22729
wip on wasmer
thedavidmeister Feb 25, 2020
7649bd4
wip on getting compiler happy
thedavidmeister Feb 27, 2020
04406cb
wip on compiler chasing
thedavidmeister Feb 28, 2020
3fc9b9e
conductor_lib and core compiling
thedavidmeister Feb 28, 2020
28b069f
core compiling with a couple of workflows
thedavidmeister Mar 1, 2020
ba99547
compiling hc_commit_entry to runtime
thedavidmeister Mar 1, 2020
519bd1a
compile crud invokes
thedavidmeister Mar 1, 2020
af317c4
compiling hc_init_global
thedavidmeister Mar 1, 2020
f5f7572
hc_get_links compiling in wasmer
thedavidmeister Mar 2, 2020
b115928
hc_meta compiles in wasmer
thedavidmeister Mar 2, 2020
b7aca90
emit_signal_workflow compiling with wasmer
thedavidmeister Mar 2, 2020
1835d98
keystore workflows compiling
thedavidmeister Mar 2, 2020
fade653
compiling send_workflow for wasmer
thedavidmeister Mar 2, 2020
1fc816d
entry_address_workflow compiling for wasmer
thedavidmeister Mar 2, 2020
2b3a4e7
query_workflow compiling for wasmer
thedavidmeister Mar 2, 2020
afecb7e
compile link_entries_workflow
thedavidmeister Mar 2, 2020
d8dd6ce
call_workflow for wasmer
thedavidmeister Mar 2, 2020
ad0b94c
WIP on hdk fixes
thedavidmeister Mar 2, 2020
7dacecb
hdk::debug works
thedavidmeister Mar 2, 2020
10dea9e
fix test_signing
thedavidmeister Mar 3, 2020
12c941e
working init globals
thedavidmeister Mar 3, 2020
9939cea
commit entry working
thedavidmeister Mar 7, 2020
8c721ed
commit entry working in hdk
thedavidmeister Mar 8, 2020
8a4a0ae
wasmer module cache
thedavidmeister Mar 8, 2020
b9bc57a
fs fallback for in memory cache for wasmer
thedavidmeister Mar 8, 2020
b2dcbf6
remove failing test
thedavidmeister Mar 8, 2020
6fb05b9
lint
thedavidmeister Mar 8, 2020
a000fd6
use wasmer cache from upstream crate
thedavidmeister Mar 9, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
553 changes: 119 additions & 434 deletions Cargo.lock

Large diffs are not rendered by default.

5 changes: 3 additions & 2 deletions Cargo.toml
@@ -1,7 +1,8 @@
[workspace]

members = [
"crates/cli",
# @TODO make cli work with wasmer
# "crates/cli",
"crates/metrics",
"crates/common",
"crates/holochain",
Expand All @@ -20,7 +21,7 @@ members = [
"crates/trycp_server",
"crates/sim2h",
"crates/sim2h_server",
"crates/wasm_utils"
"crates/wasm_types",
]
exclude = [
"test_utils",
Expand Down
6 changes: 3 additions & 3 deletions Makefile
Expand Up @@ -147,7 +147,7 @@ test_holochain: build_holochain
cd crates/hdk_v2 && RUSTFLAGS="-D warnings" $(CARGO) test --all --exclude hc
cd crates/holochain && RUSTFLAGS="-D warnings" $(CARGO) test --all --exclude hc
cd crates/net && RUSTFLAGS="-D warnings" $(CARGO) test --all --exclude hc
cd crates/wasm_utils && RUSTFLAGS="-D warnings" $(CARGO) test --all --exclude hc
cd crates/wasm_engine && RUSTFLAGS="-D warnings" $(CARGO) test --all --exclude hc

# Execute cargo tests matching %
# Eg. make test-stacked will run "cargo test stacked"
Expand Down Expand Up @@ -185,7 +185,7 @@ wasm_build: ensure_wasm_target
cd crates/conductor_lib/wasm-test && $(CARGO) build --release --target wasm32-unknown-unknown
cd crates/conductor_lib/test-bridge-caller && $(CARGO) build --release --target wasm32-unknown-unknown
cd crates/hdk/wasm-test && $(CARGO) build --release --target wasm32-unknown-unknown
cd crates/wasm_utils/wasm-test/integration-test && $(CARGO) build --release --target wasm32-unknown-unknown
cd crates/wasm_engine/wasm-test/integration-test && $(CARGO) build --release --target wasm32-unknown-unknown

.PHONY: install_wasm_bindgen_cli
install_wasm_bindgen_cli:
Expand All @@ -207,7 +207,7 @@ build_holochain: wasm_build
cd crates/hdk_v2 && $(CARGO) build
cd crates/holochain && $(CARGO) build
cd crates/net && $(CARGO) build
cd crates/wasm_utils && $(CARGO) build
cd crates/wasm_engine && $(CARGO) build

.PHONY: build_cli
build_cli: core_toolchain ensure_wasm_target
Expand Down
2 changes: 1 addition & 1 deletion app_spec/zomes/blog/code/src/lib.rs
@@ -1,7 +1,7 @@
use hdk::prelude::*;
use hdk::{
holochain_core_types::{signature::Provenance},
holochain_wasm_utils::api_serialization::{
holochain_wasm_types::{
get_entry::{EntryHistory, GetEntryResult},
get_links::GetLinksResult,
},
Expand Down
2 changes: 1 addition & 1 deletion app_spec/zomes/blog/code/src/post.rs
Expand Up @@ -122,7 +122,7 @@ mod tests {
validation::{EntryLifecycle, EntryValidationData, ValidationData, ValidationPackage},
},
holochain_json_api::json::JsonString,
holochain_wasm_utils::api_serialization::validation::LinkDirection,
holochain_wasm_types::validation::LinkDirection,
};
use std::convert::TryInto;

Expand Down
2 changes: 1 addition & 1 deletion app_spec/zomes/converse/code/src/lib.rs
Expand Up @@ -3,7 +3,7 @@ use hdk::{
holochain_core_types::{
signature::{Provenance, Signature},
},
holochain_wasm_utils::api_serialization::keystore::KeyType,
holochain_wasm_types::keystore::KeyType,
};

pub fn handle_sign_message(key_id: String, message: String) -> ZomeApiResult<Signature> {
Expand Down
2 changes: 1 addition & 1 deletion app_spec_proc_macro/zomes/blog/code/src/lib.rs
Expand Up @@ -2,7 +2,7 @@
use hdk::prelude::*;
use hdk::{
holochain_core_types::{signature::Provenance},
holochain_wasm_utils::api_serialization::{
holochain_wasm_types::{
get_entry::{EntryHistory, GetEntryResult},
get_links::GetLinksResult,
},
Expand Down
2 changes: 1 addition & 1 deletion app_spec_proc_macro/zomes/blog/code/src/post.rs
Expand Up @@ -121,7 +121,7 @@ mod tests {
validation::{EntryLifecycle, EntryValidationData, ValidationData, ValidationPackage},
},
holochain_json_api::json::JsonString,
holochain_wasm_utils::api_serialization::validation::LinkDirection,
holochain_wasm_types::validation::LinkDirection,
};
use std::convert::TryInto;

Expand Down
2 changes: 1 addition & 1 deletion app_spec_proc_macro/zomes/converse/code/src/lib.rs
Expand Up @@ -7,7 +7,7 @@ use hdk::{
holochain_core_types::{
signature::{Provenance, Signature},
},
holochain_wasm_utils::api_serialization::keystore::KeyType,
holochain_wasm_types::keystore::KeyType,
};

#[zome]
Expand Down
2 changes: 1 addition & 1 deletion crates/cli/Cargo.toml
Expand Up @@ -15,6 +15,7 @@ holochain_conductor_lib = { version = "=0.0.43-alpha3", path = "../conductor_lib
holochain_net = { version = "=0.0.43-alpha3", path = "../net" }
holochain_dpki = { version = "=0.0.43-alpha3", path = "../dpki" }
holochain_locksmith = { version = "=0.0.43-alpha3", path = "../locksmith" }
holochain_wasmer_host = "=0.0.18"
holochain_tracing = "=0.0.19"
holochain_tracing_macros = "=0.0.19"
newrelic="0.2"
Expand All @@ -26,7 +27,6 @@ lib3h_sodium = "=0.0.38"
holochain_json_api = "=0.0.23"
holochain_persistence_api = "=0.0.17"
holochain_persistence_file = "=0.0.17"
holochain_wasm_utils = { path = "../wasm_utils" }
crossbeam-channel = "=0.3.8"
structopt = "=0.3.3"
failure = "=0.1.5"
Expand Down
2 changes: 1 addition & 1 deletion crates/cli/src/cli/init.rs
Expand Up @@ -6,7 +6,7 @@ use crate::{
config_files::App as AppConfig,
error::DefaultResult,
util::DIST_DIR_NAME,
NEW_RELIC_LICENSE_KEY,

};
use colored::*;
use serde_json;
Expand Down
30 changes: 17 additions & 13 deletions crates/cli/src/cli/package.rs
@@ -1,8 +1,9 @@
use crate::{config_files::Build, error::DefaultResult, util, NEW_RELIC_LICENSE_KEY};
use base64;
use colored::*;
use holochain_core::wasm_engine::{run_dna, WasmCallData};
use holochain_core::wasm_engine::{WasmCallData};
use holochain_core_types::dna::Dna;
use holochain_core_types::error::HolochainError;
use holochain_json_api::json::JsonString;
use holochain_persistence_api::cas::content::AddressableContent;
use ignore::WalkBuilder;
Expand All @@ -15,7 +16,7 @@ use std::{
path::PathBuf,
sync::Arc,
};

use holochain_core_types::dna::zome::PartialZome;
use holochain_core_types::hdk_version::{HDKVersion, HDK_VERSION};

pub const BUILD_CONFIG_FILE_NAME: &str = ".hcbuild";
Expand Down Expand Up @@ -188,21 +189,24 @@ impl Packager {
let wasm = build.run(&dir_with_code)?;
let wasm_binary = Arc::new(base64::decode(&wasm)?);

let json_string = run_dna(
Some("{}".as_bytes().to_vec()),
WasmCallData::DirectCall(
"__hdk_get_json_definition".to_string(),
wasm_binary.clone(),
),
)?;
let call_data = WasmCallData::DirectCall(
"__hdk_get_json_definition".to_string(),
wasm_binary.clone(),
);

let json_from_wasm: Map<String, Value> =
serde_json::from_str(&String::from(json_string))?;
let partial_zome: PartialZome = match holochain_wasmer_host::guest::call(
&mut call_data.instance()?,
&call_data.fn_name(),
(),
) {
Ok(v) => v,
Err(e) => return Err(HolochainError::Wasm(e))?,
};

let mut sub_tree_content = self.bundle_recurse(&node)?;
for key in json_from_wasm.keys() {
for key in partial_zome.keys() {
sub_tree_content
.insert(key.clone(), json_from_wasm.get(key).unwrap().clone());
.insert(key.clone(), partial_zome.get(key).unwrap().clone());
}

// here insert json generated by the wasm, alongside the rest of the sub-tree
Expand Down
Expand Up @@ -10,7 +10,7 @@ serde_json = { version = "=1.0.47", features = ["preserve_order"] }
serde_derive = "=1.0.104"
hdk = <<VERSION>>
hdk_proc_macros = <<VERSION>>
holochain_wasm_utils = <<VERSION>>
holochain_wasm_engine = <<VERSION>>
holochain_json_derive = "=0.0.20"

[lib]
Expand Down
2 changes: 1 addition & 1 deletion crates/cli/src/cli/scaffold/rust/Cargo.template.toml
Expand Up @@ -9,7 +9,7 @@ serde = "=1.0.104"
serde_json = { version = "=1.0.47", features = ["preserve_order"] }
serde_derive = "=1.0.104"
hdk = <<VERSION>>
holochain_wasm_utils = <<VERSION>>
holochain_wasm_engine = <<VERSION>>
holochain_json_derive = "=0.0.20"

[lib]
Expand Down
2 changes: 1 addition & 1 deletion crates/conductor_api/Cargo.toml
Expand Up @@ -10,7 +10,7 @@ edition = "2018"

[dependencies]
holochain_core_types = { version = "=0.0.43-alpha3", path = "../core_types" }
holochain_wasm_utils = { version = "=0.0.43-alpha3", path = "../wasm_utils" }
holochain_wasm_types = { version = "=0.0.43-alpha3", path = "../wasm_types" }
holochain_locksmith = { version = "=0.0.43-alpha3", path = "../locksmith" }
holochain_tracing_macros = "=0.0.19"
holochain_common = { version = "=0.0.43-alpha3", path = "../common" }
Expand Down
2 changes: 1 addition & 1 deletion crates/conductor_api/src/conductor_api.rs
@@ -1,7 +1,7 @@
use crate::NEW_RELIC_LICENSE_KEY;
use holochain_core_types::error::HolochainError;
use holochain_locksmith::RwLock;
use holochain_wasm_utils::api_serialization::crypto::CryptoMethod;
use holochain_wasm_types::crypto::CryptoMethod;
use jsonrpc_core::IoHandler;
use jsonrpc_lite::JsonRpc;
use serde_json::json;
Expand Down
2 changes: 1 addition & 1 deletion crates/conductor_api/src/lib.rs
Expand Up @@ -3,6 +3,6 @@ extern crate holochain_common;

pub mod conductor_api;
pub use conductor_api::ConductorApi;
pub use holochain_wasm_utils::api_serialization::crypto::CryptoMethod;
pub use holochain_wasm_types::crypto::CryptoMethod;

new_relic_setup!("NEW_RELIC_LICENSE_KEY");
2 changes: 1 addition & 1 deletion crates/conductor_lib/Cargo.toml
Expand Up @@ -11,6 +11,7 @@ edition = "2018"
[dependencies]
holochain_core = { version = "=0.0.43-alpha3", path = "../core" }
holochain_core_types = { version = "=0.0.43-alpha3", path = "../core_types" }
holochain_wasm_types = { version = "=0.0.43-alpha3", path = "../wasm_types" }
holochain_locksmith = { version = "=0.0.43-alpha3", path = "../locksmith" }
holochain_json_derive = "=0.0.23"
holochain_json_api = "=0.0.23"
Expand Down Expand Up @@ -59,7 +60,6 @@ newrelic="0.2"
[dev-dependencies]
test_utils = { version = "=0.0.43-alpha3", path = "../../test_utils" }
tempfile = "=3.0.7"
holochain_wasm_utils = { version = "=0.0.43-alpha3", path = "../wasm_utils" }
structopt = "=0.2.15"
pretty_assertions = "=0.6.1"
ws = "=0.8.0"
Expand Down
5 changes: 3 additions & 2 deletions crates/conductor_lib/src/conductor/base.rs
Expand Up @@ -10,7 +10,7 @@ use crate::{
key_loaders::test_keystore,
keystore::{Keystore, PRIMARY_KEYBUNDLE_ID},
port_utils::{try_with_port, INTERFACE_CONNECT_ATTEMPTS_MAX},
Holochain, NEW_RELIC_LICENSE_KEY,
Holochain,
};
use crossbeam_channel::{unbounded, Receiver, Sender};
use holochain_common::paths::DNA_EXTENSION;
Expand Down Expand Up @@ -53,6 +53,7 @@ use crate::{
signal_wrapper::SignalWrapper,
static_file_server::ConductorStaticFileServer,
static_server_impls::NickelStaticServer as StaticServer,
NEW_RELIC_LICENSE_KEY,
};
use boolinator::Boolinator;
use holochain_core::context::InstanceStats;
Expand Down Expand Up @@ -1572,7 +1573,7 @@ pub mod tests {
use holochain_core_types::dna;
use holochain_dpki::{key_bundle::KeyBundle, password_encryption::PwHashConfig, SEED_SIZE};
use holochain_persistence_api::cas::content::Address;
use holochain_wasm_utils::wasm_target_dir;
use holochain_core::wasm_engine::io::wasm_target_dir;
use lib3h_sodium::secbuf::SecBuf;
use std::{
fs::{File, OpenOptions},
Expand Down
45 changes: 24 additions & 21 deletions crates/conductor_lib/src/holochain.rs
Expand Up @@ -100,13 +100,13 @@ use holochain_core::{
instance::Instance,
nucleus::{call_zome_function, ZomeFnCall},
persister::{Persister, SimplePersister},
wasm_engine::{run_dna, WasmCallData},
wasm_engine::{WasmCallData},
};
use holochain_core_types::{
dna::{capabilities::CapabilityRequest, Dna},
error::HolochainError,
};

use holochain_wasm_types::wasm_string::WasmString;
use holochain_json_api::json::JsonString;

use holochain_core::{
Expand All @@ -116,7 +116,6 @@ use holochain_core::{
use holochain_persistence_api::cas::content::Address;
use jsonrpc_core::IoHandler;
use std::sync::Arc;

use holochain_metrics::with_latency_publishing;

/// contains a Holochain application instance
Expand All @@ -134,22 +133,26 @@ impl Holochain {
let instance = Instance::new(context.clone());

for zome in dna.zomes.values() {
let maybe_json_string = run_dna(
Some("{}".as_bytes().to_vec()),
WasmCallData::DirectCall("__hdk_hdk_version".to_string(), zome.code.code.clone()),
);

if let Ok(json_string) = maybe_json_string {
if json_string.to_string()
!= holochain_core_types::hdk_version::HDK_VERSION.to_string()
{
eprintln!("WARNING! The HDK Version of the runtime and the zome don't match.");
eprintln!(
"Runtime HDK Version: {}",
holochain_core_types::hdk_version::HDK_VERSION.to_string()
);
eprintln!("Zome HDK Version: {}", json_string);
}
let call_data = WasmCallData::DirectCall("__hdk_hdk_version".to_string(), zome.code.code.clone());

let hdk_version: WasmString = match holochain_core::wasm_engine::guest::call(
&mut call_data.instance()?,
&call_data.fn_name(),
(),
) {
Ok(v) => v,
Err(e) => return Err(HolochainInstanceError::InternalFailure(HolochainError::Wasm(e))),
};

if hdk_version.to_string()
!= holochain_core_types::hdk_version::HDK_VERSION.to_string()
{
eprintln!("WARNING! The HDK Version of the runtime and the zome don't match.");
eprintln!(
"Runtime HDK Version: {}",
holochain_core_types::hdk_version::HDK_VERSION.to_string()
);
eprintln!("Zome HDK Version: {}", hdk_version.to_string());
}
}

Expand Down Expand Up @@ -247,7 +250,7 @@ impl Holochain {
params: &str,
) -> HolochainResult<JsonString> {
let zome_call = ZomeFnCall::new(&zome, cap, &fn_name, JsonString::from_json(&params));
Ok(context.block_on(call_zome_function(zome_call, context.clone()))?)
Ok(context.block_on(call_zome_function(Arc::clone(&context), zome_call))?)
}

/// call a function in a zome
Expand Down Expand Up @@ -329,7 +332,7 @@ mod tests {
use holochain_json_api::json::RawString;
use holochain_locksmith::Mutex;
use holochain_persistence_api::cas::content::{Address, AddressableContent};
use holochain_wasm_utils::wasm_target_dir;
use holochain_core::wasm_engine::io::wasm_target_dir;
use std::{path::PathBuf, sync::Arc};
use tempfile;
use test_utils::{
Expand Down
1 change: 1 addition & 0 deletions crates/conductor_lib/test-bridge-caller/Cargo.toml
Expand Up @@ -19,3 +19,4 @@ hdk = { path = "../../hdk" }
serde_derive = "=1.0.104"
holochain_json_derive = "=0.0.23"
holochain_persistence_api = "=0.0.17"
holochain_wasmer_guest = "=0.0.18"