Go to Rust calls with Apache Arrow datatypes.

Related tags

Cryptography alloy
Overview

🔎 Overview

alloy is a standalone Go module that enables calls to Rust code with Apache Arrow datatypes through its defined C data interface.

The overarching goal is to enable calls between languages through an underlying C interface, in this case utilizing cgo and the Rust ffi. This implementation comes with no overhead due to using the Apache Arrow data format.

The only data sent between the language binaries are raw pointers referencing the allocated memory and associated schemas. This allows for fast, (somewhat) robust, and colorful use cases in data engineering scenarios.

📦 Installation

To use the Go module, simply include it in your import with path name github.com/firelink-data/alloy/alloy-go. If you want to install any Go binary utilizing alloy, you need to enable cgo compilation by setting CGO_ENABLED=0.

To add the static Rust crate to your own Rust code, you can use the cargo package manager:

$ cargo add alloy-rs

🚀 Example usage

The example file examples/main.go should envision how your Go application could utilize alloy to call Rust code with Apache Arrow parameters.

Show example code
package main

import (
    "fmt"
    "github.com/firelink-data/alloy/alloy-go"
)

func main() {
    fmt.Println("Hello from Go!");

    alloy.InitLogging();
    alloy.TestLogging("Hello Rust, sent from Golang!");

    ...

    fmt.Println("Goodbye from Go!");
}

📋 License

All code written by Firelink Data is to be held under a general MIT license, please see LICENSE for specific information.

Any other code included in this repository is to be held under its respective license(s).

You might also like...
The new, performant, and simplified version of Holochain on Rust (sometimes called Holochain RSM for Refactored State Model)

Holochain License: This repository contains the core Holochain libraries and binaries. This is the most recent and well maintained version of Holochai

IBC modules and relayer - Formal specifications and Rust implementation

ibc-rs Rust implementation of the Inter-Blockchain Communication (IBC) protocol. This project comprises primarily four crates: The ibc crate defines t

A Rust implementation of BIP-0039

bip39-rs A Rust implementation of BIP0039 Changes See the changelog file, or the Github releases for specific tags. Documentation Add bip39 to your Ca

Rust Ethereum 2.0 Client
Rust Ethereum 2.0 Client

Lighthouse: Ethereum 2.0 An open-source Ethereum 2.0 client, written in Rust and maintained by Sigma Prime. Documentation Overview Lighthouse is: Read

Official Rust implementation of the Nimiq protocol
Official Rust implementation of the Nimiq protocol

Nimiq Core implementation in Rust (core-rs) Rust implementation of the Nimiq Blockchain Core Nimiq is a frictionless payment protocol for the web. Thi

Rust implementation of Zcash protocol

The Parity Zcash client. Gitter Blog: Parity teams up with Zcash Foundation for Parity Zcash client Installing from source Installing the snap Running

rust client libraries to deal with the current cardano mainnet (byron / cardano-sl)

Rust implementation of Cardano primitives, helpers, and related applications Cardano Rust is a modular toolbox of Cardano’s cryptographic primitives,

Tendermint in Rust!

tendermint.rs Tendermint in Rust with TLA+ specifications. Tendermint is a high-performance blockchain consensus engine for Byzantine fault tolerant a

A Rust library for generating cryptocurrency wallets
A Rust library for generating cryptocurrency wallets

Table of Contents 1. Overview 2. Build Guide 2.1 Install Rust 2.2a Build from Homebrew 2.2b Build from Crates.io 2.2c Build from Source Code 3. Usage

Comments
  • Setup Rust and Golang CI, and Golang tests

    Setup Rust and Golang CI, and Golang tests

    Currently we have only unit testing workflow for alloy-rs, we should have full CI (format, lint, testing) for both alloy-go and alloy-rs.

    These can be implemented in separate workflow files, based on language? Or just create on huge CI file which takes care of both alloy-go and alloy-rs? @Ignalina thoughts?

    I think separating is easier implementation wise, but will spawn a lot of github actions jobs when using different os and toolchain strategies!

    enhancement devops discussion 
    opened by wilhelmagren 1
Owner
Firelink Data
🧡💛❤️ #opensource
Firelink Data
A simple example demonstrating cross-contract calls in CosmWasm smart contracts

Cross-contract calls This tutorial demonstrates cross-contract calls with CosmWasm v1. Overview An end user calls the reservation contract to register

csli Tools 3 Sep 12, 2022
Generate Nix fetcher calls from repository URLs [maintainer=@figsoda]

nurl Generate Nix fetcher calls from repository URLs $ nurl https://github.com/nix-community/patsh v0.2.0 2>/dev/null fetchFromGitHub { owner = "nix

Nix community projects 103 Jan 29, 2023
BLS12-381 cryptography using Apache Milagro

BLS12-381 Aggregate Signatures in Rust using Apache Milagro WARNING: This library is a work in progress and has not been audited. Do NOT consider the

Sigma Prime 21 Apr 4, 2022
Package used by the cosmos-rust-interface. Makes direct use of cosmos-rust.

Package used by the cosmos-rust-interface. Makes direct use of cosmos-rust (cosmos‑sdk‑proto, osmosis-proto, cosmrs).

Philipp 4 Dec 26, 2022
Rust project for working with ETH - Ethereum transactions with Rust on Ganache and also deploy smart contracts :)

Just a test project to work with Ethereum but using Rust. I'm using plain Rust here, not Foundry. In future we will use Foundry. Hope you're already f

Akhil Sharma 2 Dec 20, 2022
An open source Rust high performance cryptocurrency trading API with support for multiple exchanges and language wrappers. written in rust(🦀) with ❤️

Les.rs - Rust Cryptocurrency Exchange Library An open source Rust high performance cryptocurrency trading API with support for multiple exchanges and

Crabby AI 4 Jan 9, 2023
Simple node and rust script to achieve an easy to use bridge between rust and node.js

Node-Rust Bridge Simple rust and node.js script to achieve a bridge between them. Only 1 bridge can be initialized per rust program. But node.js can h

Pure 5 Apr 30, 2023
A Rust library for working with Bitcoin SV

Rust-SV A library to build Bitcoin SV applications in Rust. Documentation Features P2P protocol messages (construction and serialization) Address enco

Brenton Gunning 51 Oct 13, 2022
Coinbase pro client for Rust

Coinbase pro client for Rust Supports SYNC/ASYNC/Websocket-feed data support Features private and public API sync and async support websocket-feed sup

null 126 Dec 30, 2022
Custom Ethereum vanity address generator made in Rust

ethaddrgen Custom Ethereum address generator Get a shiny ethereum address and stand out from the crowd! Disclaimer: Do not use the private key shown i

Jakub Hlusička 153 Dec 27, 2022