Be a crypto hero in the market by logging in

Don't you have an account? Sign in

Token price

  • BTC

    13,676,069.3KRW

    -5.9%

  • ETH

    359,176.4KRW

    -7.2%

  • XRP

    493.7KRW

    -10.8%

  • BCH

    501,909.8KRW

    -13.0%

  • LTC

    136,255.8KRW

    -13.1%

  • EOS

    7,343.7KRW

    -13.2%

  • BNB

    38,290.4KRW

    -11.4%

  • BSV

    235,094.2KRW

    -16.0%

  • USDT

    1,144.7KRW

    -0.6%

  • ADA

    105.2KRW

    -8.5%

  • TRX

    40.3KRW

    -10.4%

  • XLM

    128.5KRW

    -12.8%

  • XMR

    106,620.1KRW

    -11.3%

  • DASH

    189,120.2KRW

    -8.0%

  • NEO

    20,263.1KRW

    -11.4%

  • ETC

    9,406.2KRW

    -13.3%

  • XEM

    105.1KRW

    -6.7%

  • ONT

    1,772.5KRW

    -12.2%

  • ZEC

    119,091.6KRW

    -3.6%

  • XTZ

    1,175.7KRW

    -4.2%

  • MKR

    772,443.3KRW

    -11.5%

  • BTG

    31,973.4KRW

    -13.7%

  • QTUM

    5,436.7KRW

    -16.6%

  • VET

    9.0KRW

    -13.2%

  • DOGE

    3.6KRW

    -5.0%

  • BAT

    333.7KRW

    -9.7%

  • OMG

    2,953.3KRW

    -5.2%

  • USDC

    1,160.4KRW

    0.3%

  • DCR

    37,033.1KRW

    -5.5%

  • LSK

    2,279.6KRW

    -4.1%

  • BCD

    1,386.5KRW

    -11.6%

  • RVN

    65.7KRW

    -8.0%

  • TUSD

    1,159.4KRW

    0.2%

  • HC

    5,454.1KRW

    -15.1%

  • WAVES

    2,327.6KRW

    -12.5%

  • NPXS

    1.0KRW

    -8.9%

  • REP

    20,639.3KRW

    0.8%

  • HT

    4,350.0KRW

    -0.4%

  • ZRX

    354.0KRW

    -8.8%

  • BCN

    1.1KRW

    -2.7%

  • AOA

    31.7KRW

    -3.0%

  • NANO

    1,538.6KRW

    -7.6%

  • BTS

    74.4KRW

    -12.9%

  • BTM

    192.6KRW

    -14.6%

  • BTM

    192.6KRW

    -14.6%

  • MONA

    2,878.9KRW

    -11.2%

  • ZIL

    20.4KRW

    -13.6%

  • ICX

    372.9KRW

    -10.2%

  • DGB

    14.7KRW

    -12.3%

  • IOST

    14.2KRW

    -16.1%

  • LINK

    485.1KRW

    2.0%

  • PAX

    1,159.2KRW

    0.2%

  • DENT

    2.2KRW

    -16.3%

  • KCS

    1,765.4KRW

    -5.9%

  • SC

    3.8KRW

    -5.2%

  • AE

    576.2KRW

    -10.9%

  • KMD

    1,333.7KRW

    -11.5%

  • XVG

    9.5KRW

    -12.8%

  • INB

    415.6KRW

    -7.0%

  • XIN

    318,986.9KRW

    -6.8%

  • XIN

    318,986.9KRW

    -6.8%

  • STEEM

    432.4KRW

    -13.0%

  • ARDR

    126.9KRW

    -12.3%

  • THETA

    132.8KRW

    -13.7%

  • SNT

    32.8KRW

    -12.9%

  • ELF

    225.5KRW

    -15.2%

  • MCO

    6,876.4KRW

    -13.2%

  • ENJ

    140.5KRW

    -9.7%

  • MAID

    238.9KRW

    -4.1%

  • XZC

    13,193.1KRW

    -6.9%

  • DAI

    1,160.4KRW

    0.4%

  • GNT

    104.5KRW

    -11.4%

  • STRAT

    1,002.3KRW

    -12.3%

  • WAX

    94.1KRW

    -15.4%

  • PAI

    52.9KRW

    -14.6%

  • PAI

    52.9KRW

    -14.6%

  • ODE

    322.6KRW

    -8.8%

  • ELA

    4,668.0KRW

    -14.2%

  • CNX

    1,296.5KRW

    -10.7%

  • NEXO

    127.3KRW

    -12.2%

  • RDD

    2.5KRW

    -12.0%

  • WTC

    1,689.0KRW

    -11.0%

  • QNT

    7,099.7KRW

    -21.9%

  • LRC

    66.1KRW

    -11.1%

  • LOOM

    73.7KRW

    -11.1%

  • ARK

    516.1KRW

    -10.8%

  • FCT

    5,998.9KRW

    -11.0%

  • R

    118.2KRW

    -5.0%

  • REPO

    513.6KRW

    -5.8%

  • BNT

    878.6KRW

    -8.6%

  • ETN

    5.3KRW

    -13.4%

  • POWR

    121.1KRW

    -10.7%

  • AION

    153.0KRW

    -8.0%

  • PPT

    892.9KRW

    -12.3%

  • PIVX

    730.9KRW

    -11.0%

  • POLY

    95.8KRW

    -9.6%

  • MOAC

    647.2KRW

    -7.7%

  • PAY

    246.2KRW

    -10.0%

  • COSM

    39.7KRW

    -9.9%

  • TTC

    122.0KRW

    0.2%

  • CPT

    8.3KRW

    -11.8%

  • GUSD

    1,148.9KRW

    -0.5%

  • ANT

    632.7KRW

    2.7%

  • LKY

    374.2KRW

    --%

  • HUM

    0.5KRW

    -6.1%

  • AERGO

    160.0KRW

    -17.1%

  • TEMCO

    4.9KRW

    17.9%

  • APIS

    2.0KRW

    -0.1%

  • MVL

    0.9KRW

    -6.7%

  • PTON

    0.8KRW

    36.5%

  • ABL

    27.0KRW

    -13.0%

  • BAAS

    1.2KRW

    -14.3%

  • VRA

    1.0KRW

    5.5%

  • AID

    19.5KRW

    -3.9%

  • DCC

    0.8KRW

    --%

  • eDEL

    2.4KRW

    -0.7%

  • WET

    14.4KRW

    -37.2%

  • PUB

    1.5KRW

    -13.3%

  • HORUS

    2.5KRW

    -27.2%

  • SEAL

    2.2KRW

    31.8%

  • XRA

    9.9KRW

    -8.7%

  • KARMA

    0.2KRW

    -20.2%

  • PUT

    11.9KRW

    -7.3%

  • KNT

    0.4KRW

    62.2%

  • NPER

    3.4KRW

    --%

  • IQ

    27.5KRW

    -14.5%

  • RBTC

    13,611,824.9KRW

    -6.2%

  • BLACK

    2.2KRW

    -38.2%

  • CET

    25.2KRW

    -11.5%

  • MEETONE

    3.9KRW

    -18.3%

  • RCD

    3.0KRW

    --%

  • MCC

    12.1KRW

    -12.1%

  • INC

    37.8KRW

    -17.7%

  • FNB

    213.0KRW

    -9.8%

  • BZKY

    0.4KRW

    -5.9%

  • BORA

    58.3KRW

    -14.1%

  • CRE

    3.9KRW

    -8.9%

