From dfce9c1d96efd8d2a45be6aba7c5129d16e5a9b5 Mon Sep 17 00:00:00 2001 From: microproofs Date: Wed, 24 Jul 2024 09:59:12 -0400 Subject: [PATCH 1/3] feat: Add multivalidator as an AIR tree opcode. feat: Add uplc eval optimization --- crates/aiken-lang/src/gen_uplc.rs | 100 +++++++++++++--------- crates/aiken-lang/src/gen_uplc/air.rs | 4 + crates/aiken-lang/src/gen_uplc/tree.rs | 91 +++++++++++++++----- crates/uplc/src/optimize.rs | 1 + crates/uplc/src/optimize/shrinker.rs | 74 +++++++++++++++- examples/acceptance_tests/073/aiken.lock | 2 +- examples/acceptance_tests/077/aiken.lock | 2 +- examples/acceptance_tests/077/plutus.json | 10 +-- 8 files changed, 212 insertions(+), 72 deletions(-) diff --git a/crates/aiken-lang/src/gen_uplc.rs b/crates/aiken-lang/src/gen_uplc.rs index 707ff3e5..7a2727ed 100644 --- a/crates/aiken-lang/src/gen_uplc.rs +++ b/crates/aiken-lang/src/gen_uplc.rs @@ -132,6 +132,46 @@ impl<'a> CodeGenerator<'a> { let mut validator_args_tree = self.check_validator_args(&fun.arguments, true, air_tree_fun, src_code, lines); + if let Some(other) = other_fun { + let mut air_tree_fun_other = self.build(&other.body, module_name, &[]); + + air_tree_fun_other = wrap_validator_condition(air_tree_fun_other, self.tracing); + + let validator_args_tree_other = self.check_validator_args( + &other.arguments, + true, + air_tree_fun_other, + src_code, + lines, + ); + + let (spend, spend_name, mint, mint_name) = + if other.arguments.len() > fun.arguments.len() { + ( + validator_args_tree_other, + other.name.clone(), + validator_args_tree, + fun.name.clone(), + ) + } else { + ( + validator_args_tree, + fun.name.clone(), + validator_args_tree_other, + other.name.clone(), + ) + }; + + validator_args_tree = AirTree::multi_validator(mint_name, mint, spend_name, spend); + + // Special Case with multi_validators + self.special_functions + .use_function_uplc(CONSTR_FIELDS_EXPOSER.to_string()); + + self.special_functions + .use_function_uplc(CONSTR_INDEX_EXPOSER.to_string()); + } + validator_args_tree = AirTree::no_op(validator_args_tree); let full_tree = self.hoist_functions_to_validator(validator_args_tree); @@ -142,48 +182,6 @@ impl<'a> CodeGenerator<'a> { let mut term = self.uplc_code_gen(full_vec); - if let Some(other) = other_fun { - self.reset(false); - - let mut air_tree_fun_other = self.build(&other.body, module_name, &[]); - - air_tree_fun_other = wrap_validator_condition(air_tree_fun_other, self.tracing); - - let mut validator_args_tree_other = self.check_validator_args( - &other.arguments, - true, - air_tree_fun_other, - src_code, - lines, - ); - - validator_args_tree_other = AirTree::no_op(validator_args_tree_other); - - let full_tree_other = self.hoist_functions_to_validator(validator_args_tree_other); - - // optimizations on air tree - - let full_vec_other = full_tree_other.to_vec(); - - let other_term = self.uplc_code_gen(full_vec_other); - - let (spend, spend_name, mint, mint_name) = - if other.arguments.len() > fun.arguments.len() { - (other_term, other.name.clone(), term, fun.name.clone()) - } else { - (term, fun.name.clone(), other_term, other.name.clone()) - }; - - // Special Case with multi_validators - self.special_functions - .use_function_uplc(CONSTR_FIELDS_EXPOSER.to_string()); - - self.special_functions - .use_function_uplc(CONSTR_INDEX_EXPOSER.to_string()); - - term = wrap_as_multi_validator(spend, mint, self.tracing, spend_name, mint_name); - } - term = cast_validator_args(term, params); self.finalize(term) @@ -5700,6 +5698,24 @@ impl<'a> CodeGenerator<'a> { } Air::NoOp => None, + Air::MultiValidator { + two_arg_name, + three_arg_name, + } => { + let two_arg = arg_stack.pop().unwrap(); + + let three_arg = arg_stack.pop().unwrap(); + + let term = wrap_as_multi_validator( + three_arg, + two_arg, + self.tracing, + three_arg_name, + two_arg_name, + ); + + Some(term) + } } } } diff --git a/crates/aiken-lang/src/gen_uplc/air.rs b/crates/aiken-lang/src/gen_uplc/air.rs index 57a55b9c..07322314 100644 --- a/crates/aiken-lang/src/gen_uplc/air.rs +++ b/crates/aiken-lang/src/gen_uplc/air.rs @@ -224,4 +224,8 @@ pub enum Air { NoOp, FieldsEmpty, ListEmpty, + MultiValidator { + two_arg_name: String, + three_arg_name: String, + }, } diff --git a/crates/aiken-lang/src/gen_uplc/tree.rs b/crates/aiken-lang/src/gen_uplc/tree.rs index d3d9f13c..34847148 100644 --- a/crates/aiken-lang/src/gen_uplc/tree.rs +++ b/crates/aiken-lang/src/gen_uplc/tree.rs @@ -402,6 +402,12 @@ pub enum AirTree { then: Box, }, // End Expressions + MultiValidator { + two_arg_name: String, + two_arg: Box, + three_arg_name: String, + three_arg: Box, + }, } impl AirTree { @@ -1001,26 +1007,19 @@ impl AirTree { } } - // pub fn hoist_over(mut self, next_exp: AirTree) -> AirTree { - // match &mut self { - // AirTree::Statement { hoisted_over, .. } => { - // assert!(hoisted_over.is_none()); - // *hoisted_over = Some(next_exp.into()); - // self - // } - - // AirTree::Expression(_) => { - // unreachable!("Trying to hoist an expression onto an expression.") - // } - // AirTree::UnhoistedSequence(seq) => { - // let mut final_exp = next_exp; - // while let Some(assign) = seq.pop() { - // final_exp = assign.hoist_over(final_exp); - // } - // final_exp - // } - // } - // } + pub fn multi_validator( + two_arg_name: String, + two_arg: AirTree, + three_arg_name: String, + three_arg: AirTree, + ) -> AirTree { + AirTree::MultiValidator { + two_arg_name, + two_arg: two_arg.into(), + three_arg_name, + three_arg: three_arg.into(), + } + } pub fn expect_on_list() -> AirTree { let list_var = AirTree::local_var("__list_to_check", list(data())); @@ -1595,6 +1594,20 @@ impl AirTree { msg.create_air_vec(air_vec); then.create_air_vec(air_vec); } + AirTree::MultiValidator { + two_arg, + three_arg, + two_arg_name, + three_arg_name, + } => { + air_vec.push(Air::MultiValidator { + two_arg_name: two_arg_name.clone(), + three_arg_name: three_arg_name.clone(), + }); + + two_arg.create_air_vec(air_vec); + three_arg.create_air_vec(air_vec); + } } } @@ -1649,6 +1662,7 @@ impl AirTree { | AirTree::FieldsEmpty { then, .. } | AirTree::ListEmpty { then, .. } | AirTree::NoOp { then } => then.return_type(), + AirTree::MultiValidator { .. } => void(), } } @@ -1725,7 +1739,8 @@ impl AirTree { | AirTree::Fn { .. } | AirTree::UnOp { .. } | AirTree::WrapClause { .. } - | AirTree::Finally { .. } => vec![], + | AirTree::Finally { .. } + | AirTree::MultiValidator { .. } => vec![], } } @@ -2055,7 +2070,8 @@ impl AirTree { | AirTree::Constr { .. } | AirTree::RecordUpdate { .. } | AirTree::ErrorTerm { .. } - | AirTree::Trace { .. } => {} + | AirTree::Trace { .. } + | AirTree::MultiValidator { .. } => {} } if !apply_with_func_last { @@ -2711,6 +2727,27 @@ impl AirTree { apply_with_func_last, ); } + AirTree::MultiValidator { + two_arg_name: _, + two_arg, + three_arg_name: _, + three_arg, + } => { + two_arg.do_traverse_tree_with( + tree_path, + current_depth + 1, + Fields::SecondField, + with, + apply_with_func_last, + ); + three_arg.do_traverse_tree_with( + tree_path, + current_depth + 1, + Fields::FourthField, + with, + apply_with_func_last, + ) + } } if apply_with_func_last { @@ -3077,6 +3114,16 @@ impl AirTree { | AirTree::ErrorTerm { .. } => { panic!("A tree node with no children was encountered with a longer tree path.") } + AirTree::MultiValidator { + two_arg_name: _, + two_arg, + three_arg_name: _, + three_arg, + } => match field { + Fields::SecondField => two_arg.as_mut().do_find_air_tree_node(tree_path_iter), + Fields::FourthField => three_arg.as_mut().do_find_air_tree_node(tree_path_iter), + _ => panic!("Tree Path index outside tree children nodes"), + }, } } else { self diff --git a/crates/uplc/src/optimize.rs b/crates/uplc/src/optimize.rs index 94608ba1..550a020f 100644 --- a/crates/uplc/src/optimize.rs +++ b/crates/uplc/src/optimize.rs @@ -14,6 +14,7 @@ pub fn aiken_optimize_and_intern(program: Program) -> Program { .inline_reducer() .force_delay_reducer() .cast_data_reducer() + .builtin_eval_reducer() .convert_arithmetic_ops() .builtin_curry_reducer() .lambda_reducer() diff --git a/crates/uplc/src/optimize/shrinker.rs b/crates/uplc/src/optimize/shrinker.rs index a5cdaf8b..288bd9b5 100644 --- a/crates/uplc/src/optimize/shrinker.rs +++ b/crates/uplc/src/optimize/shrinker.rs @@ -9,6 +9,7 @@ use crate::{ ast::{Constant, Data, Name, NamedDeBruijn, Program, Term, Type}, builder::{CONSTR_FIELDS_EXPOSER, CONSTR_INDEX_EXPOSER}, builtins::DefaultFunction, + machine::cost_model::ExBudget, }; use super::interner::CodeGenInterner; @@ -360,7 +361,7 @@ pub enum BuiltinArgs { impl BuiltinArgs { fn args_from_arg_stack(stack: Vec<(usize, Term)>, func: DefaultFunction) -> Self { - let error_safe = func.is_error_safe(&stack.iter().map(|(_, term)| term).collect_vec()); + let error_safe = false; let mut ordered_arg_stack = stack.into_iter().sorted_by(|(_, arg1), (_, arg2)| { // sort by constant first if the builtin is order agnostic @@ -986,6 +987,27 @@ impl Term { } } } + + fn pierce_no_inlines<'a>(&'a self) -> &'a Self { + let mut term = self; + loop { + match term { + Term::Lambda { + parameter_name, + body, + } => { + if parameter_name.as_ref().text == NO_INLINE { + term = body; + } else { + break; + } + } + _ => break, + } + } + + term + } } impl Program { @@ -1708,6 +1730,56 @@ impl Program { step_b } + + pub fn builtin_eval_reducer(self) -> Self { + let mut applied_ids = vec![]; + + self.traverse_uplc_with(false, &mut |id, term, arg_stack, _scope| match term { + Term::Builtin(func) => { + let args = arg_stack + .iter() + .map(|(_, term)| term.pierce_no_inlines()) + .collect_vec(); + if func.can_curry_builtin() + && arg_stack.len() == func.arity() + && func.is_error_safe(&args) + { + let applied_term = + arg_stack + .into_iter() + .fold(Term::Builtin(*func), |acc, item| { + applied_ids.push(item.0); + acc.apply(item.1.pierce_no_inlines().clone()) + }); + + // Check above for is error safe + let eval_term: Term = Program { + version: (1, 0, 0), + term: applied_term, + } + .to_named_debruijn() + .unwrap() + .eval(ExBudget::max()) + .result() + .unwrap() + .try_into() + .unwrap(); + + *term = eval_term; + } + } + Term::Apply { function, .. } => { + let id = id.unwrap(); + + if applied_ids.contains(&id) { + *term = function.as_ref().clone(); + } + } + Term::Constr { .. } => todo!(), + Term::Case { .. } => todo!(), + _ => {} + }) + } } fn id_vec_function_to_var(func_name: &str, id_vec: &[usize]) -> String { diff --git a/examples/acceptance_tests/073/aiken.lock b/examples/acceptance_tests/073/aiken.lock index 2fc372da..94825e81 100644 --- a/examples/acceptance_tests/073/aiken.lock +++ b/examples/acceptance_tests/073/aiken.lock @@ -13,4 +13,4 @@ requirements = [] source = "github" [etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1719353073, nanos_since_epoch = 642619000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] +"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1721828369, nanos_since_epoch = 230591000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] diff --git a/examples/acceptance_tests/077/aiken.lock b/examples/acceptance_tests/077/aiken.lock index a7ec3aa1..1903ef0d 100644 --- a/examples/acceptance_tests/077/aiken.lock +++ b/examples/acceptance_tests/077/aiken.lock @@ -13,4 +13,4 @@ requirements = [] source = "github" [etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1719352929, nanos_since_epoch = 982815000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] +"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1721828402, nanos_since_epoch = 276492000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] diff --git a/examples/acceptance_tests/077/plutus.json b/examples/acceptance_tests/077/plutus.json index 6ffce1f2..c07ddab3 100644 --- a/examples/acceptance_tests/077/plutus.json +++ b/examples/acceptance_tests/077/plutus.json @@ -5,7 +5,7 @@ "plutusVersion": "v2", "compiler": { "name": "Aiken", - "version": "v1.0.29-alpha+e856fc6" + "version": "v1.0.29-alpha+06ac851" } }, "validators": [ @@ -31,8 +31,8 @@ } } ], - "compiledCode": "590347010000323232323232323232323223222323232322533300c323232533300f3007301137540022646464a66602c002020264a66602e603400426464a66602a601a602e6ea803854ccc054c8cc004004018894ccc06c004528099299980c19baf301e301b3754603c00402629444cc00c00c004c07800454ccc054c0300044cdc78010088a5015330164901536578706563740a202020202020202020206c6973742e616e7928696e707574732c20666e28696e70757429207b20696e7075742e6f75747075745f7265666572656e6365203d3d207574786f5f726566207d2900161533016491046275726e0016375a602e0046eb8c054004044c060004c94ccc048c024c050dd50008a5eb7bdb1804dd5980c180a9baa001323233001001323300100137566034603660366036603600a44a666032002297adef6c6013232323253330193372291100002153330193371e9101000021003100513301e337606ea4008dd3000998030030019bab301b003375c6032004603a004603600244a666030002298103d87a800013232323253330183372200e0042a66603066e3c01c0084cdd2a40006603a6e980052f5c02980103d87a8000133006006003375660340066eb8c060008c070008c068004dd7180b980a1baa0033758602c00260246ea800854cc041241236578706563742074782e4d696e7428706f6c6963795f696429203d20707572706f73650016301430150023013001300f37540022930a99806a491856616c696461746f722072657475726e65642066616c7365001365632533300b30030011533300f300e37540082930050a99980598010008a99980798071baa0041498028028c030dd50019b8748008dc3a4000a66666601e002200200c00c00c00c6eb800454cc00d24018f657870656374205b506169722861737365745f6e616d652c20616d6f756e74295d203d0a2020202020206d696e740a20202020202020207c3e2076616c75652e66726f6d5f6d696e7465645f76616c75650a20202020202020207c3e2076616c75652e746f6b656e7328706f6c6963795f6964290a20202020202020207c3e20646963742e746f5f70616972732829001615330024910c72646d723a20416374696f6e00165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "e8c0b6d7c88bce7578f598ed61f172854b78a78c4ec251b45d6da4c4" + "compiledCode": "5901e4010000323232323232323223222323232322533300a323232533300d3007300e37540022646464a6660260022c264a666028602e00426464a666026601a60286ea803854ccc04cc8cc004004018894ccc060004528099299980b19baf301b30183754603600402629444cc00c00c004c06c00454ccc04cc0300044cdc78010088a501616375a60280046eb8c04800458c054004c94ccc040c024c044dd50008a5eb7bdb1804dd5980a98091baa00132323300100132330010013756602e603060306030603000a44a66602c002297adef6c60132323232533301733722910100002153330173371e9101000021003100513301b337606ea4008dd3000998030030019bab3018003375c602c0046034004603000244a66602a002298103d87a800013232323253330163372200e0042a66602c66e3c01c0084cdd2a4000660346e980052f5c02980103d87a80001330060060033756602e0066eb8c054008c064008c05c004dd7180a18089baa00337586026002601e6ea800858c044c048008c040004c030dd50008a4c26cac64a66601260060022a66601860166ea8010526161533300930020011533300c300b37540082930b0b18049baa003370e90011b87480014cccccc030004400458585858dd7000ab9a5573aaae7955cfaba05742ae895d201", + "hash": "41f948bc5dcda5f8813cc42ffde5c8d981f37be1475a5d242d44e2fd" }, { "title": "spend2.backtrace", @@ -48,8 +48,8 @@ "$ref": "#/definitions/Void" } }, - "compiledCode": "5901680100003232323232323232323232232322322533300953330093005300b375464660020026eb0c040c044c044c034dd5180818069baa00222533300f00114c0103d87a800013232533300d4a2266e952000330120024bd70099802002000980980118088008a51153300a4914765787065637420536f6d65285f29203d206c6973742e66696e6428636f6e746578742e7472616e73616374696f6e2e6f7574707574732c20666e285f29207b2054727565207d290016149854cc0292411856616c696461746f722072657475726e65642066616c73650013656533333300f001153330073003300937540022a66601660146ea8004526005005005005005005533333300d002153330053001300737540042a66601260106ea8008526004004004004004004370e90000a99801a4810f5f72656465656d65723a20566f6964001615330024910c5f646174756d3a20566f696400165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "f86c88144df93f3925cf048d1b50615fa95249f063a07242f70a6bd8" + "compiledCode": "58c401000032323232323232322323223225333007533300730053008375464660020026eb0c034c038c038c028dd5180698051baa00222533300c00114c0103d87a800013232533300b4a2266e9520003300f0024bd70099802002000980800118070008a511614984d9594cccccc03000454ccc014c00cc018dd50008a99980418039baa00114985858585858594cccccc02800854ccc00cc004c010dd50010a99980318029baa0021498585858585858dc3a4000ae6955ceaab9e5573eae815d0aba25749", + "hash": "419ffec4259b90352f8fde4cd451f98d01132f6cb7b1c382c9a3e810" } ], "definitions": { From 1001e8337485d4a3db0bbf716d94f4edc0c4f824 Mon Sep 17 00:00:00 2001 From: microproofs Date: Wed, 24 Jul 2024 10:34:29 -0400 Subject: [PATCH 2/3] Updated acceptance test runs --- examples/acceptance_tests/036/aiken.lock | 2 +- examples/acceptance_tests/036/plutus.json | 10 +++++----- examples/acceptance_tests/047/plutus.json | 6 +++--- examples/acceptance_tests/054/aiken.lock | 2 +- examples/acceptance_tests/055/aiken.lock | 2 +- examples/acceptance_tests/061/aiken.lock | 2 +- examples/acceptance_tests/063/aiken.lock | 2 +- examples/acceptance_tests/067/aiken.lock | 2 +- examples/acceptance_tests/068/aiken.lock | 2 +- examples/acceptance_tests/069/aiken.lock | 2 +- examples/acceptance_tests/070/aiken.lock | 2 +- examples/acceptance_tests/071/aiken.lock | 2 +- examples/acceptance_tests/071/plutus.json | 6 +++--- examples/acceptance_tests/072/aiken.lock | 2 +- examples/acceptance_tests/074/aiken.lock | 2 +- examples/acceptance_tests/077/plutus.json | 2 +- examples/acceptance_tests/079/plutus.json | 10 +++++----- examples/acceptance_tests/082/aiken.lock | 2 +- examples/acceptance_tests/083/aiken.lock | 2 +- examples/acceptance_tests/084/aiken.lock | 2 +- examples/acceptance_tests/086/aiken.lock | 2 +- examples/acceptance_tests/086/plutus.json | 6 +++--- examples/acceptance_tests/087/aiken.lock | 2 +- examples/acceptance_tests/088/aiken.lock | 2 +- examples/acceptance_tests/089/aiken.lock | 2 +- examples/acceptance_tests/089/plutus.json | 6 +++--- examples/acceptance_tests/090/plutus.json | 6 +++--- examples/acceptance_tests/096/plutus.json | 6 +++--- examples/acceptance_tests/101/aiken.lock | 4 ++-- examples/acceptance_tests/102/aiken.lock | 2 +- examples/acceptance_tests/104/aiken.lock | 4 ++-- examples/acceptance_tests/104/plutus.json | 6 +++--- 32 files changed, 56 insertions(+), 56 deletions(-) diff --git a/examples/acceptance_tests/036/aiken.lock b/examples/acceptance_tests/036/aiken.lock index c07eb776..2ab9d788 100644 --- a/examples/acceptance_tests/036/aiken.lock +++ b/examples/acceptance_tests/036/aiken.lock @@ -13,4 +13,4 @@ requirements = [] source = "github" [etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1719353062, nanos_since_epoch = 479061000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] +"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1721831083, nanos_since_epoch = 877044000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] diff --git a/examples/acceptance_tests/036/plutus.json b/examples/acceptance_tests/036/plutus.json index 52b5ff9a..3f1ae1af 100644 --- a/examples/acceptance_tests/036/plutus.json +++ b/examples/acceptance_tests/036/plutus.json @@ -5,7 +5,7 @@ "plutusVersion": "v2", "compiler": { "name": "Aiken", - "version": "v1.0.29-alpha+e856fc6" + "version": "v1.0.29-alpha+dfce9c1" } }, "validators": [ @@ -25,8 +25,8 @@ } } ], - "compiledCode": "58e90100003232323232323232323222322533300653330063370e900018041baa3232330010013758600460166ea8c008c02cdd50019129998068008a6103d87a800013232533300b3375e600a601c6ea80080244cdd2a40006602000497ae01330040040013011002300f0012300d00114a22940526153300749011856616c696461746f722072657475726e65642066616c73650013656533333300c001153330043370e900018031baa00115333008300737540022930018018018018018018a998012490f5f72656465656d65723a20566f696400165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "eb7578af9370ca9210a58fbf6a7000c627e7b714cbd30016a12ed270" + "compiledCode": "58ac010000323232323232323222322533300553330053370e900018031baa3232330010013758600460126ea8c008c024dd50019129998058008a6103d87a800013232533300a3375e600a60186ea80080244cdd2a40006601c00497ae0133004004001300f002300d0012300b00114a2294052613656533333300a001153330033370e900018021baa00115333006300537540022930b0b0b0b0b0b2b9a5573aaae7955cfaba05742ae895d201", + "hash": "15d65864d62e97c72afb9cdf856b589e1688fda2dd6f7cfe52722eea" }, { "title": "spend.spend", @@ -42,8 +42,8 @@ "$ref": "#/definitions/Data" } }, - "compiledCode": "590112010000323232323232323222253330043233001001375860166018601860106ea8c02cc020dd50011129998050008a501325333007333007533300b3253330083370e900118051baa00114bd6f7b63009bab300e300b375400264660020026eacc038c03cc02cdd518070019129998068008a60103d87a8000132323232533300d33722911050000000000000021533300d3371e91010500000000000000213374a9000198091ba60014bd700a6103d87a80001330060060033756601e0066eb8c034008c044008c03c0045288a504a094452889980180180098068008a4c2a6600a92011856616c696461746f722072657475726e65642066616c736500136565734ae7155ceaab9e5573eae815d0aba201", - "hash": "874827f25676e53d8d40f1ebb5a69f901c9c79e3797059b3a7bc36b3" + "compiledCode": "58ef01000032323232323232222533300432330010013758601460166016600e6ea8c028c01cdd50011129998048008a501325333007333007533300a3253330083370e900118049baa00114bd6f7b63009bab300d300a375400264660020026eacc034c038c028dd518068019129998060008a60103d87a8000132323232533300d33722911050000000000000021533300d3371e91010500000000000000213374a9000198089ba60014bd700a6103d87a80001330060060033756601c0066eb8c030008c040008c0380045288a504a094452889980180180098060008a4c26cacae6955ceaab9e5573eae815d0aba21", + "hash": "f56561e01063b11146809755d9907147e79d3166aa5c65fba4040fd1" } ], "definitions": { diff --git a/examples/acceptance_tests/047/plutus.json b/examples/acceptance_tests/047/plutus.json index 3246de4b..3dc425ce 100644 --- a/examples/acceptance_tests/047/plutus.json +++ b/examples/acceptance_tests/047/plutus.json @@ -5,7 +5,7 @@ "plutusVersion": "v2", "compiler": { "name": "Aiken", - "version": "v1.0.29-alpha+e856fc6" + "version": "v1.0.29-alpha+dfce9c1" } }, "validators": [ @@ -23,8 +23,8 @@ "$ref": "#/definitions/Void" } }, - "compiledCode": "58c00100003232323232323232232232253330084a22930a99804a491856616c696461746f722072657475726e65642066616c73650013656533333300b001153330063370e900018041baa0011533300a3009375400229300200200200200200229999998048008a99980219b8748000c018dd50008a99980418039baa001149800c00c00c00c00c00c54cc00d2410f5f72656465656d65723a20566f6964001615330024910c5f646174756d3a20566f696400165734ae7155ceaab9e5573eae91", - "hash": "3b52a75a0bb17b0a8abbaef7e73e30a6bde7693dd79715f9d3534b75" + "compiledCode": "586b0100003232323232232232253330064a229309b2b29999998040008a99980219b8748000c014dd50008a99980398031baa00114985858585858594cccccc01800454ccc008cdc3a400060066ea800454ccc014c010dd50008a4c2c2c2c2c2c2cae6955ceaab9e5573eae91", + "hash": "8f0bd54fc440f7d4ced89591d43041666aeccd5903c0755c95d7a070" } ], "definitions": { diff --git a/examples/acceptance_tests/054/aiken.lock b/examples/acceptance_tests/054/aiken.lock index d4ab988c..2f8f2d9e 100644 --- a/examples/acceptance_tests/054/aiken.lock +++ b/examples/acceptance_tests/054/aiken.lock @@ -13,4 +13,4 @@ requirements = [] source = "github" [etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1719353060, nanos_since_epoch = 816466000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] +"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1721831081, nanos_since_epoch = 901928000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] diff --git a/examples/acceptance_tests/055/aiken.lock b/examples/acceptance_tests/055/aiken.lock index 83346c1c..68015323 100644 --- a/examples/acceptance_tests/055/aiken.lock +++ b/examples/acceptance_tests/055/aiken.lock @@ -13,4 +13,4 @@ requirements = [] source = "github" [etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1719353064, nanos_since_epoch = 692755000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] +"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1721831083, nanos_since_epoch = 434512000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] diff --git a/examples/acceptance_tests/061/aiken.lock b/examples/acceptance_tests/061/aiken.lock index 21334132..2f60b64c 100644 --- a/examples/acceptance_tests/061/aiken.lock +++ b/examples/acceptance_tests/061/aiken.lock @@ -13,4 +13,4 @@ requirements = [] source = "github" [etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1719353086, nanos_since_epoch = 153535000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] +"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1721831249, nanos_since_epoch = 124849000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] diff --git a/examples/acceptance_tests/063/aiken.lock b/examples/acceptance_tests/063/aiken.lock index 9ebd5dd3..94c7d6dc 100644 --- a/examples/acceptance_tests/063/aiken.lock +++ b/examples/acceptance_tests/063/aiken.lock @@ -13,4 +13,4 @@ requirements = [] source = "github" [etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1719353064, nanos_since_epoch = 356223000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] +"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1721831084, nanos_since_epoch = 29892000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] diff --git a/examples/acceptance_tests/067/aiken.lock b/examples/acceptance_tests/067/aiken.lock index 40e3ad30..a6c08947 100644 --- a/examples/acceptance_tests/067/aiken.lock +++ b/examples/acceptance_tests/067/aiken.lock @@ -13,4 +13,4 @@ requirements = [] source = "github" [etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1719353090, nanos_since_epoch = 867160000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] +"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1721831251, nanos_since_epoch = 240824000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] diff --git a/examples/acceptance_tests/068/aiken.lock b/examples/acceptance_tests/068/aiken.lock index 78d270ed..87942da2 100644 --- a/examples/acceptance_tests/068/aiken.lock +++ b/examples/acceptance_tests/068/aiken.lock @@ -13,4 +13,4 @@ requirements = [] source = "github" [etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1719353088, nanos_since_epoch = 668124000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] +"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1721831249, nanos_since_epoch = 836798000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] diff --git a/examples/acceptance_tests/069/aiken.lock b/examples/acceptance_tests/069/aiken.lock index b048619f..5bd1421e 100644 --- a/examples/acceptance_tests/069/aiken.lock +++ b/examples/acceptance_tests/069/aiken.lock @@ -13,4 +13,4 @@ requirements = [] source = "github" [etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1719353089, nanos_since_epoch = 828993000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] +"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1721831251, nanos_since_epoch = 15898000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] diff --git a/examples/acceptance_tests/070/aiken.lock b/examples/acceptance_tests/070/aiken.lock index bf9b8330..d15e04a2 100644 --- a/examples/acceptance_tests/070/aiken.lock +++ b/examples/acceptance_tests/070/aiken.lock @@ -13,4 +13,4 @@ requirements = [] source = "github" [etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1719353049, nanos_since_epoch = 385317000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] +"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1721831079, nanos_since_epoch = 22817000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] diff --git a/examples/acceptance_tests/071/aiken.lock b/examples/acceptance_tests/071/aiken.lock index 59e74365..81b61949 100644 --- a/examples/acceptance_tests/071/aiken.lock +++ b/examples/acceptance_tests/071/aiken.lock @@ -13,4 +13,4 @@ requirements = [] source = "github" [etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1719353054, nanos_since_epoch = 415860000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] +"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1721831080, nanos_since_epoch = 166130000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] diff --git a/examples/acceptance_tests/071/plutus.json b/examples/acceptance_tests/071/plutus.json index 41697253..6361949c 100644 --- a/examples/acceptance_tests/071/plutus.json +++ b/examples/acceptance_tests/071/plutus.json @@ -5,7 +5,7 @@ "plutusVersion": "v2", "compiler": { "name": "Aiken", - "version": "v1.0.29-alpha+e856fc6" + "version": "v1.0.29-alpha+dfce9c1" } }, "validators": [ @@ -23,8 +23,8 @@ "$ref": "#/definitions/spend~1PoolRedeemer" } }, - "compiledCode": "5905540100003232323232323232323232323223232323223232322533300f3232325333012300b00114a226464646464a66602e601600c26464a666032601a60366ea80044c8c8c94ccc070c054c078dd500089919299980f180b98101baa0011324a2604860426ea8004074cc01c03c00cc088c07cdd500080d198038068009804244101ff00301f301c37540022940c00cc06cdd5005180e980d1baa007132325333019300d301b37540022646464a666038602a603c6ea80044c8c94ccc078c05cc080dd500089925130243021375400203a6600e01e0066044603e6ea8004068cc01c034004c021220101ff00301f301c37540022940c00cc06cdd5005180e980d1baa00722330053758601260366ea8c024c06cdd5001119baf300a301c3754600860386ea80040088c070c07400488cc00cdd6180e180e980e980c9baa300730193754004466ebcc020c068dd500080111191980080080191299980d8008a6103d87a8000132325333019300500213374a90001980f00125eb804cc010010004c07c008c0740048cdd2a40006603066e95200233018375200297ae0330184c103d87a80004bd7018099baa00130013013375400a4602c0022930a998082491856616c696461746f722072657475726e65642066616c73650013656533300d3006300f3754004264a666024002014264a666026602c004264931929998081804800899299980a800806899299980b180c8010a4c01c64a66666603400201c01c01c26eb4004038c05c004c04cdd50010a9998081802000899299980a800806899299980b180c80109924ca666024601660286ea80044c94ccc05c00403c4c8c94ccc0640040444c94ccc068c0740084c9263300e00301201232533333301e0010120120121375a0020246036002603600464a66666603800220020200200200206032002602a6ea8004038038c94cccccc0680044004038038038038c05c004c04cdd50010a99980819b87480100044c94ccc0540040344c94ccc058c0640084c9265333012300b30143754002264a66602e00201e26464a666032002022264a666034603a004264931980700180900919299999980f00080900900909bad001012301b001301b00232533333301c001100101001001001030190013015375400201c01c64a666666034002200201c01c01c01c602e00260266ea8008030c044dd500080599299999980b8008800805805805805980a00098081baa002009370e900129999998098008800803803803803a999804980118059baa003132533300e00100713232533301000100913232533301200100b13253330133016002132498cc01c014030030c94cccccc05c0040300300304dd6800806180a000980a00119299999980a80080500500509bad00100a3012001301200232533333301300110010080080080083010001300c375400600c44a666014600660186ea80084c94ccc03c00401c4c8c94ccc0440040244c94ccc048c05400852600a32533333301600100a00a00a00a1375c0026026002602600464a66666602800201001001001026eb8004c044004c034dd50010031b87480014cccccc038004400400c00c00c00c54cc01524011672656465656d65723a20506f6f6c52656465656d65720016153300449110646174756d3a20506f6f6c446174756d001615330034913d65787065637420536f6d6528706f6f6c5f6f757470757429203d206765745f6f7574707574286374782c2076616c696461746f725f6164647265737329001615330024913b65787065637420536f6d6528706f6f6c5f696e70757429203d206765745f696e707574286374782c2076616c696461746f725f616464726573732900165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "3ac593e0e8c626918e776b2b4c1d7578719464f516e9f1ac78bcdd22" + "compiledCode": "59043b010000323232323232323223232323223232322533300b323232533300e300b00114a226464646464a666026601600c26464a66602a601a602c6ea80044c8c8c94ccc060c054c064dd500089919299980d180b980d9baa0011324a2603e60386ea800458cc01c03c00cc074c068dd50008b198038068009804244101ff00301a301737540022940c00cc058dd5005180c180a9baa007132325333015300d301637540022646464a666030602a60326ea80044c8c94ccc068c05cc06cdd5000899251301f301c37540022c6600e01e006603a60346ea800458cc01c034004c021220101ff00301a301737540022940c00cc058dd5005180c180a9baa007223300537586012602c6ea8c024c058dd5001119baf300a301737546008602e6ea80040088c05cc06000488cc00cdd6180b980c180c180a1baa300730143754004466ebcc020c054dd500080111191980080080191299980b0008a6103d87a8000132325333015300500213374a90001980c80125eb804cc010010004c068008c0600048cdd2a40006602666e95200233013375200297ae0330134c103d87a80004bd7018071baa0013001300e375400a4602200229309b2b2999804980318051baa002132533300d00116132533300e3011002132498c94ccc030c0240044c94ccc040004584c94ccc044c050008526163253333330150011616161375a0022c6024002601c6ea800854ccc030c0100044c94ccc040004584c94ccc044c0500084c926533300e300b300f3754002264a6660240022c26464a6660280022c264a66602a60300042649318070018b19299999980c8008b0b0b09bad00116301600130160023253333330170011001161616163014001301037540022c2c64a66666602a00220022c2c2c2c6024002601c6ea800854ccc030cdc3a4008002264a6660200022c264a6660226028004264932999807180598079baa0011325333012001161323253330140011613253330153018002132498c03800c58c94cccccc0640045858584dd68008b180b000980b00119299999980b80088008b0b0b0b180a00098081baa00116163253333330150011001161616163012001300e37540042c60186ea800458c94cccccc048004400458585858c03c004c02cdd50010b1b87480094cccccc0380044004585858594ccc014c008c018dd500189929998048008b0991929998058008b0991929998068008b0992999807180880109924c600e00a2c64a6666660240022c2c2c26eb400458c03c004c03c008c94cccccc0400045858584dd68008b1806800980680119299999980700088008b0b0b0b180580098039baa0031625333005300230063754002264a6660120022c26464a6660160022c264a666018601e0042930b1929999998080008b0b0b0b09bae001300d001300d00232533333300e001161616161375c0026016002600e6ea800458dc3a4000a66666601200220022c2c2c2cae6955ceaab9e5573eae815d0aba25749", + "hash": "8a2d8cc51ed80a4345327979cfeaa527b3ccdd361c3a905d59b6df7a" } ], "definitions": { diff --git a/examples/acceptance_tests/072/aiken.lock b/examples/acceptance_tests/072/aiken.lock index f264ff16..3bb5d864 100644 --- a/examples/acceptance_tests/072/aiken.lock +++ b/examples/acceptance_tests/072/aiken.lock @@ -13,4 +13,4 @@ requirements = [] source = "github" [etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1719353079, nanos_since_epoch = 869301000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] +"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1721831095, nanos_since_epoch = 72131000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] diff --git a/examples/acceptance_tests/074/aiken.lock b/examples/acceptance_tests/074/aiken.lock index b07c4779..28ecc7e8 100644 --- a/examples/acceptance_tests/074/aiken.lock +++ b/examples/acceptance_tests/074/aiken.lock @@ -13,4 +13,4 @@ requirements = [] source = "github" [etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1719353074, nanos_since_epoch = 601697000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] +"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1721831093, nanos_since_epoch = 975977000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] diff --git a/examples/acceptance_tests/077/plutus.json b/examples/acceptance_tests/077/plutus.json index c07ddab3..119d3a86 100644 --- a/examples/acceptance_tests/077/plutus.json +++ b/examples/acceptance_tests/077/plutus.json @@ -5,7 +5,7 @@ "plutusVersion": "v2", "compiler": { "name": "Aiken", - "version": "v1.0.29-alpha+06ac851" + "version": "v1.0.29-alpha+dfce9c1" } }, "validators": [ diff --git a/examples/acceptance_tests/079/plutus.json b/examples/acceptance_tests/079/plutus.json index 696c7c96..4ef1b619 100644 --- a/examples/acceptance_tests/079/plutus.json +++ b/examples/acceptance_tests/079/plutus.json @@ -5,7 +5,7 @@ "plutusVersion": "v2", "compiler": { "name": "Aiken", - "version": "v1.0.29-alpha+e856fc6" + "version": "v1.0.29-alpha+dfce9c1" } }, "validators": [ @@ -23,8 +23,8 @@ "$ref": "#/definitions/RedeemerWrapper$Int" } }, - "compiledCode": "5901e401000032323232323232322232533333300b002153330063370e900018041baa002153300749011c52756e6e696e672032206172672076616c696461746f72206d696e7400153330063370ea66666601600600800800826eb400c0112054149854cc01d2411856616c696461746f722072657475726e65642066616c73650013656153300749011d52756e6e696e672033206172672076616c696461746f72207370656e640013322322533300a3370e66e000100092054149854cc02d24011856616c696461746f722072657475726e65642066616c73650013656533333300d0010060060061375a00200ca66666601600600a00a00a26eb400c014c028c024dd50010a998038008b0a998038008b0a998038008b0a998038008b24991496e636f72726563742072656465656d6572207479706520666f722076616c696461746f72207370656e642e0a2020202020202020202020202020202020202020446f75626c6520636865636b20796f7520686176652077726170706564207468652072656465656d657220747970652061732073706563696669656420696e20796f757220706c757475732e6a736f6e0015330034910d72656465656d65723a20496e74001615330024910a646174756d3a20496e7400165734ae7155ceaab9e5742ae901", - "hash": "e2a34772b7901ffaed1c3d4bdf61bf613f028921738ec4b79329b105" + "compiledCode": "587701000032323232322253330033370e900018021baa001153330033370ea66666600e0042c2c2c26eb400859205414984d9584cc88c894ccc01ccdc399b80004002481505261365653333330090011616161375a0022ca66666600e0042c2c2c26eb400858c018c014dd5000ab9a5573aaae795d0aba401", + "hash": "1d65dca71cdfcfa33cd73184d7efd45b36f8cdaddd2a530972ed2445" }, { "title": "foo.mint", @@ -34,8 +34,8 @@ "$ref": "#/definitions/Int" } }, - "compiledCode": "5901e401000032323232323232322232533333300b002153330063370e900018041baa002153300749011c52756e6e696e672032206172672076616c696461746f72206d696e7400153330063370ea66666601600600800800826eb400c0112054149854cc01d2411856616c696461746f722072657475726e65642066616c73650013656153300749011d52756e6e696e672033206172672076616c696461746f72207370656e640013322322533300a3370e66e000100092054149854cc02d24011856616c696461746f722072657475726e65642066616c73650013656533333300d0010060060061375a00200ca66666601600600a00a00a26eb400c014c028c024dd50010a998038008b0a998038008b0a998038008b0a998038008b24991496e636f72726563742072656465656d6572207479706520666f722076616c696461746f72207370656e642e0a2020202020202020202020202020202020202020446f75626c6520636865636b20796f7520686176652077726170706564207468652072656465656d657220747970652061732073706563696669656420696e20796f757220706c757475732e6a736f6e0015330034910d72656465656d65723a20496e74001615330024910a646174756d3a20496e7400165734ae7155ceaab9e5742ae901", - "hash": "e2a34772b7901ffaed1c3d4bdf61bf613f028921738ec4b79329b105" + "compiledCode": "587701000032323232322253330033370e900018021baa001153330033370ea66666600e0042c2c2c26eb400859205414984d9584cc88c894ccc01ccdc399b80004002481505261365653333330090011616161375a0022ca66666600e0042c2c2c26eb400858c018c014dd5000ab9a5573aaae795d0aba401", + "hash": "1d65dca71cdfcfa33cd73184d7efd45b36f8cdaddd2a530972ed2445" } ], "definitions": { diff --git a/examples/acceptance_tests/082/aiken.lock b/examples/acceptance_tests/082/aiken.lock index 23cb9fdc..709c2601 100644 --- a/examples/acceptance_tests/082/aiken.lock +++ b/examples/acceptance_tests/082/aiken.lock @@ -13,4 +13,4 @@ requirements = [] source = "github" [etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1719353055, nanos_since_epoch = 72091000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] +"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1721831080, nanos_since_epoch = 128414000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] diff --git a/examples/acceptance_tests/083/aiken.lock b/examples/acceptance_tests/083/aiken.lock index d50c6bc9..30ceaf10 100644 --- a/examples/acceptance_tests/083/aiken.lock +++ b/examples/acceptance_tests/083/aiken.lock @@ -13,4 +13,4 @@ requirements = [] source = "github" [etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1719353049, nanos_since_epoch = 708406000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] +"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1721831078, nanos_since_epoch = 14872000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] diff --git a/examples/acceptance_tests/084/aiken.lock b/examples/acceptance_tests/084/aiken.lock index fabfcab5..0e437185 100644 --- a/examples/acceptance_tests/084/aiken.lock +++ b/examples/acceptance_tests/084/aiken.lock @@ -13,4 +13,4 @@ requirements = [] source = "github" [etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1719353048, nanos_since_epoch = 606702000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] +"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1721831078, nanos_since_epoch = 395639000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] diff --git a/examples/acceptance_tests/086/aiken.lock b/examples/acceptance_tests/086/aiken.lock index dbe22577..eab7b752 100644 --- a/examples/acceptance_tests/086/aiken.lock +++ b/examples/acceptance_tests/086/aiken.lock @@ -13,4 +13,4 @@ requirements = [] source = "github" [etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1719353080, nanos_since_epoch = 562940000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] +"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1721831095, nanos_since_epoch = 72101000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] diff --git a/examples/acceptance_tests/086/plutus.json b/examples/acceptance_tests/086/plutus.json index 2bb90584..2f2ca1be 100644 --- a/examples/acceptance_tests/086/plutus.json +++ b/examples/acceptance_tests/086/plutus.json @@ -5,7 +5,7 @@ "plutusVersion": "v2", "compiler": { "name": "Aiken", - "version": "v1.0.29-alpha+e856fc6" + "version": "v1.0.29-alpha+dfce9c1" } }, "validators": [ @@ -23,8 +23,8 @@ "$ref": "#/definitions/Data" } }, - "compiledCode": "590341010000323232323232323232222533300532323253330083002300a3754601a60166ea800c5288a50323253330093003300b3754008264a66601c002012264a66601e602200426493192999806180300089929998088008060992999809180a00109924ca66601c601060206ea80044c94ccc04c0040384c94ccc050c0580084c9265333010300a30123754002264a66602a00202026464a66602e002024264a6660306034004264649319299980b1808000899299980d80080b099299980e180f00109924c64a6660326026002264a66603c002032264a66603e6042004264931980980080d00d192999999811000880080d00d00d00d180f800980e1baa002153330193012001132533301e00101913232533302000101b13232533302200101d132533302330250021498078c94cccccc0980040780780784dd680080f1811800981180119299999981200080e00e00e09bad00101c3021001302100232533333302200101a01a01a1375a002034603e00260386ea8008060c068dd500080b99299999980f800880080b80b80b80b980e000980c9baa00315333016300f0011533301a3019375400629300a80a980b9baa0023300c00301301332533333301b001100101301301301330180013018002325333333019001100101101101101130160013013375400201e01e64a66666602e002200201e01e01e01e602800260226ea8004034034c94cccccc0540044004034034034034c048004c03cdd50010a99980618028008a99980818079baa002149802c02cc034dd50008051929999998090008800805005005005180780098061baa0040082232533300b3005001132533301000100b132533301130130021498030c94cccccc0500040300300300304dd7000980880098071baa0031533300b3004001132533301000100b132533301130130021498030c94cccccc0500040300300300304dd7000980880098071baa00300a300c37540046e1d2002370e9000299999980600188018020020020020a4c2a6600c9211856616c696461746f722072657475726e65642066616c73650013656153300249012365787065637420646174756d3a2054657374446174756d203d207261775f646174756d00165734ae7155ceaab9e5573eae855d12ba41", - "hash": "4ab81bc59370bdc62dc58c35c91f0e6703a4c4b3b9cd1e76c8ded83b" + "compiledCode": "5902c50100003232323232323222253330043232325333007300230083754601660126ea800c5288a5032325333008300330093754008264a6660180022c264a66601a601e00426493192999805980300089929998078008b0992999808180900109924ca66601a6010601c6ea80044c94ccc044004584c94ccc048c0500084c926533300f300a30103754002264a6660260022c26464a66602a0022c264a66602c6030004264649319299980a9808000899299980c8008b099299980d180e00109924c64a6660306026002264a6660380022c264a66603a603e0042649318098008b19299999981000088008b0b0b0b180e800980d1baa002153330183012001132533301c0011613232533301e001161323253330200011613253330213023002149858c94cccccc0900045858584dd68008b181080098108011929999998110008b0b0b09bad00116301f001301f0023253333330200011616161375a0022c603a00260346ea800858c060dd50008b19299999980e80088008b0b0b0b180d000980b9baa00315333015300f00115333018301737540062930b0b180a9baa002300c00316325333333019001100116161616301600130160023253333330170011001161616163014001301137540022c2c64a66666602a00220022c2c2c2c6024002601e6ea80045858c94cccccc04c004400458585858c040004c034dd50010a99980598028008a99980718069baa00214985858c02cdd50008b19299999980800088008b0b0b0b180680098051baa0041623253330093004001132533300d00116132533300e3010002149858c94cccccc044004585858584dd7000980700098059baa002153330093003001132533300d00116132533300e3010002149858c94cccccc044004585858584dd7000980700098059baa00216300937540026e1d2002370e9000299999980500188018b0b0b0b0a4c26cacae6955ceaab9e5573eae855d12ba41", + "hash": "a1de9567e5106b03e8d8918c356902caa66c196db9f515be2b3eb9ee" } ], "definitions": { diff --git a/examples/acceptance_tests/087/aiken.lock b/examples/acceptance_tests/087/aiken.lock index 1b5035bf..4086ddbb 100644 --- a/examples/acceptance_tests/087/aiken.lock +++ b/examples/acceptance_tests/087/aiken.lock @@ -13,4 +13,4 @@ requirements = [] source = "github" [etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1719353073, nanos_since_epoch = 614646000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] +"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1721831087, nanos_since_epoch = 901025000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] diff --git a/examples/acceptance_tests/088/aiken.lock b/examples/acceptance_tests/088/aiken.lock index 34124322..f447f80f 100644 --- a/examples/acceptance_tests/088/aiken.lock +++ b/examples/acceptance_tests/088/aiken.lock @@ -13,4 +13,4 @@ requirements = [] source = "github" [etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1719353080, nanos_since_epoch = 542677000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] +"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1721831095, nanos_since_epoch = 812343000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] diff --git a/examples/acceptance_tests/089/aiken.lock b/examples/acceptance_tests/089/aiken.lock index 93925f56..be68ecb9 100644 --- a/examples/acceptance_tests/089/aiken.lock +++ b/examples/acceptance_tests/089/aiken.lock @@ -13,4 +13,4 @@ requirements = [] source = "github" [etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1719353072, nanos_since_epoch = 273966000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] +"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1721831088, nanos_since_epoch = 549014000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] diff --git a/examples/acceptance_tests/089/plutus.json b/examples/acceptance_tests/089/plutus.json index c82a4c65..532574a1 100644 --- a/examples/acceptance_tests/089/plutus.json +++ b/examples/acceptance_tests/089/plutus.json @@ -5,7 +5,7 @@ "plutusVersion": "v2", "compiler": { "name": "Aiken", - "version": "v1.0.29-alpha+e856fc6" + "version": "v1.0.29-alpha+dfce9c1" } }, "validators": [ @@ -25,8 +25,8 @@ } } ], - "compiledCode": "5901ac0100003232323232323232323222323225333007323253330093005300b3754601e602000426464a666016600e601a6ea8cc00400c8cdd7980198079baa00100a1533300b3007300d375466002006466ebcc00cc03cdd50008050a5114a02a660189215f65787065637420536f6d65285f696e70757429203d0a2020202020206c6973742e66696e6428696e707574732c20666e28696e70757429207b20696e7075742e6f75747075745f7265666572656e6365203d3d207574786f5f726566207d29001622323300100100322533301200114c0103d87a8000132325333010300500213374a90001980a80125eb804cc010010004c058008c0500048c04000454cc029240121657870656374204d696e74285f706f6c6963795f696429203d20707572706f736500163758601c60166ea8c038004c028dd50008a4c2a6601092011856616c696461746f722072657475726e65642066616c73650013656533333300d002153330053001300737540042a66601260106ea8008526004004004004004004370e90000a998012481085f723a20566f696400165734ae7155ceaab9e5573eae815d0aba257481", - "hash": "befc649df2b68f298c49e4cff0e9649e2ccf2cfc1665be4c507f15d6" + "compiledCode": "58e601000032323232323232322232322533300632325333008300530093754601a601c00426464a666014600e60166ea8cc00400c8cdd7980198069baa00100a1533300a3007300b375466002006466ebcc00cc034dd50008050a5114a02c44646600200200644a6660200022980103d87a800013232533300f300500213374a90001980980125eb804cc010010004c050008c0480048c03800458dd6180618049baa300c0013008375400229309b2b29999998058010a999802180098029baa00215333007300637540042930b0b0b0b0b0b1b87480015cd2ab9d5573caae7d5d02ba15744ae91", + "hash": "8056b66edabd51b446ba2d53056ca02dad2887337d07a454167832ae" } ], "definitions": { diff --git a/examples/acceptance_tests/090/plutus.json b/examples/acceptance_tests/090/plutus.json index 2f0cb61e..cda60f8e 100644 --- a/examples/acceptance_tests/090/plutus.json +++ b/examples/acceptance_tests/090/plutus.json @@ -5,7 +5,7 @@ "plutusVersion": "v2", "compiler": { "name": "Aiken", - "version": "v1.0.29-alpha+e856fc6" + "version": "v1.0.29-alpha+dfce9c1" } }, "validators": [ @@ -23,8 +23,8 @@ "$ref": "#/definitions/Data" } }, - "compiledCode": "5884010000323232322322253330063370e00690487777c9cfdde5c8f27bf4c1637fc55b5eeef7d8c4d9e0d4454967ff7d6e7ee6e242eb60c6318a4c2a6600e9211856616c696461746f722072657475726e65642066616c7365001365653333330050010020020021375a0020042a660049210a646174756d3a20496e7400165734ae715d21", - "hash": "7fb7ba29b94d55ef2cb11efc85ec3e85ce32f092c41743b2cb8a6e08" + "compiledCode": "584d01000032322322253330053370e00690487777c9cfdde5c8f27bf4c1637fc55b5eeef7d8c4d9e0d4454967ff7d6e7ee6e242eb60c6318a4c26caca6666660060022c2c2c26eb4004595cd2ba41", + "hash": "120810ff95afdddf5d16b151eab83312bfafda68c8e30f85bd9c914e" } ], "definitions": { diff --git a/examples/acceptance_tests/096/plutus.json b/examples/acceptance_tests/096/plutus.json index 16acc0b0..3215ec87 100644 --- a/examples/acceptance_tests/096/plutus.json +++ b/examples/acceptance_tests/096/plutus.json @@ -6,7 +6,7 @@ "plutusVersion": "v2", "compiler": { "name": "Aiken", - "version": "v1.0.29-alpha+e856fc6" + "version": "v1.0.29-alpha+dfce9c1" }, "license": "Apache-2.0" }, @@ -25,8 +25,8 @@ "$ref": "#/definitions/Data" } }, - "compiledCode": "585e0100003232222533300453330043375e004006266e3d22010b68656c6c6f20776f726c640048810b68656c6c6f20776f726c640014a02930a99802a4811856616c696461746f722072657475726e65642066616c736500136565734ae701", - "hash": "7dfcec1b2545d65c610e85bc608458efc30b94ebb6171bb5f2759a45" + "compiledCode": "581c01000032222533300453330043375e00400629445280a4c26cacae69", + "hash": "8be8ae44ae022691acf356eae743ba402b8b7918f1e54092367ae0b7" } ], "definitions": { diff --git a/examples/acceptance_tests/101/aiken.lock b/examples/acceptance_tests/101/aiken.lock index e2436fe5..c8fd833c 100644 --- a/examples/acceptance_tests/101/aiken.lock +++ b/examples/acceptance_tests/101/aiken.lock @@ -24,5 +24,5 @@ requirements = [] source = "github" [etags] -"aiken-lang/fuzz@main" = [{ secs_since_epoch = 1719353072, nanos_since_epoch = 396481000 }, "a8294651f1577c671d580c99c9bc5445ef1fd44e4aa3dde550434a4cbc8d50b6"] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1719353072, nanos_since_epoch = 284242000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] +"aiken-lang/fuzz@main" = [{ secs_since_epoch = 1721831088, nanos_since_epoch = 511891000 }, "a8294651f1577c671d580c99c9bc5445ef1fd44e4aa3dde550434a4cbc8d50b6"] +"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1721831088, nanos_since_epoch = 438426000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] diff --git a/examples/acceptance_tests/102/aiken.lock b/examples/acceptance_tests/102/aiken.lock index e4e08a77..04179b18 100644 --- a/examples/acceptance_tests/102/aiken.lock +++ b/examples/acceptance_tests/102/aiken.lock @@ -13,4 +13,4 @@ requirements = [] source = "github" [etags] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1719353045, nanos_since_epoch = 658069000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] +"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1721831077, nanos_since_epoch = 252706000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] diff --git a/examples/acceptance_tests/104/aiken.lock b/examples/acceptance_tests/104/aiken.lock index 86eb2ab3..2977de4c 100644 --- a/examples/acceptance_tests/104/aiken.lock +++ b/examples/acceptance_tests/104/aiken.lock @@ -24,5 +24,5 @@ requirements = [] source = "github" [etags] -"aiken-lang/fuzz@main" = [{ secs_since_epoch = 1719353045, nanos_since_epoch = 907622000 }, "a8294651f1577c671d580c99c9bc5445ef1fd44e4aa3dde550434a4cbc8d50b6"] -"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1719353045, nanos_since_epoch = 657299000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] +"aiken-lang/fuzz@main" = [{ secs_since_epoch = 1721831077, nanos_since_epoch = 488991000 }, "a8294651f1577c671d580c99c9bc5445ef1fd44e4aa3dde550434a4cbc8d50b6"] +"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1721831077, nanos_since_epoch = 254488000 }, "a746f5b5cd3c2ca5dc19c43bcfc64230c546fafea2ba5f8e340c227b85886078"] diff --git a/examples/acceptance_tests/104/plutus.json b/examples/acceptance_tests/104/plutus.json index 9e6f61bc..80c4a515 100644 --- a/examples/acceptance_tests/104/plutus.json +++ b/examples/acceptance_tests/104/plutus.json @@ -6,7 +6,7 @@ "plutusVersion": "v2", "compiler": { "name": "Aiken", - "version": "v1.0.29-alpha+e856fc6" + "version": "v1.0.29-alpha+dfce9c1" }, "license": "Apache-2.0" }, @@ -27,8 +27,8 @@ } } ], - "compiledCode": "58460100003232323222253330043370e6eb4c01cc018dd5001a40042930a99802a4811856616c696461746f722072657475726e65642066616c736500136565734ae7155cf2ba11", - "hash": "0f3b69fc2e974a443d2e09c6bb99985d83e905a74db65f78c0da2191" + "compiledCode": "582401000032323222253330043370e6eb4c018c014dd5001a400429309b2b2b9a5573cae841", + "hash": "047dafbc61fb4a550a28398bde3680c48ff2000cf1022efc883124cd" } ], "definitions": { From c286ada08d824bf8f9465bf25ece62cf22f43cc8 Mon Sep 17 00:00:00 2001 From: microproofs Date: Wed, 24 Jul 2024 11:29:55 -0400 Subject: [PATCH 3/3] clippy fix --- benchmarks/plutus.json | 2 +- crates/uplc/src/optimize/shrinker.rs | 25 +++++++++++-------------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/benchmarks/plutus.json b/benchmarks/plutus.json index 5c4319e1..67b69be3 100644 --- a/benchmarks/plutus.json +++ b/benchmarks/plutus.json @@ -6,7 +6,7 @@ "plutusVersion": "v2", "compiler": { "name": "Aiken", - "version": "v1.0.21-alpha+4b04517" + "version": "v1.0.29-alpha+dfce9c1" }, "license": "Apache-2.0" }, diff --git a/crates/uplc/src/optimize/shrinker.rs b/crates/uplc/src/optimize/shrinker.rs index 288bd9b5..fe042bce 100644 --- a/crates/uplc/src/optimize/shrinker.rs +++ b/crates/uplc/src/optimize/shrinker.rs @@ -988,21 +988,18 @@ impl Term { } } - fn pierce_no_inlines<'a>(&'a self) -> &'a Self { + fn pierce_no_inlines(&self) -> &Self { let mut term = self; - loop { - match term { - Term::Lambda { - parameter_name, - body, - } => { - if parameter_name.as_ref().text == NO_INLINE { - term = body; - } else { - break; - } - } - _ => break, + + while let Term::Lambda { + parameter_name, + body, + } = term + { + if parameter_name.as_ref().text == NO_INLINE { + term = body; + } else { + break; } }