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

feat: Sync from noir #6138

Merged
merged 33 commits into from
May 1, 2024
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
ee35080
[1 changes] fix: Require for all foldable functions to use distinct r…
AztecBot May 1, 2024
4798f16
chore: standard changes
TomAFrench May 1, 2024
b9fd923
Merge branch 'master' into sync-noir
TomAFrench May 1, 2024
2438b0c
chore: fix merge issues
TomAFrench May 1, 2024
27766c0
chore: remove usage of `distinct`
TomAFrench May 1, 2024
99cfa7b
chore: clippy
TomAFrench May 1, 2024
9b93613
Update noir-projects/noir-protocol-circuits/crates/parity-root/src/ma…
vezenovm May 1, 2024
7d9968c
Update noir-projects/noir-protocol-circuits/crates/private-kernel-ini…
vezenovm May 1, 2024
e7e01ec
Update noir-projects/noir-protocol-circuits/crates/private-kernel-ini…
vezenovm May 1, 2024
785ed22
Update noir-projects/noir-protocol-circuits/crates/private-kernel-inn…
vezenovm May 1, 2024
1af66e3
Update noir-projects/noir-protocol-circuits/crates/private-kernel-inn…
vezenovm May 1, 2024
d0c03e0
Update noir-projects/noir-protocol-circuits/crates/public-kernel-setu…
vezenovm May 1, 2024
1bda160
Update noir-projects/noir-protocol-circuits/crates/public-kernel-tail…
vezenovm May 1, 2024
ecc4a50
Update noir-projects/noir-protocol-circuits/crates/public-kernel-tail…
vezenovm May 1, 2024
1fd1367
Update noir-projects/noir-protocol-circuits/crates/public-kernel-tear…
vezenovm May 1, 2024
5465355
Update noir-projects/noir-protocol-circuits/crates/public-kernel-tear…
vezenovm May 1, 2024
5e6f867
Update noir-projects/noir-protocol-circuits/crates/private-kernel-tai…
vezenovm May 1, 2024
2c460be
Update noir-projects/noir-protocol-circuits/crates/private-kernel-tai…
vezenovm May 1, 2024
7b4b41a
Update noir-projects/noir-protocol-circuits/crates/private-kernel-tai…
vezenovm May 1, 2024
bf17347
Update noir-projects/noir-protocol-circuits/crates/private-kernel-tai…
vezenovm May 1, 2024
527bb03
Update noir-projects/noir-protocol-circuits/crates/public-kernel-app-…
vezenovm May 1, 2024
16fd256
Update noir-projects/noir-protocol-circuits/crates/public-kernel-app-…
vezenovm May 1, 2024
d9e5a3b
Update noir-projects/noir-protocol-circuits/crates/public-kernel-setu…
vezenovm May 1, 2024
de20d56
fixup avm-transpiler opcode checks
vezenovm May 1, 2024
d31807e
filter out generate unique return witness on brillig funcs
vezenovm May 1, 2024
79cdb6e
clippy on noir
vezenovm May 1, 2024
6adf62d
Merge branch 'master' into sync-noir
vezenovm May 1, 2024
b56778a
move opcodes len check before match
vezenovm May 1, 2024
5428e6e
remove bad .
vezenovm May 1, 2024
b6ee6a5
Merge remote-tracking branch 'origin/sync-noir' into sync-noir
vezenovm May 1, 2024
fe85b27
chore: increase timeout
TomAFrench May 1, 2024
f340063
temp skip witness_compression test, it breaks with prove_then_verify_…
vezenovm May 1, 2024
f6fdd1e
Merge remote-tracking branch 'origin/sync-noir' into sync-noir
vezenovm May 1, 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
2 changes: 1 addition & 1 deletion .noir-sync-commit
Original file line number Diff line number Diff line change
@@ -1 +1 @@
8aad2e45acbe08afc3902db95a83324f822c35eb
d4c68066ab35ce1c52510cf0c038fb627a0677c3
Original file line number Diff line number Diff line change
Expand Up @@ -306,7 +306,7 @@ contract DocsExample {
b: Field // The actual return type of our circuit is the PrivateCircuitPublicInputs struct, this will be the
// input to our kernel!
// docs:start:context-example-return
) -> distinct pub PrivateCircuitPublicInputs {
) -> pub PrivateCircuitPublicInputs {
// docs:end:context-example-return
// ************************************************************
// The hasher is a structure used to generate a hash of the circuits inputs.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use dep::parity_lib::{BaseParityInputs, ParityPublicInputs};

#[recursive]
fn main(inputs: BaseParityInputs) -> distinct pub ParityPublicInputs {
fn main(inputs: BaseParityInputs) -> pub ParityPublicInputs {
inputs.base_parity_circuit()
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use dep::parity_lib::{RootParityInputs, ParityPublicInputs};

#[recursive]
fn main(inputs: RootParityInputs) -> distinct pub ParityPublicInputs {
fn main(inputs: RootParityInputs) -> ParityPublicInputs {
vezenovm marked this conversation as resolved.
Show resolved Hide resolved
inputs.root_parity_circuit()
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use dep::private_kernel_lib::PrivateKernelInitCircuitPrivateInputs;
use dep::types::PrivateKernelCircuitPublicInputs;

unconstrained fn main(input: PrivateKernelInitCircuitPrivateInputs) -> distinct pub PrivateKernelCircuitPublicInputs {
unconstrained fn main(input: PrivateKernelInitCircuitPrivateInputs) -> PrivateKernelCircuitPublicInputs {
vezenovm marked this conversation as resolved.
Show resolved Hide resolved
input.native_private_kernel_circuit_initial()
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use dep::private_kernel_lib::PrivateKernelInitCircuitPrivateInputs;
use dep::types::PrivateKernelCircuitPublicInputs;

fn main(input: PrivateKernelInitCircuitPrivateInputs) -> distinct pub PrivateKernelCircuitPublicInputs {
fn main(input: PrivateKernelInitCircuitPrivateInputs) -> PrivateKernelCircuitPublicInputs {
vezenovm marked this conversation as resolved.
Show resolved Hide resolved
input.native_private_kernel_circuit_initial()
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use dep::private_kernel_lib::PrivateKernelInnerCircuitPrivateInputs;
use dep::types::PrivateKernelCircuitPublicInputs;

unconstrained fn main(input: PrivateKernelInnerCircuitPrivateInputs) -> distinct pub PrivateKernelCircuitPublicInputs {
unconstrained fn main(input: PrivateKernelInnerCircuitPrivateInputs) -> PrivateKernelCircuitPublicInputs {
vezenovm marked this conversation as resolved.
Show resolved Hide resolved
input.native_private_kernel_circuit_inner()
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use dep::private_kernel_lib::PrivateKernelInnerCircuitPrivateInputs;
use dep::types::PrivateKernelCircuitPublicInputs;

fn main(input: PrivateKernelInnerCircuitPrivateInputs) -> distinct pub PrivateKernelCircuitPublicInputs {
fn main(input: PrivateKernelInnerCircuitPrivateInputs) -> PrivateKernelCircuitPublicInputs {
vezenovm marked this conversation as resolved.
Show resolved Hide resolved
input.native_private_kernel_circuit_inner()
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use dep::private_kernel_lib::PrivateKernelTailCircuitPrivateInputs;
use dep::types::KernelCircuitPublicInputs;

unconstrained fn main(input: PrivateKernelTailCircuitPrivateInputs) -> distinct pub KernelCircuitPublicInputs {
unconstrained fn main(input: PrivateKernelTailCircuitPrivateInputs) -> KernelCircuitPublicInputs {
vezenovm marked this conversation as resolved.
Show resolved Hide resolved
input.native_private_kernel_circuit_tail()
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use dep::private_kernel_lib::PrivateKernelTailToPublicCircuitPrivateInputs;
use dep::types::PublicKernelCircuitPublicInputs;

unconstrained fn main(input: PrivateKernelTailToPublicCircuitPrivateInputs) -> distinct pub PublicKernelCircuitPublicInputs {
unconstrained fn main(input: PrivateKernelTailToPublicCircuitPrivateInputs) -> PublicKernelCircuitPublicInputs {
vezenovm marked this conversation as resolved.
Show resolved Hide resolved
input.execute()
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use dep::private_kernel_lib::PrivateKernelTailToPublicCircuitPrivateInputs;
use dep::types::PublicKernelCircuitPublicInputs;

fn main(input: PrivateKernelTailToPublicCircuitPrivateInputs) -> distinct pub PublicKernelCircuitPublicInputs {
fn main(input: PrivateKernelTailToPublicCircuitPrivateInputs) -> PublicKernelCircuitPublicInputs {
vezenovm marked this conversation as resolved.
Show resolved Hide resolved
input.execute()
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use dep::private_kernel_lib::PrivateKernelTailCircuitPrivateInputs;
use dep::types::KernelCircuitPublicInputs;

fn main(input: PrivateKernelTailCircuitPrivateInputs) -> distinct pub KernelCircuitPublicInputs {
fn main(input: PrivateKernelTailCircuitPrivateInputs) -> KernelCircuitPublicInputs {
vezenovm marked this conversation as resolved.
Show resolved Hide resolved
input.native_private_kernel_circuit_tail()
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use dep::public_kernel_lib::PublicKernelAppLogicCircuitPrivateInputs;
use dep::types::PublicKernelCircuitPublicInputs;

unconstrained fn main(input: PublicKernelAppLogicCircuitPrivateInputs) -> distinct pub PublicKernelCircuitPublicInputs {
unconstrained fn main(input: PublicKernelAppLogicCircuitPrivateInputs) -> PublicKernelCircuitPublicInputs {
vezenovm marked this conversation as resolved.
Show resolved Hide resolved
input.public_kernel_app_logic()
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use dep::public_kernel_lib::PublicKernelAppLogicCircuitPrivateInputs;
use dep::types::PublicKernelCircuitPublicInputs;

fn main(input: PublicKernelAppLogicCircuitPrivateInputs) -> distinct pub PublicKernelCircuitPublicInputs {
fn main(input: PublicKernelAppLogicCircuitPrivateInputs) -> PublicKernelCircuitPublicInputs {
vezenovm marked this conversation as resolved.
Show resolved Hide resolved
input.public_kernel_app_logic()
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use dep::public_kernel_lib::PublicKernelSetupCircuitPrivateInputs;
use dep::types::PublicKernelCircuitPublicInputs;

unconstrained fn main(input: PublicKernelSetupCircuitPrivateInputs) -> distinct pub PublicKernelCircuitPublicInputs {
unconstrained fn main(input: PublicKernelSetupCircuitPrivateInputs) -> PublicKernelCircuitPublicInputs {
vezenovm marked this conversation as resolved.
Show resolved Hide resolved
input.public_kernel_setup()
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use dep::public_kernel_lib::PublicKernelSetupCircuitPrivateInputs;
use dep::types::PublicKernelCircuitPublicInputs;

fn main(input: PublicKernelSetupCircuitPrivateInputs) -> distinct pub PublicKernelCircuitPublicInputs {
fn main(input: PublicKernelSetupCircuitPrivateInputs) -> PublicKernelCircuitPublicInputs {
vezenovm marked this conversation as resolved.
Show resolved Hide resolved
input.public_kernel_setup()
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use dep::public_kernel_lib::PublicKernelTailCircuitPrivateInputs;
use dep::types::KernelCircuitPublicInputs;

unconstrained fn main(input: PublicKernelTailCircuitPrivateInputs) -> distinct pub KernelCircuitPublicInputs {
unconstrained fn main(input: PublicKernelTailCircuitPrivateInputs) -> KernelCircuitPublicInputs {
vezenovm marked this conversation as resolved.
Show resolved Hide resolved
input.public_kernel_tail()
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use dep::public_kernel_lib::PublicKernelTailCircuitPrivateInputs;
use dep::types::KernelCircuitPublicInputs;

fn main(input: PublicKernelTailCircuitPrivateInputs) -> distinct pub KernelCircuitPublicInputs {
fn main(input: PublicKernelTailCircuitPrivateInputs) -> KernelCircuitPublicInputs {
vezenovm marked this conversation as resolved.
Show resolved Hide resolved
input.public_kernel_tail()
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use dep::public_kernel_lib::PublicKernelTeardownCircuitPrivateInputs;
use dep::types::PublicKernelCircuitPublicInputs;

unconstrained fn main(input: PublicKernelTeardownCircuitPrivateInputs) -> distinct pub PublicKernelCircuitPublicInputs {
unconstrained fn main(input: PublicKernelTeardownCircuitPrivateInputs) -> PublicKernelCircuitPublicInputs {
vezenovm marked this conversation as resolved.
Show resolved Hide resolved
input.public_kernel_teardown()
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use dep::public_kernel_lib::PublicKernelTeardownCircuitPrivateInputs;
use dep::types::PublicKernelCircuitPublicInputs;

fn main(input: PublicKernelTeardownCircuitPrivateInputs) -> distinct pub PublicKernelCircuitPublicInputs {
fn main(input: PublicKernelTeardownCircuitPrivateInputs) -> PublicKernelCircuitPublicInputs {
vezenovm marked this conversation as resolved.
Show resolved Hide resolved
input.public_kernel_teardown()
}
2 changes: 2 additions & 0 deletions noir/noir-repo/.github/workflows/docs-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@ jobs:
run: yarn workspace docs version::stables

- name: Build docs
env:
MATOMO_ENV: staging # not really a secret, it will show in the footer anyway
run: yarn workspaces foreach -Rpt --from docs run build

- name: Upload artifact
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,8 @@ jobs:
- name: Run tests
run: |
cargo nextest run --archive-file nextest-archive.tar.zst \
--partition count:${{ matrix.partition }}/4
--partition count:${{ matrix.partition }}/4 \
--no-fail-fast

# This is a job which depends on all test jobs and reports the overall status.
# This allows us to add/remove test jobs without having to update the required workflows.
Expand Down
3 changes: 2 additions & 1 deletion noir/noir-repo/.github/workflows/test-rust-workspace.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,8 @@ jobs:
- name: Run tests
run: |
cargo nextest run --archive-file nextest-archive.tar.zst \
--partition count:${{ matrix.partition }}/4
--partition count:${{ matrix.partition }}/4 \
--no-fail-fast

# This is a job which depends on all test jobs and reports the overall status.
# This allows us to add/remove test jobs without having to update the required workflows.
Expand Down
9 changes: 2 additions & 7 deletions noir/noir-repo/aztec_macros/src/transforms/functions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use convert_case::{Case, Casing};
use noirc_errors::Span;
use noirc_frontend::ast;
use noirc_frontend::ast::{
BlockExpression, ConstrainKind, ConstrainStatement, Distinctness, Expression, ExpressionKind,
BlockExpression, ConstrainKind, ConstrainStatement, Expression, ExpressionKind,
ForLoopStatement, ForRange, FunctionReturnType, Ident, Literal, NoirFunction, NoirStruct,
Param, PathKind, Pattern, Signedness, Statement, StatementKind, UnresolvedType,
UnresolvedTypeData, Visibility,
Expand Down Expand Up @@ -104,13 +104,8 @@ pub fn transform_function(
func.def.return_visibility = Visibility::Public;
}

// Distinct return types are only required for private functions
// Public functions should have unconstrained auto-inferred
match ty {
"Private" => func.def.return_distinctness = Distinctness::Distinct,
"Public" | "Avm" => func.def.is_unconstrained = true,
_ => (),
}
func.def.is_unconstrained = matches!(ty, "Public" | "Avm");

Ok(())
}
Expand Down
7 changes: 4 additions & 3 deletions noir/noir-repo/compiler/noirc_evaluator/src/ssa.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,6 @@ pub(crate) fn optimize_into_acir(
force_brillig_output: bool,
print_timings: bool,
) -> Result<Artifacts, RuntimeError> {
let abi_distinctness = program.return_distinctness;

let ssa_gen_span = span!(Level::TRACE, "ssa_generation");
let ssa_gen_span_guard = ssa_gen_span.enter();
let ssa = SsaBuilder::new(program, print_passes, force_brillig_output, print_timings)?
Expand All @@ -67,6 +65,9 @@ pub(crate) fn optimize_into_acir(
.run_pass(Ssa::remove_bit_shifts, "After Removing Bit Shifts:")
// Run mem2reg once more with the flattened CFG to catch any remaining loads/stores
.run_pass(Ssa::mem2reg, "After Mem2Reg:")
// Run the inlining pass again to handle functions with `InlineType::NoPredicates`.
// Before flattening is run, we treat functions marked with the `InlineType::NoPredicates` as an entry point.
.run_pass(Ssa::inline_functions_with_no_predicates, "After Inlining:")
.run_pass(Ssa::fold_constants, "After Constant Folding:")
.run_pass(Ssa::remove_enable_side_effects, "After EnableSideEffects removal:")
.run_pass(Ssa::fold_constants_using_constraints, "After Constraint Folding:")
Expand All @@ -78,7 +79,7 @@ pub(crate) fn optimize_into_acir(

drop(ssa_gen_span_guard);

time("SSA to ACIR", print_timings, || ssa.into_acir(&brillig, abi_distinctness))
time("SSA to ACIR", print_timings, || ssa.into_acir(&brillig))
}

// Helper to time SSA passes
Expand Down
Loading
Loading