Skip to main content

No project description provided

Project description

drawing

🐍 Cairo-rs-py 🐍

FFI Python bindings for cairo-rs

Report Bug · Request Feature

rust codecov license Telegram Chat

Table of Contents

📖 About

cairo-rs-py adds Python bindings to the cairo-rs Cairo VM.

🌅 Getting Started

Dependencies

  • Rust and Cargo
  • Pyenv and Python 3.9
  • GMP
  • make

Installation

To set up the Python environment, and install necessary Python libraries, run make deps. This command builds two virtual environments, one intended for the Rust VM and the other one for the Original Python VM. It also initializes the submodules of some of the projects we integrated with.

After setting up the environments, you can install the python binary using maturin develop --release.

Finally, install into the python environment with maturin develop --release. For mac installation, these flags might be necessary: maturin develop --release -m cairo-rs-py/Cargo.toml --no-default-features --features extension.

🚀 Usage

After installation, you can access the cairo-rs VM from Python code. As an example, after compiling the program array_sum into cairo_programs/array_sum.json, you can run it with the VM using:

import cairo_rs_py

with open(f"cairo_programs/array_sum.json") as file:
    runner = cairo_rs_py.CairoRunner(file.read(), "main", "all", False)
    runner.cairo_run(True)

Testing

To run the test suite:

make full-test

Demo

The build_envs.sh script will build two Python virtual environments:

  • cairo-lang containing a pristine installation of cairo-lang==0.10.3;
  • cairo-rs-py containing a patched installation of cairo-lang==0.10.3 that uses cairo-rs-py as dependency. It will also install the required dependencies automatically in Debian-based distributions, CentOs, Fedora and OSX. If you use another OS, you can check how to install them manually below.

To run the script:

./scripts/build_envs.sh

Both virtual environment will be created under the /scripts directory.

To actually use any of the implementations, you would have to activate the environment you want. For example, to use the cairo-rs-py integration you need to run:

source scripts/cairo-rs-py/bin/activate

After activating the cairo-rs-py virtualenv you can try out any Cairo project and it will use cairo-rs. In some cases some projects are coupled to cairo-run or need some extra patching to be able to use the Cairo-rs runner (e.g. Protostar, Zerosync).

Note that the script assumes you have a Rust toolchain, Python 3.9 and the venv program installed.

How to manually install the script dependencies

cairo-lang requires the gmp library to build. You can install it on Debian-based GNU/Linux distributions with:

sudo apt install -y libgmp3-dev

In Mac you can use Homebrew:

brew install gmp

In Mac you'll also need to tell the script where to find the gmp lib:

export CFLAGS=-I/opt/homebrew/opt/gmp/include LDFLAGS=-L/opt/homebrew/opt/gmp/lib
sh build_envs.sh

📊 Benchmarking

To run the benchmarks of the projects we integrated with, first you need to set up the dependencies:

make benchmark-deps

Lastly, run make + the project you desire to try:

benchmark-devnet

🌞 Related Projects

  • cairo-rs: A fast implementation of the Cairo VM in Rust.
  • starknet_in_rust: implementation of Starknet in Rust, powered by the cairo-rs VM.

⚖️ License

This project is licensed under the Apache 2.0 license.

See LICENSE for more information.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cairo_rs_py-0.2.0.tar.gz (93.6 kB view details)

Uploaded Source

Built Distribution

cairo_rs_py-0.2.0-cp39-cp39-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

File details

Details for the file cairo_rs_py-0.2.0.tar.gz.

File metadata

  • Download URL: cairo_rs_py-0.2.0.tar.gz
  • Upload date:
  • Size: 93.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for cairo_rs_py-0.2.0.tar.gz
Algorithm Hash digest
SHA256 12ceb4a36e330d14400417fc97ec034876aea55e2ebad9516497a892f400158f
MD5 c1fc2cd35f2bf643dbc19de6921c56e8
BLAKE2b-256 f4574a952268cec23ddb00443443e4900f8de53c09d8e07795849178179317fe

See more details on using hashes here.

File details

Details for the file cairo_rs_py-0.2.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cairo_rs_py-0.2.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 98644923b4cfd92a9f684c9a2f0f570973da8931c54385dc9d830fa9f5c7eb53
MD5 25dbcbd61b2605fa3bd3e95f39aeae0d
BLAKE2b-256 b8feb6f035bfb2e39b0f3afc94a4f085f22c3f00c732dec0d8a90fea3e85a0d2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page