Skip to content

Commit f818fb1

Browse files
fix: optimizations and uplc-fuzz fixes after rebase
Signed-off-by: Jonathan Lim <jonathan.lim.222@gmail.com>
1 parent 5917a39 commit f818fb1

25 files changed

Lines changed: 264 additions & 117 deletions

crates/uplc/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ num.workspace = true
3030
once_cell.workspace = true
3131
secp256k1.workspace = true
3232
thiserror.workspace = true
33+
uplc_macros = { version = "0.1.0", path = "../uplc_macros" }
3334

3435
[dev-dependencies]
3536
criterion = { workspace = true, features = ["html_reports"] }

crates/uplc/benches/bytecode.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use bumpalo::Bump;
22
use criterion::{criterion_group, criterion_main, Criterion};
33
use itertools::Itertools;
44
use std::{fs, time::Duration};
5-
use uplc_turbo::{
5+
use amaru_uplc::{
66
arena::Arena,
77
binder::DeBruijn,
88
bytecode::{compiler, vm},
@@ -36,7 +36,7 @@ pub fn bench_bytecode_aot(c: &mut Criterion) {
3636

3737
// Pre-compile once: decode FLAT → AST → bytecode
3838
let compile_arena = Box::leak(Box::new(Arena::new()));
39-
let program = match flat::decode::<DeBruijn>(compile_arena, &script) {
39+
let program = match flat::decode_ungated::<DeBruijn>(compile_arena, &script) {
4040
Ok(p) => p,
4141
Err(_) => continue,
4242
};

crates/uplc/benches/flat_decode.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use bumpalo::Bump;
22
use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion, Throughput};
33
use std::{fs, time::Duration};
4-
use uplc_turbo::{arena::Arena, binder::DeBruijn, flat};
4+
use amaru_uplc::{arena::Arena, binder::DeBruijn, flat};
55

66
/// Benchmark FLAT decoding only (no evaluation).
77
pub fn bench_flat_decode(c: &mut Criterion) {
@@ -24,7 +24,7 @@ pub fn bench_flat_decode(c: &mut Criterion) {
2424

2525
// Only include scripts that decode successfully
2626
let arena = Arena::new();
27-
if flat::decode::<DeBruijn>(&arena, &bytes).is_ok() {
27+
if flat::decode_ungated::<DeBruijn>(&arena, &bytes).is_ok() {
2828
scripts.push((name, bytes));
2929
}
3030
}
@@ -39,7 +39,7 @@ pub fn bench_flat_decode(c: &mut Criterion) {
3939
group.bench_with_input(BenchmarkId::new("decode", name), bytes, |b, script| {
4040
let mut arena = Arena::from_bump(Bump::with_capacity(1_048_576));
4141
b.iter(|| {
42-
let _program = flat::decode::<DeBruijn>(&arena, script).unwrap();
42+
let _program = flat::decode_ungated::<DeBruijn>(&arena, script).unwrap();
4343
arena.reset();
4444
});
4545
});
@@ -55,7 +55,7 @@ pub fn bench_flat_decode(c: &mut Criterion) {
5555
group2.bench_with_input(BenchmarkId::new("decode+eval", name), bytes, |b, script| {
5656
let mut arena = Arena::from_bump(Bump::with_capacity(1_048_576));
5757
b.iter(|| {
58-
let program = flat::decode::<DeBruijn>(&arena, script).unwrap();
58+
let program = flat::decode_ungated::<DeBruijn>(&arena, script).unwrap();
5959
let result = program.eval(&arena);
6060
let _ = result.term;
6161
arena.reset();

crates/uplc/benches/turbo/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ fn analyze_slow_evals(threshold: Duration) {
204204
}
205205

206206
fn main() {
207-
match std::env::var("UPLC_TURBO_ANALYZE_SLOW") {
207+
match std::env::var("amaru_uplc_ANALYZE_SLOW") {
208208
Ok(threshold) => analyze_slow_evals(Duration::from_millis(
209209
threshold.parse().expect("invalid time limit"),
210210
)),

crates/uplc/benches/use_cases/main.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,11 @@ fn bench_ast(c: &mut Criterion, file_name: &str, script: &[u8]) {
4949
// Pre-check: verify decode + eval succeed before benchmarking
5050
{
5151
let test_arena = Arena::new();
52-
if flat::decode::<DeBruijn>(&test_arena, script).is_err() {
52+
if flat::decode_ungated::<DeBruijn>(&test_arena, script).is_err() {
5353
eprintln!("EVAL_FAIL: {}", file_name);
5454
return;
5555
}
56-
let program = flat::decode::<DeBruijn>(&test_arena, script).unwrap();
56+
let program = flat::decode_ungated::<DeBruijn>(&test_arena, script).unwrap();
5757
if program.eval(&test_arena).term.is_err() {
5858
eprintln!("EVAL_FAIL: {}", file_name);
5959
return;
@@ -64,7 +64,7 @@ fn bench_ast(c: &mut Criterion, file_name: &str, script: &[u8]) {
6464

6565
c.bench_function(file_name, |b| {
6666
b.iter(|| {
67-
let program = flat::decode::<DeBruijn>(&arena, script).expect("Failed to decode");
67+
let program = flat::decode_ungated::<DeBruijn>(&arena, script).expect("Failed to decode");
6868

6969
let result = program.eval(&arena);
7070

@@ -76,7 +76,7 @@ fn bench_ast(c: &mut Criterion, file_name: &str, script: &[u8]) {
7676
}
7777

7878
fn bench_bytecode(c: &mut Criterion, file_name: &str, script: &[u8]) {
79-
use uplc_turbo::{
79+
use amaru_uplc::{
8080
bytecode::{compiler, vm},
8181
machine::{
8282
cost_model::builtin_costs::builtin_costs_v3::BuiltinCostsV3, BuiltinSemantics,
@@ -86,7 +86,7 @@ fn bench_bytecode(c: &mut Criterion, file_name: &str, script: &[u8]) {
8686

8787
// AOT compile once outside the measurement loop
8888
let compile_arena = Box::leak(Box::new(Arena::new()));
89-
let program = match flat::decode::<DeBruijn>(compile_arena, script) {
89+
let program = match flat::decode_ungated::<DeBruijn>(compile_arena, script) {
9090
Ok(p) => p,
9191
Err(_) => {
9292
eprintln!("EVAL_FAIL: {}", file_name);

crates/uplc/examples/bc_dump.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use uplc_turbo::{
1+
use amaru_uplc::{
22
arena::Arena,
33
binder::{DeBruijn, Eval},
44
bytecode::compiler,
@@ -9,7 +9,7 @@ fn main() {
99
let path = std::env::args().nth(1).expect("provide a .flat file");
1010
let script = std::fs::read(&path).unwrap();
1111
let arena = Arena::new();
12-
let program = flat::decode::<DeBruijn>(&arena, &script).expect("decode failed");
12+
let program = flat::decode_ungated::<DeBruijn>(&arena, &script).expect("decode failed");
1313
let compiled = compiler::compile(
1414
(
1515
program.version.major(),

crates/uplc/examples/bc_stats.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use uplc_turbo::{
1+
use amaru_uplc::{
22
arena::Arena,
33
binder::DeBruijn,
44
bytecode::{compiler, read_u16, read_u32, Op},
@@ -12,7 +12,7 @@ fn main() {
1212

1313
let script = std::fs::read(&script_path).expect("Failed to read script");
1414
let arena = Arena::new();
15-
let program = flat::decode::<DeBruijn>(&arena, &script).expect("Failed to decode");
15+
let program = flat::decode_ungated::<DeBruijn>(&arena, &script).expect("Failed to decode");
1616

1717
let compiled = compiler::compile(
1818
(

crates/uplc/examples/bench_loop.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use bumpalo::Bump;
2-
use uplc_turbo::{
2+
use amaru_uplc::{
33
arena::Arena,
44
binder::DeBruijn,
55
bytecode::{compiler, vm},
@@ -23,7 +23,7 @@ fn main() {
2323

2424
if mode == "bc" {
2525
let compile_arena = Box::leak(Box::new(Arena::new()));
26-
let program = flat::decode::<DeBruijn>(compile_arena, &script).expect("decode failed");
26+
let program = flat::decode_ungated::<DeBruijn>(compile_arena, &script).expect("decode failed");
2727
let compiled = Box::leak(Box::new(compiler::compile(
2828
(
2929
program.version.major(),
@@ -48,7 +48,7 @@ fn main() {
4848
} else {
4949
let mut arena = Arena::from_bump(Bump::with_capacity(1_048_576));
5050
for _ in 0..iters {
51-
let program = flat::decode::<DeBruijn>(&arena, &script).expect("decode failed");
51+
let program = flat::decode_ungated::<DeBruijn>(&arena, &script).expect("decode failed");
5252
let result = program.eval(&arena);
5353
let _ = result.term.expect("eval failed");
5454
arena.reset();

crates/uplc/examples/check_max_var.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use uplc_turbo::{
1+
use amaru_uplc::{
22
arena::Arena,
33
binder::{DeBruijn, Eval},
44
flat,
@@ -26,7 +26,7 @@ fn main() {
2626
let path = std::env::args().nth(1).expect("provide a .flat file");
2727
let script = std::fs::read(&path).unwrap();
2828
let arena = Arena::new();
29-
let program = flat::decode::<DeBruijn>(&arena, &script).expect("decode failed");
29+
let program = flat::decode_ungated::<DeBruijn>(&arena, &script).expect("decode failed");
3030
let max = max_var_index(program.term);
3131
eprintln!("Max De Bruijn index: {}", max);
3232
if max > 255 {

crates/uplc/examples/eval_flat.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
use uplc_turbo::{arena::Arena, binder::DeBruijn, flat, machine::PlutusVersion};
1+
use amaru_uplc::{arena::Arena, binder::DeBruijn, flat, machine::PlutusVersion};
22

33
fn main() {
44
let path = std::env::args().nth(1).expect("provide a .flat file");
55
let script = std::fs::read(&path).unwrap();
66
let arena = Arena::new();
7-
let program = flat::decode::<DeBruijn>(&arena, &script).expect("decode failed");
7+
let program = flat::decode_ungated::<DeBruijn>(&arena, &script).expect("decode failed");
88
let result = program.eval_version(&arena, PlutusVersion::V3);
99

1010
match result.term {

0 commit comments

Comments
 (0)