Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

License

NotificationsYou must be signed in to change notification settings

lambdaclass/cairo-vm-py

Repository files navigation

drawing

🐍 Cairo-vm-py 🐍

FFI Python bindings for cairo-vm

Report Bug ·Request Feature

rustcodecovlicenseTelegram Chat

Table of Contents

📖 About

cairo-vm-py adds Python bindings to theCairo 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, runmake 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 usingmaturin develop --release.

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

🚀 Usage

After installation, you can access the Cairo VM from Python code. As an example, after compiling the programarray_sum intocairo_programs/array_sum.json, you can run it with the VM using:

importcairo_vm_pywithopen(f"cairo_programs/array_sum.json")asfile:runner=cairo_vm_py.CairoRunner(file.read(),"main","all",False)runner.cairo_run(True)

Testing

To run the test suite:

make full-test

Demo

Thebuild_envs.sh script will build two Python virtual environments:

  • cairo-lang containing a pristine installation ofcairo-lang==0.10.3;
  • cairo-vm-py containing a patched installation ofcairo-lang==0.10.3 that usescairo-vm-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-vm-py integration you need to run:

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

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

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

How to manually install the script dependencies

cairo-lang requires thegmp 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/libsh 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-vm: A fast implementation of the Cairo VM in Rust.
  • starknet_in_rust: implementation of Starknet in Rust, powered by the cairo-vm.

⚖️ License

This project is licensed under the Apache 2.0 license.

SeeLICENSE for more information.

About

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

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors16


[8]ページ先頭

©2009-2025 Movatter.jp