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 theDrasylNode
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 parameterdrasyl.remote.message.arq.enabled
.- Moved optional classes from Maven module
org.drasyl:drasyl-core
toorg.drasyl:drasyl-extras
. DrasylChannel
andDrasylServerChannel
are now running onDefaultEventLoopGroup
that provide a better performance compared toNioEventLoopGroup
.
🐛 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
Related Posts
- drasyl 0.8.0 released with improved Hole Punching, Remote Controlling for CLI, and increased TUN Device performance
- drasyl 0.7.0 released with TUN Device Support and Faster UDP Hole Punching
- drasyl 0.6.0 released with Support for Netty Handlers, Backpressure Mechanism, and Tunnel Utility
- drasyl 0.5.0 released with E2E Encryption, LAN Discovery, and TCP Fallback
- drasyl 0.4.0 released with UDP Hole Punching, Message Chunking, and Bandwidth Measurement Utility