Community

Improved Windows Support, Error Logging, and More!

Holo | 06.11| 10

Holochain Dev Pulse 32 — Bridge Configuration and Error Logging

Holochain Dev Pulse 32

Summary

With this latest release, we’re happy to announce that we have made great strides in improving Windows support for Holochain, particularly for the installation process. By doing so, we hope to demonstrate our commitment to serving the widest possible community of users.

We’ve also introduced improvements and fixes for bridging, improved error messaging, along with a streamlined serialization/deserialization process for the most common type of zome function return value.

Highlights

  1. Installation: New Windows Install Process Based on Vagrant
  2. Debugging: Calls to Other Zomes and Bridges Now Log Errors
  3. Bridging/Breaking Change: Bridge Configuration Checked for Correctness
  4. Bridging: Live Changes to Bridge Configuration No Longer Require Restart
  5. Developer Experience: Safe Serialization/Deserialization of Result Type

Details

Holochain Dev Pulse June 3–June 10, 2019

1. Installation: New Windows Install Process Based on Vagrant

Our goal is to support all major operating systems, beginning with the platforms that developers are most likely to use: macOS, Linux, and Windows. The first two have been well supported from the start, but Windows support has lagged behind.

We realized that moving to a Vagrant-based installer would allow us to support all three platforms with one installation procedure, optimizing our workload and letting us get back to building features.

The astute among you will notice that this solution involves installing Linux in a virtual machine. We hope to have native Windows support once we have enough capacity to devote to addressing cross-platform compatibility issues.

