Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dev: optimized bitshifts by using a lookup table for powers of two #984

Open
wants to merge 22 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
88479f3
validate eth tx test (#986)
manlikeHB Sep 30, 2024
c645fee
refactor: replace `while` loops with `for` (#987)
fabrobles92 Sep 30, 2024
7c289ed
Optimizes conversion of bytes to words (#985)
lordshashank Sep 30, 2024
4ce7e2d
refactor: remove `load_word` in favor of `FromBytes` (#988)
lordshashank Sep 30, 2024
5759f30
feat: implement eth_get_balance (#990)
saimeunt Sep 30, 2024
8b29b2f
dev: use native in ci (#992)
enitrat Sep 30, 2024
77bfa66
fix: sar (#994)
enitrat Sep 30, 2024
3d92e66
fix: create tx nonce overflow (#995)
enitrat Sep 30, 2024
a3fa5bc
dev: implement compile-time filtering for tests (#997)
enitrat Sep 30, 2024
81dc3c7
Implementation of eth_get_transaction_count function (#983)
Gerson2102 Sep 30, 2024
109ab1e
fix: mulmod (#998)
enitrat Sep 30, 2024
9baf1a9
fix: overflow in message_call_gas (#996)
enitrat Sep 30, 2024
1a80ed7
fix: mcopy offset oob (#999)
enitrat Sep 30, 2024
e2bd71d
fix: typos (#1000)
omahs Oct 1, 2024
79a5e8d
fix: saturate jumpi index taken on stack (#1002)
enitrat Oct 1, 2024
6a23ced
refactor: Bitshift takes usize as arg (#1001)
enitrat Oct 1, 2024
4afdbfe
bump: cairo native
enitrat Oct 1, 2024
0a76b4f
fix: conversion of stack values in opcode execution (#1005)
enitrat Oct 1, 2024
6138ec1
ci: downgrade cairo native (#1008)
enitrat Oct 2, 2024
dcbb421
dev: use checked math (#1009)
enitrat Oct 2, 2024
7048c0d
test: get_starknet_address (#1006)
saimeunt Oct 2, 2024
96dea68
dev: optimized bitshifts by using a lookup table for powers of two
enitrat Sep 28, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Reusable Build Workflow

on:
workflow_call:
inputs:
artifact-name:
required: true
type: string

permissions: read-all

jobs:
build:
runs-on: ubuntu-latest
env:
CI_COMMIT_MESSAGE: CI Formatting Auto Commit
CI_COMMIT_AUTHOR: ${{ github.event.repository.name }} CI
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Scarb
uses: software-mansion/setup-scarb@v1

- name: Build contracts
run: scarb build -p contracts

- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: ${{ inputs.artifact-name }}
path: target/dev
116 changes: 11 additions & 105 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,118 +16,24 @@ permissions: read-all

jobs:
build:
runs-on: ubuntu-latest
env:
CI_COMMIT_MESSAGE: CI Formatting Auto Commit
CI_COMMIT_AUTHOR: ${{ github.event.repository.name }} CI
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Scarb
uses: software-mansion/setup-scarb@v1

- name: Build contracts
run: scarb build -p contracts

- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: kakarot-ssj-build
path: target/dev
uses: ./.github/workflows/build.yml
with:
artifact-name: kakarot-ssj-build

tests-unit:
# trunk-ignore(actionlint/runner-label)
runs-on: ubuntu-latest-16-cores
steps:
- uses: actions/checkout@v3
- uses: foundry-rs/setup-snfoundry@v3
- uses: software-mansion/setup-scarb@v1
- run: scarb fmt --check
- run: scarb build
- run: scarb test
uses: ./.github/workflows/tests-unit.yml
with:
run-fmt-check: false

ef-tests:
# trunk-ignore(actionlint/runner-label)
runs-on: ubuntu-latest-32-cores
needs: build
steps:
- name: Checkout ef-tests
uses: actions/checkout@v4
with:
repository: kkrt-labs/ef-tests

- name: Checkout local skip file
uses: actions/checkout@v4
with:
sparse-checkout: |
blockchain-tests-skip.yml
sparse-checkout-cone-mode: false
path: skip-file

- name: Replace the skip files
run: mv skip-file/blockchain-tests-skip.yml blockchain-tests-skip.yml

- name: Rust cache
uses: Swatinem/rust-cache@v2
with:
cache-on-failure: "true"

- name: Setup
run: |
mkdir -p build/common
make setup setup-kakarot-v0

- name: Install nextest
uses: taiki-e/install-action@nextest

- name: Download Kakarot-SSJ build artifacts in v1
uses: actions/download-artifact@v3
with:
name: kakarot-ssj-build
path: ./build/v1

- name: Move Cairo1Helpers
run:
mv build/v1/contracts_Cairo1Helpers.compiled_contract_class.json
build/common/cairo1_helpers.json

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.10.14

- name: Run tests
run: |
set -o pipefail
make ef-test-v1 | tee data.txt
set +o pipefail

- name: Retrieve ef-tests execution resources
run: python scripts/compute_resources.py
env:
KAKAROT_VERSION: v1

- name: Upload resources
uses: actions/upload-artifact@v3
with:
path: resources
name: resources

- name: Generate blockchain-tests-skip.yml file
if: github.event_name == 'workflow_dispatch'
run: make generate-skip-file

- name: Upload skip file
if: github.event_name == 'workflow_dispatch'
uses: actions/upload-artifact@v3
with:
path: blockchain-tests-skip.yml
name: blockchain-tests-skip
uses: ./.github/workflows/ef-tests.yml
needs: [build]
with:
artifact-name: kakarot-ssj-build

resources:
runs-on: ubuntu-latest
needs: ef-tests
needs: [ef-tests]
steps:
- uses: actions/checkout@v4

Expand Down
129 changes: 129 additions & 0 deletions .github/workflows/ef-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
name: EF-Tests

on:
workflow_call:
inputs:
artifact-name:
required: true
type: string

permissions: read-all

jobs:
ef-tests:
# trunk-ignore(actionlint/runner-label)
runs-on: ubuntu-latest-16-cores
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Cache cairo-native setup
id: cache-cairo-native
uses: actions/cache@v3
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
./libcairo_native_runtime.a
key:
${{ runner.os }}-cairo-native-${{ hashFiles('**/Cargo.lock',
'scripts/setup_cairo_native.sh') }}

- name: Make setup script executable
run: chmod +x ./scripts/setup_cairo_native.sh

- name: Setup Cairo Native
run: |
if [[ "${{ steps.cache-cairo-native.outputs.cache-hit }}" == 'true' ]]; then
sudo ./scripts/setup_cairo_native.sh -s
else
sudo ./scripts/setup_cairo_native.sh
fi

- name: Set Environment Variables
run: |
echo "MLIR_SYS_190_PREFIX=/usr/lib/llvm-19/" >> $GITHUB_ENV
echo "LLVM_SYS_191_PREFIX=/usr/lib/llvm-19/" >> $GITHUB_ENV
echo "TABLEGEN_190_PREFIX=/usr/lib/llvm-19/" >> $GITHUB_ENV
echo "CAIRO_NATIVE_RUNTIME_LIBRARY=$(pwd)/libcairo_native_runtime.a" >> $GITHUB_ENV

- name: Checkout ef-tests
uses: actions/checkout@v4
with:
repository: kkrt-labs/ef-tests
ref: feat/cairo-native
path: ef-tests # Check out to a subdirectory to avoid cleaning the kakarot-ssj directory

- name: Checkout local skip file
uses: actions/checkout@v4
with:
sparse-checkout: |
blockchain-tests-skip.yml
sparse-checkout-cone-mode: false
path: skip-file

- name: Setup ef-tests
run: |
mv skip-file/blockchain-tests-skip.yml ef-tests/blockchain-tests-skip.yml
cd ef-tests
mkdir -p build/common
make setup setup-kakarot-v0

- name: Install nextest
uses: taiki-e/install-action@nextest

- name: Download Kakarot-SSJ build artifacts in v1
uses: actions/download-artifact@v3
with:
name: ${{ inputs.artifact-name }}
path: ef-tests/build/v1

- name: Move Cairo1Helpers
run: |
mv ef-tests/build/v1/contracts_Cairo1Helpers.compiled_contract_class.json \
ef-tests/build/common/cairo1_helpers.json

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.10.14

# Add this step to verify the file exists
- name: Verify libcairo_native_runtime.a
run: |
echo $CAIRO_NATIVE_RUNTIME_LIBRARY
ls -l $CAIRO_NATIVE_RUNTIME_LIBRARY

- name: Run tests
working-directory: ef-tests
run: |
set -o pipefail
RUST_MIN_STACK=1342177280 make ef-test-v1-native | tee data.txt
set +o pipefail

- name: Retrieve ef-tests execution resources
working-directory: ef-tests
run: python scripts/compute_resources.py
env:
KAKAROT_VERSION: v1

- name: Upload resources
uses: actions/upload-artifact@v3
with:
path: ef-tests/resources
name: resources

- name: Generate blockchain-tests-skip.yml file
if: github.event_name == 'workflow_dispatch'
working-directory: ef-tests
run: make generate-skip-file

- name: Upload skip file
if: github.event_name == 'workflow_dispatch'
uses: actions/upload-artifact@v3
with:
path: ef-tests/blockchain-tests-skip.yml
name: blockchain-tests-skip
43 changes: 0 additions & 43 deletions .github/workflows/gas_reports.yml

This file was deleted.

34 changes: 0 additions & 34 deletions .github/workflows/gas_snapshot.yml

This file was deleted.

Loading
Loading