Assorted color bricks

Today, we are excited to announce the release of drasyl 0.9.0. This release will bring drasyl natively to C and Python! In addition, drasyl now ships with optional components allowing you to utilize the publish/subscribe messaging pattern, remote message invocation, decentralized membership management, and a distributed lookup service.

Changelog

🚀 Added

  • It is now easier to create drasyl node through the bootstrap interface. Refer our documentation for more information.
  • Added support for remote message invocations over drasyl. Refer our documentation for more information.
  • Added support for decentralized membership managed using the CYCLON protocol. Refer our documentation for more information.
  • Added support for the publish/subscribe messaging pattern. Refer our documentation for more information.
  • Added support for distributed lookup service using the Chord protocol. Refer our documentation for more information.
  • Created shared C library libdrasyl for the DrasylNode interface. Refer our documentation for more information.
  • Created Python binding drasyl for the shared C library. Can be installed through PyPI. Refer our documentation for more information.

💅 Changed

  • Dependencies have been updated.
  • DrasylNode now provides guaranteed and in-order message delivery by default. Can be disabled through configuration parameter drasyl.remote.message.arq.enabled.
  • Moved optional classes from Maven module org.drasyl:drasyl-core to org.drasyl:drasyl-extras.
  • DrasylChannel and DrasylServerChannel are now running on DefaultEventLoopGroup that provide a better performance compared to NioEventLoopGroup.

🐛 Fixed

  • CLI sub-command tun: Ensure that a route is fully removed upon request.
  • Fixed problem with UDP multicast server unable to join multicast group on dual stack systems (#215).
  • Future returned by DrasylNode#shutdown is no longer completed too early (#202).

Language Bindings

We are continuously working on making drasyl accessible to more users. A “natural” barrier when choosing a framework is often the underlying programming language. We often received feedback from users that they would like to use drasyl in their projects, but the projects are not based on the Java programming language.

As a solution for these users, we could only refer to our JSON-RPC interface, which can be used to control a drasyl node remotely.

Starting with this release, we now provide a completely native implementation of the DrasylNode interface in C. This is not a separate implementation but an ahead-of-time compilation to native code of our Java code. Technical details can be found in the GraalVM documentation.

You can see from our Documentation how to use libdrasyl.

Since many programming languages support binding to C functions, we can now more easily bring drasyl to other programming languages. We start with our Python package drasyl, which you can download directly via pip install drasyl from the Python Package Index.

Refer to our Documentation for more information about using this Python package.

Publish/Subscribe Messaging, Remote Message Invocation, and more!

drasyl allows you to communicate easily with any other peer on the drasyl overlay network. While this has already addressed many challenges, message-based communication only provides basic functionality for distributed applications. Typically, p2p applications need to utilize higher-level services like membership management, resource discovery, services, or one-to-many communication. For the most common requirements, we would like to provide building blocks from which you can choose to build your distributed application.

Starting with this release, drasyl now provides support for the publish/subscribe messaging pattern, remote message invocation, decentralized membership management using the CYCLON protocol, support for publishing/subscribe messaging pattern, and a distributed lookup service using the Chord protocol.


Photo by Alexander Grey on Pexels