Skip to content
This repository has been archived by the owner on Mar 20, 2024. It is now read-only.

Stage 1: Running move compiled executable on rbpf

Closed Jul 13, 2023 100% complete

Lower Move bytecode to llvm-ir

  • Move bytecode docs [binary-format, spec]
  • Encode function arguments, returns to communicate with outside contracts using Borsh
  • Add debug info to types.
  • Add BTF types to provide runtime type information
  • Add definitions to bytecode keywords
    • Simple operations can be codegen in llvm itself but high…

Lower Move bytecode to llvm-ir

  • Move bytecode docs [binary-format, spec]
  • Encode function arguments, returns to communicate with outside contracts using Borsh
  • Add debug info to types.
  • Add BTF types to provide runtime type information
  • Add definitions to bytecode keywords
    • Simple operations can be codegen in llvm itself but high level operation can be just calls.
    • E.g., Lowering BorrowField (a move bytecode instruction) can be just a function call (with right set of parameter) that does the borrow as well as does runtime checks
    • The definitions maybe put in a rust library that is linked to the executable (see stage2)

Testing

  • Unit tests
    • Based on FileCheck like utility
    • Use move-bytecode-verifier/**/*.mvir for unit test
  • Test resulting eBPF executable in rbpf
  • Github Hooks Integration to run pre-merge tests

This milestone is closed.

No open issues remain. View closed issues or see open milestones in this repository.