Windows Support

If you’re a Windows user and are unfamiliar with Linux, we encourage you to take it easy, remember to swap \ with / in your folder paths and get acquainted with the Bash terminal. If you run into trouble, come and talk to the friendly developer community on our Mattermost chat server.

2. Debugging: Calls to Other Zomes and Bridges Now Log Errors

In this release, we’ve added error logging for failed calls across bridges and zome boundaries, which should make your life a little bit easier. Previously, errors would merely get returned to the calling function, but now they also get logged on the way through.

This feature is part of our ongoing quest to improve error messages. You’ve heard us talk about this before, and you’re hearing it again. This is because our developer community discovers error messages that lack clarity on a regular basis, and we strive to improve them as soon as we hear about them. They’ll be improved more often as developers use our framework in new ways and suggest ways to make error messages more useful.

Error Messages

Please continue to help us by suggesting or contributing improvements!

3. Bridging/Breaking Change: Bridge Configuration Checked for Correctness

Holochain apps are meant to be architected like a set of microservices unified by a single UI. Sometimes the UI can be the mediator between DNAs, requesting data from one and performing actions in another in response to the data received. But sometimes a DNA needs stronger data integrity guarantees, which can only be provided by talking directly to the other DNA.

For this, we have bridging, which lets one DNA open up a channel to another DNA and call its functions directly. The conductor mediates the communication, providing assurance that the data hasn’t been modified en route.

Bridges set up dependencies between DNAs. You can describe a dependency by the DNA’s hash or by the features it says it has. We call these features ‘traits.’

Previously, the conductor did not alert you to configure bridges that weren’t actually correct. With this release, the conductor analyzes the bridges you’ve configured and tells you if the dependencies aren’t satisfied properly.

Breaking change: Now that bridge configuration is checked for sanity, you’ll need to define bridge dependencies in your zome’s DNA JSON file in order to use bridging. Our next step is to develop tooling to automatically generate this JSON from your zome source code.

4. Bridging: Live Changes to Bridge Configuration No Longer Require Restart

The conductor admin API lets you modify a running conductor’s configuration, including bridge configuration, on the fly. This, in turn, lets you incorporate features into your app’s GUI to allow users to spin up new apps and choose which DNA microservices to use for particular features (e.g., swappable commenting, annotation, or user profile auto-fill).

Bridging: Live Changes to Bridge Configuration

Previously, when you used the admin API to configure bridges, the changes wouldn’t take effect until the conductor was restarted. Now, they take effect immediately.

5. Developer Experience: Safe Serialization/Deserialization of Result Type

App devs have been giving bridging a try. Bridging allows you to call another DNA’s zome functions, and zome functions return a special type of Result. (For those of you who aren’t familiar with Rust’s Result type, it allows you to return either a value or an error from your function.) However, when the calling function receives the result, it’s just a JSON string. App devs have found it annoying and error-prone to convert this back to a Result type.

Safe Serialization

Here’s an example of such a bridge call, which wasn’t guaranteed to work:

let result_json = hdk::call(/* params for fn in other DNA omitted */)?;
serde_json::from_str(&String::from(&result_json))
.map_err(|e| HolochainError::SerializationError(e.to_string()))?;

To improve the situation, we’ve implemented a conversion from JsonString to Result.. Here’s how that bridge call would look when using this feature:

let result_json = hdk::call(/* params for fn in other DNA omitted */)?;
result_json.try_into()?;

We hope this new feature saves you keystrokes and headaches.

Development Status:

Building an App/Platform on Holochain? We want to hear from you!
Are you building on Holochain? We would love to connect and hear more about your app/platform. Please, take a few moments to fill out this survey! Our goal is to list all the projects building on Holochain on our website.

We Want To Hear From You!

Stack Overflow: Expand the Holochain Knowledge Base

Help us grow the Holochain knowledge base on Stack Overflow!

Submit your Holochain question.

Submit your Holochain Rust question.

Contribute to Documentation

Lastly, to all of our readers — we’d like to encourage you to submit an issue or a pull request if you are interested in contributing to code. If you have a passion for, or would like to see, improvements made to the documentation, submit a new issue or add a suggestion to the Holochain Guidebook.

Learn more about Holochain and join our community!

Website | Mattermost Chat | Youtube | Reddit | MediumTwitter


Improved Windows Support, Error Logging, and More! was originally published in Holochain on Medium, where people are continuing the conversation by highlighting and responding to this story.

Comment 0

delete

Are you sure you want to delete this post?