B
bisect-ssa-pass
Debuguj błędy optymalizacji SSA w Noir — automatycznie znajdź przejście, które psuje semantykę programu
Instalacja
Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.
Instalacja
O skillu
Skill do debugowania błędów w pipeline'u SSA (Static Single Assignment) kompilera Noir. Gdy program zmienia zachowanie podczas optymalizacji SSA, ta umiejętność automatycznie bisektuje poszczególne przejścia, aby wskazać, które z nich narusza semantykę kodu. Przydatna dla programistów pracujących nad Noir, którzy natrafili na błędy znalezione przez fuzzer pass_vs_prev lub zauważyli nieoczekiwane wyniki wykonania. Umożliwia szybkie zidentyfikowanie problematycznego przejścia bez ręcznego testowania każdego kroku.
Jak używać
- Przygotuj projekt Noir z plikiem Prover.toml zawierającym dane wejściowe, które ujawniają problem — program powinien produkować nieprawidłowe wyniki lub zachowywać się nieoczekiwanie.
- Skompiluj projekt z flagą
--show-ssa, aby wygenerować wyjście SSA po każdym przejściu optymalizacyjnym:nargo compile --show-ssai zapisz wynik do pliku (np.ssa_output.txt). Nie używaj poleceń obcinających wyjście (takich jakhead) — czekaj, aż kompilacja się całkowicie zakończy i wszystkie przejścia zostaną zapisane. - Sprawdź, czy plik zawiera wszystkie przejścia, uruchamiając
grep -E "^After " ssa_output.txt— powinno być około 49 przejść. - Podziel wyjście SSA na osobne pliki dla każdego przejścia, używając dostarczonego skryptu:
./scripts/split-ssa-passes.sh ssa_output.txt ssa_passes. - Oczyść pliki z nagłówków i diagnostyki za pomocą skryptu:
./scripts/clean-ssa-passes.sh ssa_passes. - Uruchom bisekt na przejściach, aby zidentyfikować, które z nich zmienia zachowanie programu — skill automatycznie przetestuje każde przejście i wskaże problematyczne.