Current feature list on RSM

RSM Feature List

These are the features that are currently implemented in RSM or planned and their status.
Note that this document or a similar might be merged in the core documentation as per https://github.com/holochain/holochain/pull/340 to keep up with code updates, but I think it’s worth it to state here the current state of affairs as per RSM announcement.

HDK features

Feature Status Example Comment
hash_entry!() Done Example
get!() Done Example
get_details!() Done Example
get_links!() Done Example
get_link_details!() Done
query!() Done Example
create_entry!() Done Example
update_entry!() Done Example
delete_entry!() Done Example
create_link!() Done Example LinkTag may get splitted in Tag and Type in the future
delete_link!() Done Example LinkTag may get splitted in Tag and Type in the future
zome_info!() Done Example
agent_info!() Done Example
call_remote!() Done Example
sys_time!() Done Example
Path & Anchors Done Paths & Anchors
generate_cap_secret!() Done Example
create_cap_grant!() Done Example
update_cap_grant!() Done Example
delete_cap_grant!() Done Example
create_cap_claim!() Done Example
init In progress Callback exists, it is not called yet
post_commit In progress Callback exists, it is not called yet
sign!() In progress Pull request
verify_signature!() In progress Pull request
decrypt!() Not done
encrypt!() Not done
schedule!() Not done
emit_signal!() Not done
property!() Not done

Core features

Feature Status Comment
Capabilities Done
Multi-agent interaction Done Many agents only work inside one conductor
Networking In progress
Keystore (key-management) Provisional A mocked keystore is in place, the real one close to be completed
System Validation Done
App Validation In progress Callback exists, but validation flows are still being implemented, and callback types may change
Validation receipts (warrants) Not done

Ecosystem and tools

Feature Status Comment
JS side client Done @holochain/conductor-api
hApp integration testing Provisional @holochain/tryorama has been adapted, will probably change in the future
holochain-run-dna Provisional @holochain-open-dev/holochain-run-dna
Cross-platform executable binary Not done The executable would add a system tray icon from which you can interact with holochain (Note: holoscape is not going to be upgraded to RSM and will be discontinued)
6 Likes

I’m sorry in a way to say this, because it was a great initiative, and I am very happy to see Holoscape officially retiring!

3 Likes

I am thinking ahead about whether I still want a redux middleware friendly version of holochain implemented… going to need to decide that as I proceed with the Acorn refactor underway.

in case core team has their eye on this, Acorn needs emit_signal! so hoping that one will come through on the soon side :pray:

1 Like

+1! Also curious, have you considered switching to apollo/graphql and if not, what are your concerns there?

I’d prefer more of a refactor than a rewrite. I like graphql, but don’t have a good reason to switch I don’t think.

1 Like

@guillemcordoba thanks so much for posting this here! Looks pretty close to complete; what about documenting build tools too? combination of cargo build + dna-util

@guillemcordoba sign is in progress

1 Like

Has the maximum chain size under the new WASM engine changed? How many MB could a source chain hold? An order of Gigabytes?

1 Like

@ldwm yeah whatever fits in lmdb would be the max source chain size, also we put a max size on an individual entry at 16mb but it’s somewhat arbitrary, wasm supports up to 4gb memory

@guillemcordoba
emit_signal is done now

1 Like

How does one init a new happ in RSM (besides doing it manually)? Any plans on some scaffolding tool for the new RSM? Even an ‘hc init’ equivalent would do…

@The-A-Man yes definitely, actually there’s a whole visual editor for it - https://blog.holochain.org/introducing-crispr-a-happ-hacking-lab/

cc @phil

@thedavidmeister The CRISPR visual editor was made for the redux version. See https://github.com/holochain/CRISPR-Holochain-redux. And as far as I know, the RSM version of CRISPR isn’t coming anytime soon (@philipbeadle may have something to clarify here).

All I’m asking is how do you guys create a new project in RSM? Is there some command line shipped with the nix package that I’m unaware of (besides ‘holochain’ and ‘dna-util’ commands)? Do you create the cargo projects manually (with the cargo command)??? I understand RSM is in its alpha (or rather I’d say pre-alpha) stage, and that only the holochain geeks should be tinkering with it at this point. But some of us are too exited to wait any longer to test it out! I hope you understand…

1 Like

@The-A-Man you can definitely work on RSM right now, i’m not sure what the ‘best practise’ for scaffolding is right now, but there definitely will be both cli and crispr support coming asap

personally i’ve built a whole bunch of test wasms that use the new HDK and rsm conductor that you can review and copy here - https://github.com/holochain/holochain/tree/develop/crates/test_utils/wasm/wasm_workspace

there are more complete examples discussed here - Is there a hello world or simple chat app for RSM?

RSM is already better than redux in all meaningful ways:

  • the HDK is cleaner
  • capability grants/claims exist
  • wasm is much faster and handles GBs of memory
  • the networking implementation is stateless (doesn’t need a sim2h server)
  • validation is faster, easier to understand and covers agent activity (e.g. to detect double spends in HF)
  • CRUD and linking works better (no circular updates, etc.)
  • it generally seems to run more efficiently re: CPU/memory even without heavy optimisation work
3 Likes

@thedavidmeister Thanks. Looks like I’ll have to go with cloning the elemental-chat and building on top of it rather than starting over from a new scratch project…

@The-A-Man up to you, all you need to do is declare the HDK and serde as dependencies in your Cargo.toml, and your crate type as a lib for wasm compilation

e.g.


[package]
name = "test_wasm_debug"
version = "0.0.1"
authors = [ "thedavidmeister", "thedavidmeister@gmail.com" ]
edition = "2018"

[lib]
name = "test_wasm_debug"
crate-type = [ "cdylib", "rlib" ]

[dependencies]
hdk3 = { path = "../../../../hdk" }
serde = "=1.0.104"

that’s it, just use hdk3::prelude::*; to get started

you can expose externs with the #[hdk_extern] proc macro

e.g.

use hdk3::prelude::*;

#[hdk_extern]
fn debug(_: ()) -> ExternResult<()> {
    debug!("debug line numbers {}", "work");
    Ok(())
}

there’s really not much boilerplate/scaffolding to be done

2 Likes

Thank you so much. That’s exactly what I was looking for. Was hesitating to cargo.toml the project myself… Ought to say, the redux version did make some hc developers lazy in that the project creation, zome creation, etc was all possible from the command line back then… However, now that you’ve shown it, it doesn’t seem like much work to do. Thanks again for your time. Looking forward to the new hdk3’s upload on crates.io

1 Like

yup, will get something up there soonish

1 Like