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(avm2): avm redesign init #10906

Merged
merged 6 commits into from
Jan 11, 2025
Merged

feat(avm2): avm redesign init #10906

merged 6 commits into from
Jan 11, 2025

Conversation

fcarreiro
Copy link
Contributor

@fcarreiro fcarreiro commented Dec 20, 2024

This is a redesign of the witgen/proving part of the AVM. There's still a lot of work to be done, but I have to merge at some point to let others contribute :). Most of the content is PoC, not supposed to be real.

We'll eventually have a doc explaining everything, but for now, some highlights:

Architecture

The proving process is now divided in 3 parts:

  • Simulation (aka event generation): Intrinsically sequential. Executes bytecode and generates packed information (events) that summarize what happened. Examples would be a bytecode decomposition event, memory access event, etc. This part has no dependencies on BB or PIL beyond FF. It also has, in principle, no knowledge of the circuit or columns.
  • Trace generation: This part is parallelizable. The meat of it is translating events into columns in a (sparse!) trace. It is the glue between events and the circuit. It has knowledge of the columns, but not really about any relation or constrain (**) or PIL.
  • Constraining: This is parallelizable. It's the actual constraining/proving/check circuit. It's dependent on BB and the (currently) autogenerated relations from PIL. We convert the sparse trace to polynomials.

Possible future standalone simulation

Hints and DB accesses: The simulation/witgen process has no knowledge of hints (so far). We define a DB interface which the simulation process uses. This DB is then "seeded" with hints. This means that in the future it should be possible to switch the DB to a real DB and things should "just work™️".

I think we should try to follow this philosophy as much as possible and not rely on TS hints that we can compute ourselves.

Configurability: Other aspects of simulation are configurable. E.g., we can configure a fast simulation only variant that does no event generation and no bytecode hashing whereas for full proving you would do that (incurring in at least 25ms for a single bytecode hashing).

Philosophy

Dependency injection is used everywhere (without framework). You'll see references stored in classes and may not like it, but it's actually working well. See https://www.youtube.com/watch?v=kCYo2gJ3Y38 as well.

There are lots of interfaces for mocking. Blame C++ 🤷 .

I'm making it a priority to have the right separation of concerns and engineering practices. There's zero tolerance on hacks. If we need a hack, we trigger a refactor.

Testing

Whereas before our tests required setting up everything and basically do full proving or check circuit, now everything can be tested separately. We use a mockist approach (common in C++). Our old tests would take ~0.5s each, now they take microseconds. Simulation, tracegen, and constraining can be tested separate from each other. In particular, you can create tests for constraints at the relation or subrelation level.

Lookups/permutations

Not really supported yet. But you don't need to keep counts for lookups.

TS/C++ communication

AVM inputs are now (de)serialized with messagepack.

(**) It does require lookup/permutation settings.

Copy link
Contributor Author

fcarreiro commented Dec 20, 2024

This stack of pull requests is managed by Graphite. Learn more about stacking.

const auto [contract_address, _] = memory.get(addr);
std::vector<FF> calldata = {};

auto nested_context = context_provider.make(std::move(contract_address),
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can still choose to make a recursive call to execute here. Depends on how we set up things but I suspect that will be the case. We will likely still need a context stack though, we need to manage it explicitly so that we have the events we need.

@fcarreiro fcarreiro changed the base branch from fc/pilcom-extra-lookup-info to graphite-base/10906 December 20, 2024 12:40
@fcarreiro fcarreiro changed the base branch from graphite-base/10906 to master December 20, 2024 12:42
U128,
};

using MemoryAddress = std::size_t;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if this is the right choice to take size_t as it is a platform-specific type. It is the primitive type to address offsets in vector or array, but in our case if we use a map, we might well use uint32_t or explicitly uint64_t (with explicit memory bound checks)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch, solved!

@fcarreiro fcarreiro added the C-avm Component: AVM related tickets (aka public VM) label Jan 6, 2025 — with Graphite App
@fcarreiro fcarreiro force-pushed the fc/vm2-prototype branch 3 times, most recently from ddca9ac to 1a2daf1 Compare January 6, 2025 17:38
namespace execution(256);

pol commit stack_pointer_val;
pol commit stack_pointer_tag;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not sure if the naming "stack pointer" is fully appropriate compared to sthg not referring stack such as "base address". I understand that it comes from the way the brillig compiler works.

@@ -0,0 +1,16 @@
namespace alu(256);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is everywhere and a leftover but the "256" is ignored by our toolchain. IIRC this is the trace length in powdr.
Maybe we should decide how to change as this is misleading.

std::pair<AvmAPI::AvmProof, AvmAPI::AvmVerificationKey> AvmAPI::prove(const AvmAPI::ProvingInputs& inputs)
{
// Simulate.
info("Simulating...");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess that these tracing occurences at info level will be migrated to verbose level?

@@ -0,0 +1,19 @@
#pragma once

#include "barretenberg/vm2/common/ankerl_map.hpp"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Excellent to have found this lib!

namespace bb::avm2::constraining {

// This is a version of check circuit that runs on the prover polynomials.
// Better versions could be done, but since this is for debugging only, it is enough for now.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you briefly mention the potential improvements?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In principle you may be able to do check circuit over FFs instead of polynomials, and you could maybe do it over the Trace without creating the polynomials. However, tbh, using the polynomials might be the best since it's the closest to "real proving".

// TODO: My dispatch system makes me ahve a uint8_t tag. Rethink.
void Execution::set(ContextInterface& context, MemoryAddress dst_addr, uint8_t tag, MemoryValue value)
{
context.get_memory().set(dst_addr, std::move(value), static_cast<MemoryTag>(tag));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Following clangd warning:

Std::move of the variable 'value' of the trivially-copyable type 'MemoryValue' (aka 'bb::field<bb::Bn254FrParams>') has no effect; remove std::move()

This warning appears to occurences of std::move over a variable of FF type

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah yeah I have a lot of those, I need to think about it a bit more, but they don't hurt. See https://stackoverflow.com/questions/49241201/is-it-undesirable-to-defensively-apply-stdmove-to-trivially-copyable-types

public:
AvmTraceGenHelper() = default;

tracegen::TraceContainer generate_trace(simulation::EventsContainer&& events);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both generate_trace and generate_precomputed_columns can be made static.
Do not change this if you are sure that we will need an object state in AvmTraceGenHelper though.

**Current state**

- Both lookups and permutations are supported.
- When you lookup into a precomputed table, you need to define a fast way to find the row for a tuple. See bitwise example.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"you need to define a fast way to find the row for a tuple" Is it meant here an implementation of find_in_dst()
if so, it would be nice mention it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in follow up PR.

// We use an RLC for the key instead of the tuple, to save memory.
// FIXME: reconsider, what if beta is 0.
unordered_flat_map<FF, uint32_t> row_idx;
FF beta = FF::random_element();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add a note that challenges derived like this is very likely insecure. We should probably use the get_challenge() which AFAIK is using Fait-Shamir under the hood to derive challenges.
In any case, this should be reviewed/checks by our crypto guys.

Copy link
Collaborator

@dbanks12 dbanks12 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Beautiful!

Comment on lines +9 to +21
PublicInputs PublicInputs::from(const std::vector<uint8_t>& data)
{
PublicInputs inputs;
msgpack::unpack(reinterpret_cast<const char*>(data.data()), data.size()).get().convert(inputs);
return inputs;
}

AvmProvingInputs AvmProvingInputs::from(const std::vector<uint8_t>& data)
{
AvmProvingInputs inputs;
msgpack::unpack(reinterpret_cast<const char*>(data.data()), data.size()).get().convert(inputs);
return inputs;
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

beautiful!

Comment on lines +64 to +71
for (size_t r = 0; r < num_rows; ++r) {
Relation::accumulate(lookup_result, polys.get_row(r), params, 1);
}
for (auto r : lookup_result) {
if (!r.is_zero()) {
throw std::runtime_error(format("Lookup ", Relation::NAME, " failed."));
}
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are these two separate loops? For main relations we do this r.is_zero() check inside the loop.

Comment on lines +35 to +40
using Relation = std::tuple_element_t<i, typename AvmFlavor::MainRelations>;
checks.push_back([&]() {
typename Relation::SumcheckArrayOfValuesOverSubrelations result{};

for (size_t r = 0; r < num_rows; ++r) {
Relation::accumulate(result, polys.get_row(r), {}, 1);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the bb dummy in the room, what does Relation::accumulate do? Checks the relation at row r and accumulates the result?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's take it in a huddle.

Comment on lines +22 to +33
{
using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>;
auto tmp = (new_term.alu_sel_op_add * (FF(1) - new_term.alu_sel_op_add));
tmp *= scaling_factor;
std::get<0>(evals) += typename Accumulator::View(tmp);
}
{
using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>;
auto tmp = ((new_term.alu_ia + new_term.alu_ib) - new_term.alu_ic);
tmp *= scaling_factor;
std::get<1>(evals) += typename Accumulator::View(tmp);
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can someone finally explain to me what this is is doing, in particular the Accumulator::View()?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nobody knows! (the view thing). I can explain over a huddle a bit of the other things.

Comment on lines +35 to +38
template <typename AllEntities> static inline auto inverse_polynomial_is_computed_at_row(const AllEntities& in)
{
return (in.execution_sel == 1 || in.execution_sel == 1);
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's going on here with return (s == 1 || s == 1)? Just something silly because it's a dummy class?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope. Basically it says that the inverse polynomial will be computed when either the source or target selectors of the lookup are active. It's the same for real lookups.

Comment on lines +35 to +44
// Write the shifted values.
for (const auto& col : TO_BE_SHIFTED_COLUMNS_ARRAY) {
visit_column(col, [&](size_t row, const FF& value) {
if (row == 0) {
return;
}
auto shifted = shift_column(col);
full_row_trace[row - 1].get_column(shifted.value()) = value;
});
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not super clear to me why we have so much special logic sprinkled around for "shifted" columns. I guess it's because we don't want to shift things too early, so we hold off until later?

Comment on lines +29 to +46
auto build_precomputed_columns_jobs(TraceContainer& trace)
{
return std::array<std::function<void()>, 2>{
[&]() {
PrecomputedTraceBuilder precomputed_builder;
AVM_TRACK_TIME("tracegen/precomputed/misc", precomputed_builder.process_misc(trace));
},
[&]() {
PrecomputedTraceBuilder precomputed_builder;
AVM_TRACK_TIME("tracegen/precomputed/bitwise", precomputed_builder.process_bitwise(trace));
},
};
}

void execute_jobs(std::span<std::function<void()>> jobs)
{
parallel_for(jobs.size(), [&](size_t i) { jobs[i](); });
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool!

Comment on lines +67 to +78
[&]() {
ExecutionTraceBuilder exec_builder;
AVM_TRACK_TIME("tracegen/execution",
exec_builder.process(events.execution, events.addressing, trace));
clear_events(events.execution);
clear_events(events.addressing);
},
[&]() {
AluTraceBuilder alu_builder;
AVM_TRACK_TIME("tracegen/alu", alu_builder.process(events.alu, trace));
clear_events(events.alu);
},
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is saying "process the execution trace and alu trace in parallel. After execution trace is done, free up execution & addressing events. When alu is done, free up alu events?

Comment on lines +83 to +100
// Now we can compute lookups and permutations.
{
auto jobs_interactions = std::array<std::function<void()>, 3>{
[&]() {
LookupIntoBitwise<lookup_dummy_precomputed_lookup_settings> lookup_execution_bitwise;
lookup_execution_bitwise.process(trace);
},
[&]() {
LookupIntoDynamicTable<lookup_dummy_dynamic_lookup_settings> lookup_execution_execution;
lookup_execution_execution.process(trace);
},
[&]() {
PermutationBuilder<perm_dummy_dynamic_permutation_settings> perm_execution_execution;
perm_execution_execution.process(trace);
},
};
AVM_TRACK_TIME("tracegen/interactions", execute_jobs(jobs_interactions));
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very nice job getting this all nicely executed in parallel!

Comment on lines +979 to +987
// TODO: for now I only convert app logic requests?
for (const enqueuedCall of this.avmHints.enqueuedCalls.items) {
inputs.enqueuedCalls.push({
contractAddress: enqueuedCall.contractAddress,
sender: new Fr(0), // FIXME
args: enqueuedCall.calldata.items,
isStatic: false, // FIXME
});
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO: for now I only convert app logic requests?

You're looping over all of the enqueued call hints though

@fcarreiro fcarreiro marked this pull request as ready for review January 10, 2025 13:34
@fcarreiro fcarreiro force-pushed the fc/vm2-prototype branch 2 times, most recently from 95c1b42 to 6632e7d Compare January 10, 2025 16:43
@fcarreiro fcarreiro merged commit 231f017 into master Jan 11, 2025
49 checks passed
Copy link
Contributor Author

Merge activity

  • Jan 11, 3:55 PM EST: A user merged this pull request with Graphite.

@fcarreiro fcarreiro deleted the fc/vm2-prototype branch January 11, 2025 20:55
Copy link
Contributor Author

@fcarreiro fcarreiro left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Followup cleanup: #11186

Comment on lines +35 to +40
using Relation = std::tuple_element_t<i, typename AvmFlavor::MainRelations>;
checks.push_back([&]() {
typename Relation::SumcheckArrayOfValuesOverSubrelations result{};

for (size_t r = 0; r < num_rows; ++r) {
Relation::accumulate(result, polys.get_row(r), {}, 1);
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's take it in a huddle.

namespace bb::avm2::constraining {

// This is a version of check circuit that runs on the prover polynomials.
// Better versions could be done, but since this is for debugging only, it is enough for now.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In principle you may be able to do check circuit over FFs instead of polynomials, and you could maybe do it over the Trace without creating the polynomials. However, tbh, using the polynomials might be the best since it's the closest to "real proving".


// The entities that will be used in the flavor.
// clang-format off
#define AVM2_PRECOMPUTED_ENTITIES precomputed_bitwise_input_a, precomputed_bitwise_input_b, precomputed_bitwise_op_id, precomputed_bitwise_output, precomputed_clk, precomputed_first_row, precomputed_sel_bitwise
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a column in pil that is called first_row it has a 1 just on the first row. It's needed to anchor other things.

Comment on lines +22 to +33
{
using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>;
auto tmp = (new_term.alu_sel_op_add * (FF(1) - new_term.alu_sel_op_add));
tmp *= scaling_factor;
std::get<0>(evals) += typename Accumulator::View(tmp);
}
{
using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>;
auto tmp = ((new_term.alu_ia + new_term.alu_ib) - new_term.alu_ic);
tmp *= scaling_factor;
std::get<1>(evals) += typename Accumulator::View(tmp);
}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nobody knows! (the view thing). I can explain over a huddle a bit of the other things.

Comment on lines +35 to +38
template <typename AllEntities> static inline auto inverse_polynomial_is_computed_at_row(const AllEntities& in)
{
return (in.execution_sel == 1 || in.execution_sel == 1);
}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope. Basically it says that the inverse polynomial will be computed when either the source or target selectors of the lookup are active. It's the same for real lookups.

Comment on lines 334 to 354
assert(pos < bytecode_length);
// if (pos >= length) {
// info("Position is out of range. Position: " + std::to_string(pos) +
// " Bytecode length: " + std::to_string(length));
// return InstructionWithError{
// .instruction = Instruction(WireOpCode::LAST_WireOpCode_SENTINEL, {}),
// .error = AvmError::INVALID_PROGRAM_COUNTER,
// };
// }

const uint8_t opcode_byte = bytecode[pos];

// if (!Bytecode::is_valid(WireOpCode_byte)) {
// info("Invalid WireOpCode byte: " + to_hex(WireOpCode_byte) + " at position: " + std::to_string(pos));
// return InstructionWithError{
// .instruction = Instruction(WireOpCode::LAST_WireOpCode_SENTINEL, {}),
// .error = AvmError::INVALID_WireOpCode,
// };
// }
pos++;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yep!

Comment on lines +38 to +40
auto operands = ex_event.wire_instruction.operands;
assert(operands.size() <= operand_columns);
operands.resize(operand_columns, simulation::Operand::ff(0));
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We probably don't care but I expect it to be a copy. auto operands hopefully does not magically insert a auto& operands there.

**Current state**

- Both lookups and permutations are supported.
- When you lookup into a precomputed table, you need to define a fast way to find the row for a tuple. See bitwise example.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in follow up PR.

Comment on lines +88 to +95
void TraceContainer::visit_column(Column col, const std::function<void(uint32_t, const FF&)>& visitor) const
{
auto& column_data = (*trace)[static_cast<size_t>(col)];
std::shared_lock lock(column_data.mutex);
for (const auto& [row, value] : column_data.rows) {
visitor(row, value);
}
}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep!

Comment on lines +97 to +104
void TraceContainer::clear_column(Column col)
{
auto& column_data = (*trace)[static_cast<size_t>(col)];
std::unique_lock lock(column_data.mutex);
column_data.rows.clear();
column_data.max_row_number = 0;
column_data.row_number_dirty = false;
}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed.

TomAFrench added a commit that referenced this pull request Jan 13, 2025
* master: (329 commits)
  fix(avm): mac build (#11195)
  fix: docs rebuild patterns (#11191)
  chore: refactor Solidity Transcript and improve error handling in  sol_honk flow (#11158)
  chore: move witness computation into class plus some other cleanup (#11140)
  fix: get_next_power_exponent off by 1 (#11169)
  chore(avm): vm2 followup cleanup (#11186)
  fix: underconstrained bug (#11174)
  refactor: VariableMerkleTree readability improvements (#11165)
  chore: removing noir bug workaround (#10535)
  chore(docs): Remove node pages  (#11161)
  git subrepo push --branch=master noir-projects/aztec-nr
  git_subrepo.sh: Fix parent in .gitrepo file. [skip ci]
  chore: replace relative paths to noir-protocol-circuits
  git subrepo push --branch=master barretenberg
  feat(avm2): avm redesign init (#10906)
  feat: Sync from noir (#11138)
  feat: simulator split (#11144)
  chore: rpc server cleanup & misc fixes (#11145)
  git subrepo push --branch=master noir-projects/aztec-nr
  git_subrepo.sh: Fix parent in .gitrepo file. [skip ci]
  ...
rahul-kothari pushed a commit that referenced this pull request Jan 15, 2025
🤖 I have created a release *beep* *boop*
---


<details><summary>aztec-package: 0.70.0</summary>

##
[0.70.0](aztec-package-v0.69.1...aztec-package-v0.70.0)
(2025-01-15)


### Features

* Blob sink in sandbox without extra process
([#11032](#11032))
([4600f54](4600f54))
* Browser chunking
([#11102](#11102))
([393e843](393e843))


### Miscellaneous

* Greater stability at 1TPS
([#10981](#10981))
([1c23662](1c23662))
* Prover db config
([#11126](#11126))
([9d49393](9d49393)),
closes
[#10267](#10267)
* Rpc server cleanup & misc fixes
([#11145](#11145))
([8a927eb](8a927eb))
</details>

<details><summary>barretenberg.js: 0.70.0</summary>

##
[0.70.0](barretenberg.js-v0.69.1...barretenberg.js-v0.70.0)
(2025-01-15)


### Miscellaneous

* **barretenberg.js:** Synchronize aztec-packages versions
</details>

<details><summary>aztec-packages: 0.70.0</summary>

##
[0.70.0](aztec-packages-v0.69.1...aztec-packages-v0.70.0)
(2025-01-15)


### ⚠ BREAKING CHANGES

* disallow calling unconstrained functions outside of `unsafe` blocks
and passing unconstrained functions in place of constrained functions
(noir-lang/noir#6938)
* Disable mocks in `execute`
(noir-lang/noir#6869)
* require trait primitive functions/calls to have their trait in scope
(noir-lang/noir#6901)
* Reserve `enum` and `match` keywords
(noir-lang/noir#6961)
* require trait method calls (`foo.bar()`) to have the trait in scope
(imported) (noir-lang/noir#6895)
* type-check trait default methods
(noir-lang/noir#6645)
* update `aes128_encrypt` to return an array
(noir-lang/noir#6973)
* turn TypeIsMorePrivateThenItem into an error
(noir-lang/noir#6953)
* turn CannotReexportItemWithLessVisibility into an error
(noir-lang/noir#6952)

### Features

* `--pedantic-solving` flag
(noir-lang/noir#6716)
([3883a0e](3883a0e))
* 7 bit long `note_type_id`
([#10951](#10951))
([6fc5673](6fc5673))
* **avm2:** Avm redesign init
([#10906](#10906))
([231f017](231f017))
* Blob sink in sandbox without extra process
([#11032](#11032))
([4600f54](4600f54))
* Browser chunking
([#11102](#11102))
([393e843](393e843))
* Build blocks using txs with higher fee first
([#11093](#11093))
([def7cd7](def7cd7)),
closes
[#11084](#11084)
* **cli:** Add CLI option to filter by contract function name
(noir-lang/noir#7018)
([9189120](9189120))
* **comptime:** Implement to_be_bits and to_le_bits in the interpreter
(noir-lang/noir#7008)
([9189120](9189120))
* Contract class must be registered before deployment
([#10949](#10949))
([7176a70](7176a70))
* Dashboard in gcp
([#11201](#11201))
([2790bd7](2790bd7))
* Disable mocks in `execute`
(noir-lang/noir#6869)
([9189120](9189120))
* Disallow calling unconstrained functions outside of `unsafe` blocks
and passing unconstrained functions in place of constrained functions
(noir-lang/noir#6938)
([9189120](9189120))
* Don't report warnings for dependencies
(noir-lang/noir#6926)
([3883a0e](3883a0e))
* Don't simplify SSA instructions when creating them from a string
(noir-lang/noir#6948)
([3883a0e](3883a0e))
* Expose getL2ToL1Membership on the pxe
([#11215](#11215))
([ffd3625](ffd3625))
* Impl Default for U128 (noir-lang/noir#6984)
([3883a0e](3883a0e))
* Inject protocol nullifier conditionally
([#11155](#11155))
([93ade26](93ade26))
* Kickoff tube circuits at the beginning of proving job
([#11139](#11139))
([85d389f](85d389f)),
closes
[#10998](#10998)
* Lock on Nargo.toml on several nargo commands
(noir-lang/noir#6941)
([3883a0e](3883a0e))
* **lsp:** Use trait method docs for trait impl method docs on hover
(noir-lang/noir#7003)
([9189120](9189120))
* Monitor event loop lag
([#11127](#11127))
([422f125](422f125))
* Permutation argument optimizations
([#10960](#10960))
([de99603](de99603))
* PXE db contract store
([#10867](#10867))
([b5d51eb](b5d51eb))
* Require trait function calls (`Foo::bar()`) to have the trait in scope
(imported) (noir-lang/noir#6882)
([3883a0e](3883a0e))
* Require trait method calls (`foo.bar()`) to have the trait in scope
(imported) (noir-lang/noir#6895)
([3883a0e](3883a0e))
* Require trait primitive functions/calls to have their trait in scope
(noir-lang/noir#6901)
([9189120](9189120))
* Simulator split
([#11144](#11144))
([9b99126](9b99126))
* Single tx block root rollup
([#11096](#11096))
([bcc0168](bcc0168))
* SSA globals in monomorphization and SSA gen
(noir-lang/noir#6985)
([9189120](9189120))
* **ssa:** Immediately simplify away RefCount instructions in ACIR
functions (noir-lang/noir#6893)
([3883a0e](3883a0e))
* **test:** Enable the test fuzzer for Wasm
(noir-lang/noir#6835)
([3883a0e](3883a0e))
* Track nodejs runtime metrics
([#11160](#11160))
([1d24fab](1d24fab))
* Turn CannotReexportItemWithLessVisibility into an error
(noir-lang/noir#6952)
([3883a0e](3883a0e))
* Turn TypeIsMorePrivateThenItem into an error
(noir-lang/noir#6953)
([3883a0e](3883a0e))
* Type-check trait default methods
(noir-lang/noir#6645)
([3883a0e](3883a0e))
* Unchecked math operations in SSA
(noir-lang/noir#7011)
([9189120](9189120))
* Update `aes128_encrypt` to return an array
(noir-lang/noir#6973)
([3883a0e](3883a0e))
* Use tail public inputs as transaction hash
([#11100](#11100))
([34be2c3](34be2c3))
* Validator deadline for reexecution
([#11050](#11050))
([1aa34e7](1aa34e7)),
closes
[#10959](#10959)


### Bug Fixes

* Added start/stop guards to running promise and serial queue
([#11120](#11120))
([23e642f](23e642f))
* Allow multiple trait impls for the same trait as long as one is in
scope (noir-lang/noir#6987)
([9189120](9189120))
* **avm:** AVM circuit fixes related calldata, returndata and call_ptr
([#11207](#11207))
([2f05dc0](2f05dc0))
* **avm:** Mac build
([#11195](#11195))
([c4f4452](c4f4452))
* **avm:** Mac build (retry)
([#11197](#11197))
([0a4b763](0a4b763))
* Aztec-spartan config var
([#11137](#11137))
([acbfad4](acbfad4))
* Blob fees & l1-publisher logging
([#11029](#11029))
([c2c0bc6](c2c0bc6))
* **bootstrap:** Don't download bad cache if unstaged changes
([#11198](#11198))
([2bd895b](2bd895b))
* **boxes:** Fix attempt 2
([#11175](#11175))
([e87b11a](e87b11a))
* Bump inotify limits on tester
([#11217](#11217))
([60bdf1d](60bdf1d))
* Do not emit range check for multiplication by bool
(noir-lang/noir#6983)
([3883a0e](3883a0e))
* Do not panic on indices which are not valid `u32`s
(noir-lang/noir#6976)
([3883a0e](3883a0e))
* Docs rebuild patterns
([#11191](#11191))
([1999990](1999990))
* Don't fail parsing macro if there are parser warnings
(noir-lang/noir#6969)
([3883a0e](3883a0e))
* Don't retransmit txs upon node restart
([#11123](#11123))
([39535c9](39535c9))
* Duplicate env vars
([#11166](#11166))
([2507b6f](2507b6f))
* Error on missing function parameters
(noir-lang/noir#6967)
([3883a0e](3883a0e))
* Get_next_power_exponent off by 1
([#11169](#11169))
([80ec19e](80ec19e))
* Let static_assert fail with the provided message
(noir-lang/noir#7005)
([9189120](9189120))
* Max_note_len computation
([#10438](#10438))
([099c17b](099c17b))
* Non-determinism from under constrained checks
(noir-lang/noir#6945)
([3883a0e](3883a0e))
* Prover node aborts execution at epoch end
([#11111](#11111))
([2a77616](2a77616)),
closes
[#10802](#10802)
* Prover node does not err upon an empty epoch
([#11204](#11204))
([2c3ab84](2c3ab84))
* Remove arch tag in sandbox images
([#11233](#11233))
([80a872d](80a872d))
* Remove max lookup table size constant (for now)
([#11095](#11095))
([7e9e268](7e9e268))
* Reproduce and fix bytecode blowup
(noir-lang/noir#6972)
([9189120](9189120))
* Require generic trait impls to be in scope to call them
(noir-lang/noir#6913)
([9189120](9189120))
* Restore upload_logs script in use by acir bench
([2d88497](2d88497))
* Return trait impl method as FuncId if there's only one
(noir-lang/noir#6989)
([9189120](9189120))
* Revert "chore: use L1 Tx Utils"
([#11167](#11167))
([f4e5c79](f4e5c79))
* Sequencer times out L1 tx at end of L2 slot
([#11112](#11112))
([1b88a34](1b88a34))
* Show output of `test_program_is_idempotent` on failure
(noir-lang/noir#6942)
([3883a0e](3883a0e))
* Start RC at 1 again (noir-lang/noir#6958)
([3883a0e](3883a0e))
* Underconstrained bug
([#11174](#11174))
([0b3088b](0b3088b))
* Update fs max user instances for k8s
([#11220](#11220))
([b42da6d](b42da6d))
* Use absolute path for docker bind in e2e-test
([f2885ec](f2885ec))
* Wrong module to lookup trait when using crate or super
(noir-lang/noir#6974)
([3883a0e](3883a0e))


### Miscellaneous

* Add cli option to specify withdrawer address in the add-l1-validator …
([#11199](#11199))
([107f175](107f175))
* Add memsuspend to parallel in bootstrap
([#11040](#11040))
([c78cb82](c78cb82))
* Add more Field use info (noir-lang/noir#7019)
([9189120](9189120))
* Add reproduction case for bignum test failure
(noir-lang/noir#6464)
([3883a0e](3883a0e))
* Add short circuit in ssa-gen for known if conditions
(noir-lang/noir#7007)
([9189120](9189120))
* Also print test output to stdout in CI
(noir-lang/noir#6930)
([3883a0e](3883a0e))
* **avm:** Fix mac build
([#11147](#11147))
([1775e53](1775e53))
* **avm:** Improve column stats
([#11135](#11135))
([535a14c](535a14c))
* **avm:** Re-enable bb-prover tests in CI, change some to
check-circuit-only, enable multi-enqueued call tests
([#11180](#11180))
([3092212](3092212))
* **avm:** Vm2 followup cleanup
([#11186](#11186))
([6de4013](6de4013))
* Block building benchmark via github-action-benchmark
([#11202](#11202))
([c107b6b](c107b6b)),
closes
[#11154](#11154)
* Bump `noir-gates-diff` (noir-lang/noir#6943)
([3883a0e](3883a0e))
* Bump `noir-gates-diff` (noir-lang/noir#6944)
([3883a0e](3883a0e))
* Bump `noir-gates-diff` (noir-lang/noir#6949)
([3883a0e](3883a0e))
* Bump arkworks to version `0.5.0`
(noir-lang/noir#6871)
([3883a0e](3883a0e))
* **ci:** Easier to use mac ci
([#11194](#11194))
([9ab4cee](9ab4cee))
* **ci:** Ensure that prover.toml files in protocol circuits are in sync
([#11141](#11141))
([db769bd](db769bd))
* **ci:** Fail properly in `external-repo-checks`
(noir-lang/noir#6988)
([9189120](9189120))
* **ci:** Try fix boxes-test
([#11162](#11162))
([a66349f](a66349f))
* Clarity fix in docs (noir-lang/noir#7016)
([9189120](9189120))
* Delete a bunch of dead code from `noirc_evaluator`
(noir-lang/noir#6939)
([3883a0e](3883a0e))
* Delete docs for versions which aren't used
(noir-lang/noir#7020)
([9189120](9189120))
* Disable reorg test
([#11176](#11176))
([78bec44](78bec44))
* Disallow inserting ACIR-only instructions into brillig functions
(noir-lang/noir#7017)
([9189120](9189120))
* **docs:** Backport 1.0.0-beta.0 doc fixes
(noir-lang/noir#7014)
([9189120](9189120))
* **docs:** Edit Aztec.nr Guide section
([#10866](#10866))
([4051ba8](4051ba8))
* **docs:** Remove node pages
([#11161](#11161))
([e494f6b](e494f6b))
* **docs:** Update tx concepts page
([#10947](#10947))
([d9d9798](d9d9798))
* Document aztec-nargo in readme
([#11173](#11173))
([927eabf](927eabf))
* Greater stability at 1TPS
([#10981](#10981))
([1c23662](1c23662))
* Jest reporters for CI
([#11125](#11125))
([90cd9d2](90cd9d2))
* Log number of instructions executed for call in AVM. Misc fix.
([#11110](#11110))
([44e01f4](44e01f4))
* Mark `aztec-nr` as expected to compile
(noir-lang/noir#7015)
([9189120](9189120))
* Mark casts as able to be deduplicated
(noir-lang/noir#6996)
([9189120](9189120))
* Missed test account retrieval simplification in one spot
([#11172](#11172))
([b72234e](b72234e))
* Move comment as part of
[#6945](#6945)
(noir-lang/noir#6959)
([3883a0e](3883a0e))
* Move witness computation into class plus some other cleanup
([#11140](#11140))
([d41e9ab](d41e9ab))
* Nuke unused `getSiblingPath` oracle
([#11090](#11090))
([36b640a](36b640a))
* Nuking mental model of "packing into a hash"
([#11200](#11200))
([e1ebcc0](e1ebcc0))
* Only resolved globals monomorphization
(noir-lang/noir#7006)
([9189120](9189120))
* Prover db config
([#11126](#11126))
([9d49393](9d49393)),
closes
[#10267](#10267)
* Redo typo PR by longxiangqiao
([#11109](#11109))
([b8ef30e](b8ef30e))
* Refactor `get_tx_effects_hash_input_helper`
([#11213](#11213))
([5becb99](5becb99))
* Refactor Solidity Transcript and improve error handling in sol_honk
flow
([#11158](#11158))
([58fdf87](58fdf87))
* Remove explicit collector address
([#11227](#11227))
([dfb0db5](dfb0db5))
* Remove resolve_is_unconstrained pass
(noir-lang/noir#7004)
([9189120](9189120))
* Removing noir bug workaround
([#10535](#10535))
([8be882f](8be882f))
* Replace relative paths to noir-protocol-circuits
([d8619fa](d8619fa))
* Replace relative paths to noir-protocol-circuits
([70cad1c](70cad1c))
* Replace relative paths to noir-protocol-circuits
([e962534](e962534))
* Replace relative paths to noir-protocol-circuits
([ba5a589](ba5a589))
* Replace relative paths to noir-protocol-circuits
([b7c3fa2](b7c3fa2))
* Replace relative paths to noir-protocol-circuits
([32840c6](32840c6))
* Require safety doc comment for unsafe instead of
`//[@safety](https://github.com/safety)`
(noir-lang/noir#6992)
([9189120](9189120))
* Reserve `enum` and `match` keywords
(noir-lang/noir#6961)
([9189120](9189120))
* Rpc server cleanup & misc fixes
([#11145](#11145))
([8a927eb](8a927eb))
* Sanity checking of proving job IDs
([#11134](#11134))
([61c3e95](61c3e95))
* Save kind smoke test logs as artifact
([#11212](#11212))
([1389a5b](1389a5b))
* Separate unconstrained functions during monomorphization
(noir-lang/noir#6894)
([3883a0e](3883a0e))
* Simplify a couple of enum variants
(noir-lang/noir#7025)
([9189120](9189120))
* Simplify boolean in a mul of a mul
(noir-lang/noir#6951)
([3883a0e](3883a0e))
* SmallSubgroupIPA tests
([#11106](#11106))
([f034e2a](f034e2a))
* **spartan:** Making the spartan script install jq
([#11231](#11231))
([7e628cc](7e628cc))
* Test:e2e defaults to no-docker
([#10966](#10966))
([15e0d71](15e0d71))
* Turn on averaging for protocol circuits metrics in CI
(noir-lang/noir#6999)
([9189120](9189120))
* Update aztec-spartan.sh script
([#11228](#11228))
([52b3a87](52b3a87))
* Use DFG in SSA printer (noir-lang/noir#6986)
([9189120](9189120))
* Use L1 Tx Utils
([#10759](#10759))
([ccf28f5](ccf28f5)),
closes
[#10464](#10464)
* Use logs for benchmarking
(noir-lang/noir#6911)
([3883a0e](3883a0e))
* VariableMerkleTree readability improvements
([#11165](#11165))
([010d1b0](010d1b0))
* Wait for ethereum in each pod
([#11238](#11238))
([9c08e00](9c08e00))


### Documentation

* Enable protocol specs for docs in dev mode
([#11219](#11219))
([10c8afe](10c8afe))
</details>

<details><summary>barretenberg: 0.70.0</summary>

##
[0.70.0](barretenberg-v0.69.1...barretenberg-v0.70.0)
(2025-01-15)


### Features

* **avm2:** Avm redesign init
([#10906](#10906))
([231f017](231f017))
* Permutation argument optimizations
([#10960](#10960))
([de99603](de99603))
* Use tail public inputs as transaction hash
([#11100](#11100))
([34be2c3](34be2c3))


### Bug Fixes

* **avm:** AVM circuit fixes related calldata, returndata and call_ptr
([#11207](#11207))
([2f05dc0](2f05dc0))
* **avm:** Mac build
([#11195](#11195))
([c4f4452](c4f4452))
* **avm:** Mac build (retry)
([#11197](#11197))
([0a4b763](0a4b763))
* **bootstrap:** Don't download bad cache if unstaged changes
([#11198](#11198))
([2bd895b](2bd895b))
* Remove max lookup table size constant (for now)
([#11095](#11095))
([7e9e268](7e9e268))


### Miscellaneous

* **avm:** Fix mac build
([#11147](#11147))
([1775e53](1775e53))
* **avm:** Improve column stats
([#11135](#11135))
([535a14c](535a14c))
* **avm:** Re-enable bb-prover tests in CI, change some to
check-circuit-only, enable multi-enqueued call tests
([#11180](#11180))
([3092212](3092212))
* **avm:** Vm2 followup cleanup
([#11186](#11186))
([6de4013](6de4013))
* **docs:** Update tx concepts page
([#10947](#10947))
([d9d9798](d9d9798))
* Move witness computation into class plus some other cleanup
([#11140](#11140))
([d41e9ab](d41e9ab))
* Redo typo PR by longxiangqiao
([#11109](#11109))
([b8ef30e](b8ef30e))
* Refactor Solidity Transcript and improve error handling in sol_honk
flow
([#11158](#11158))
([58fdf87](58fdf87))
* SmallSubgroupIPA tests
([#11106](#11106))
([f034e2a](f034e2a))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
AztecBot added a commit to AztecProtocol/barretenberg that referenced this pull request Jan 16, 2025
🤖 I have created a release *beep* *boop*
---


<details><summary>aztec-package: 0.70.0</summary>

##
[0.70.0](AztecProtocol/aztec-packages@aztec-package-v0.69.1...aztec-package-v0.70.0)
(2025-01-15)


### Features

* Blob sink in sandbox without extra process
([#11032](AztecProtocol/aztec-packages#11032))
([4600f54](AztecProtocol/aztec-packages@4600f54))
* Browser chunking
([#11102](AztecProtocol/aztec-packages#11102))
([393e843](AztecProtocol/aztec-packages@393e843))


### Miscellaneous

* Greater stability at 1TPS
([#10981](AztecProtocol/aztec-packages#10981))
([1c23662](AztecProtocol/aztec-packages@1c23662))
* Prover db config
([#11126](AztecProtocol/aztec-packages#11126))
([9d49393](AztecProtocol/aztec-packages@9d49393)),
closes
[#10267](AztecProtocol/aztec-packages#10267)
* Rpc server cleanup & misc fixes
([#11145](AztecProtocol/aztec-packages#11145))
([8a927eb](AztecProtocol/aztec-packages@8a927eb))
</details>

<details><summary>barretenberg.js: 0.70.0</summary>

##
[0.70.0](AztecProtocol/aztec-packages@barretenberg.js-v0.69.1...barretenberg.js-v0.70.0)
(2025-01-15)


### Miscellaneous

* **barretenberg.js:** Synchronize aztec-packages versions
</details>

<details><summary>aztec-packages: 0.70.0</summary>

##
[0.70.0](AztecProtocol/aztec-packages@aztec-packages-v0.69.1...aztec-packages-v0.70.0)
(2025-01-15)


### ⚠ BREAKING CHANGES

* disallow calling unconstrained functions outside of `unsafe` blocks
and passing unconstrained functions in place of constrained functions
(noir-lang/noir#6938)
* Disable mocks in `execute`
(noir-lang/noir#6869)
* require trait primitive functions/calls to have their trait in scope
(noir-lang/noir#6901)
* Reserve `enum` and `match` keywords
(noir-lang/noir#6961)
* require trait method calls (`foo.bar()`) to have the trait in scope
(imported) (noir-lang/noir#6895)
* type-check trait default methods
(noir-lang/noir#6645)
* update `aes128_encrypt` to return an array
(noir-lang/noir#6973)
* turn TypeIsMorePrivateThenItem into an error
(noir-lang/noir#6953)
* turn CannotReexportItemWithLessVisibility into an error
(noir-lang/noir#6952)

### Features

* `--pedantic-solving` flag
(noir-lang/noir#6716)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* 7 bit long `note_type_id`
([#10951](AztecProtocol/aztec-packages#10951))
([6fc5673](AztecProtocol/aztec-packages@6fc5673))
* **avm2:** Avm redesign init
([#10906](AztecProtocol/aztec-packages#10906))
([231f017](AztecProtocol/aztec-packages@231f017))
* Blob sink in sandbox without extra process
([#11032](AztecProtocol/aztec-packages#11032))
([4600f54](AztecProtocol/aztec-packages@4600f54))
* Browser chunking
([#11102](AztecProtocol/aztec-packages#11102))
([393e843](AztecProtocol/aztec-packages@393e843))
* Build blocks using txs with higher fee first
([#11093](AztecProtocol/aztec-packages#11093))
([def7cd7](AztecProtocol/aztec-packages@def7cd7)),
closes
[#11084](AztecProtocol/aztec-packages#11084)
* **cli:** Add CLI option to filter by contract function name
(noir-lang/noir#7018)
([9189120](AztecProtocol/aztec-packages@9189120))
* **comptime:** Implement to_be_bits and to_le_bits in the interpreter
(noir-lang/noir#7008)
([9189120](AztecProtocol/aztec-packages@9189120))
* Contract class must be registered before deployment
([#10949](AztecProtocol/aztec-packages#10949))
([7176a70](AztecProtocol/aztec-packages@7176a70))
* Dashboard in gcp
([#11201](AztecProtocol/aztec-packages#11201))
([2790bd7](AztecProtocol/aztec-packages@2790bd7))
* Disable mocks in `execute`
(noir-lang/noir#6869)
([9189120](AztecProtocol/aztec-packages@9189120))
* Disallow calling unconstrained functions outside of `unsafe` blocks
and passing unconstrained functions in place of constrained functions
(noir-lang/noir#6938)
([9189120](AztecProtocol/aztec-packages@9189120))
* Don't report warnings for dependencies
(noir-lang/noir#6926)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* Don't simplify SSA instructions when creating them from a string
(noir-lang/noir#6948)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* Expose getL2ToL1Membership on the pxe
([#11215](AztecProtocol/aztec-packages#11215))
([ffd3625](AztecProtocol/aztec-packages@ffd3625))
* Impl Default for U128 (noir-lang/noir#6984)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* Inject protocol nullifier conditionally
([#11155](AztecProtocol/aztec-packages#11155))
([93ade26](AztecProtocol/aztec-packages@93ade26))
* Kickoff tube circuits at the beginning of proving job
([#11139](AztecProtocol/aztec-packages#11139))
([85d389f](AztecProtocol/aztec-packages@85d389f)),
closes
[#10998](AztecProtocol/aztec-packages#10998)
* Lock on Nargo.toml on several nargo commands
(noir-lang/noir#6941)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* **lsp:** Use trait method docs for trait impl method docs on hover
(noir-lang/noir#7003)
([9189120](AztecProtocol/aztec-packages@9189120))
* Monitor event loop lag
([#11127](AztecProtocol/aztec-packages#11127))
([422f125](AztecProtocol/aztec-packages@422f125))
* Permutation argument optimizations
([#10960](AztecProtocol/aztec-packages#10960))
([de99603](AztecProtocol/aztec-packages@de99603))
* PXE db contract store
([#10867](AztecProtocol/aztec-packages#10867))
([b5d51eb](AztecProtocol/aztec-packages@b5d51eb))
* Require trait function calls (`Foo::bar()`) to have the trait in scope
(imported) (noir-lang/noir#6882)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* Require trait method calls (`foo.bar()`) to have the trait in scope
(imported) (noir-lang/noir#6895)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* Require trait primitive functions/calls to have their trait in scope
(noir-lang/noir#6901)
([9189120](AztecProtocol/aztec-packages@9189120))
* Simulator split
([#11144](AztecProtocol/aztec-packages#11144))
([9b99126](AztecProtocol/aztec-packages@9b99126))
* Single tx block root rollup
([#11096](AztecProtocol/aztec-packages#11096))
([bcc0168](AztecProtocol/aztec-packages@bcc0168))
* SSA globals in monomorphization and SSA gen
(noir-lang/noir#6985)
([9189120](AztecProtocol/aztec-packages@9189120))
* **ssa:** Immediately simplify away RefCount instructions in ACIR
functions (noir-lang/noir#6893)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* **test:** Enable the test fuzzer for Wasm
(noir-lang/noir#6835)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* Track nodejs runtime metrics
([#11160](AztecProtocol/aztec-packages#11160))
([1d24fab](AztecProtocol/aztec-packages@1d24fab))
* Turn CannotReexportItemWithLessVisibility into an error
(noir-lang/noir#6952)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* Turn TypeIsMorePrivateThenItem into an error
(noir-lang/noir#6953)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* Type-check trait default methods
(noir-lang/noir#6645)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* Unchecked math operations in SSA
(noir-lang/noir#7011)
([9189120](AztecProtocol/aztec-packages@9189120))
* Update `aes128_encrypt` to return an array
(noir-lang/noir#6973)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* Use tail public inputs as transaction hash
([#11100](AztecProtocol/aztec-packages#11100))
([34be2c3](AztecProtocol/aztec-packages@34be2c3))
* Validator deadline for reexecution
([#11050](AztecProtocol/aztec-packages#11050))
([1aa34e7](AztecProtocol/aztec-packages@1aa34e7)),
closes
[#10959](AztecProtocol/aztec-packages#10959)


### Bug Fixes

* Added start/stop guards to running promise and serial queue
([#11120](AztecProtocol/aztec-packages#11120))
([23e642f](AztecProtocol/aztec-packages@23e642f))
* Allow multiple trait impls for the same trait as long as one is in
scope (noir-lang/noir#6987)
([9189120](AztecProtocol/aztec-packages@9189120))
* **avm:** AVM circuit fixes related calldata, returndata and call_ptr
([#11207](AztecProtocol/aztec-packages#11207))
([2f05dc0](AztecProtocol/aztec-packages@2f05dc0))
* **avm:** Mac build
([#11195](AztecProtocol/aztec-packages#11195))
([c4f4452](AztecProtocol/aztec-packages@c4f4452))
* **avm:** Mac build (retry)
([#11197](AztecProtocol/aztec-packages#11197))
([0a4b763](AztecProtocol/aztec-packages@0a4b763))
* Aztec-spartan config var
([#11137](AztecProtocol/aztec-packages#11137))
([acbfad4](AztecProtocol/aztec-packages@acbfad4))
* Blob fees & l1-publisher logging
([#11029](AztecProtocol/aztec-packages#11029))
([c2c0bc6](AztecProtocol/aztec-packages@c2c0bc6))
* **bootstrap:** Don't download bad cache if unstaged changes
([#11198](AztecProtocol/aztec-packages#11198))
([2bd895b](AztecProtocol/aztec-packages@2bd895b))
* **boxes:** Fix attempt 2
([#11175](AztecProtocol/aztec-packages#11175))
([e87b11a](AztecProtocol/aztec-packages@e87b11a))
* Bump inotify limits on tester
([#11217](AztecProtocol/aztec-packages#11217))
([60bdf1d](AztecProtocol/aztec-packages@60bdf1d))
* Do not emit range check for multiplication by bool
(noir-lang/noir#6983)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* Do not panic on indices which are not valid `u32`s
(noir-lang/noir#6976)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* Docs rebuild patterns
([#11191](AztecProtocol/aztec-packages#11191))
([1999990](AztecProtocol/aztec-packages@1999990))
* Don't fail parsing macro if there are parser warnings
(noir-lang/noir#6969)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* Don't retransmit txs upon node restart
([#11123](AztecProtocol/aztec-packages#11123))
([39535c9](AztecProtocol/aztec-packages@39535c9))
* Duplicate env vars
([#11166](AztecProtocol/aztec-packages#11166))
([2507b6f](AztecProtocol/aztec-packages@2507b6f))
* Error on missing function parameters
(noir-lang/noir#6967)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* Get_next_power_exponent off by 1
([#11169](AztecProtocol/aztec-packages#11169))
([80ec19e](AztecProtocol/aztec-packages@80ec19e))
* Let static_assert fail with the provided message
(noir-lang/noir#7005)
([9189120](AztecProtocol/aztec-packages@9189120))
* Max_note_len computation
([#10438](AztecProtocol/aztec-packages#10438))
([099c17b](AztecProtocol/aztec-packages@099c17b))
* Non-determinism from under constrained checks
(noir-lang/noir#6945)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* Prover node aborts execution at epoch end
([#11111](AztecProtocol/aztec-packages#11111))
([2a77616](AztecProtocol/aztec-packages@2a77616)),
closes
[#10802](AztecProtocol/aztec-packages#10802)
* Prover node does not err upon an empty epoch
([#11204](AztecProtocol/aztec-packages#11204))
([2c3ab84](AztecProtocol/aztec-packages@2c3ab84))
* Remove arch tag in sandbox images
([#11233](AztecProtocol/aztec-packages#11233))
([80a872d](AztecProtocol/aztec-packages@80a872d))
* Remove max lookup table size constant (for now)
([#11095](AztecProtocol/aztec-packages#11095))
([7e9e268](AztecProtocol/aztec-packages@7e9e268))
* Reproduce and fix bytecode blowup
(noir-lang/noir#6972)
([9189120](AztecProtocol/aztec-packages@9189120))
* Require generic trait impls to be in scope to call them
(noir-lang/noir#6913)
([9189120](AztecProtocol/aztec-packages@9189120))
* Restore upload_logs script in use by acir bench
([2d88497](AztecProtocol/aztec-packages@2d88497))
* Return trait impl method as FuncId if there's only one
(noir-lang/noir#6989)
([9189120](AztecProtocol/aztec-packages@9189120))
* Revert "chore: use L1 Tx Utils"
([#11167](AztecProtocol/aztec-packages#11167))
([f4e5c79](AztecProtocol/aztec-packages@f4e5c79))
* Sequencer times out L1 tx at end of L2 slot
([#11112](AztecProtocol/aztec-packages#11112))
([1b88a34](AztecProtocol/aztec-packages@1b88a34))
* Show output of `test_program_is_idempotent` on failure
(noir-lang/noir#6942)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* Start RC at 1 again (noir-lang/noir#6958)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* Underconstrained bug
([#11174](AztecProtocol/aztec-packages#11174))
([0b3088b](AztecProtocol/aztec-packages@0b3088b))
* Update fs max user instances for k8s
([#11220](AztecProtocol/aztec-packages#11220))
([b42da6d](AztecProtocol/aztec-packages@b42da6d))
* Use absolute path for docker bind in e2e-test
([f2885ec](AztecProtocol/aztec-packages@f2885ec))
* Wrong module to lookup trait when using crate or super
(noir-lang/noir#6974)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))


### Miscellaneous

* Add cli option to specify withdrawer address in the add-l1-validator …
([#11199](AztecProtocol/aztec-packages#11199))
([107f175](AztecProtocol/aztec-packages@107f175))
* Add memsuspend to parallel in bootstrap
([#11040](AztecProtocol/aztec-packages#11040))
([c78cb82](AztecProtocol/aztec-packages@c78cb82))
* Add more Field use info (noir-lang/noir#7019)
([9189120](AztecProtocol/aztec-packages@9189120))
* Add reproduction case for bignum test failure
(noir-lang/noir#6464)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* Add short circuit in ssa-gen for known if conditions
(noir-lang/noir#7007)
([9189120](AztecProtocol/aztec-packages@9189120))
* Also print test output to stdout in CI
(noir-lang/noir#6930)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* **avm:** Fix mac build
([#11147](AztecProtocol/aztec-packages#11147))
([1775e53](AztecProtocol/aztec-packages@1775e53))
* **avm:** Improve column stats
([#11135](AztecProtocol/aztec-packages#11135))
([535a14c](AztecProtocol/aztec-packages@535a14c))
* **avm:** Re-enable bb-prover tests in CI, change some to
check-circuit-only, enable multi-enqueued call tests
([#11180](AztecProtocol/aztec-packages#11180))
([3092212](AztecProtocol/aztec-packages@3092212))
* **avm:** Vm2 followup cleanup
([#11186](AztecProtocol/aztec-packages#11186))
([6de4013](AztecProtocol/aztec-packages@6de4013))
* Block building benchmark via github-action-benchmark
([#11202](AztecProtocol/aztec-packages#11202))
([c107b6b](AztecProtocol/aztec-packages@c107b6b)),
closes
[#11154](AztecProtocol/aztec-packages#11154)
* Bump `noir-gates-diff` (noir-lang/noir#6943)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* Bump `noir-gates-diff` (noir-lang/noir#6944)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* Bump `noir-gates-diff` (noir-lang/noir#6949)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* Bump arkworks to version `0.5.0`
(noir-lang/noir#6871)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* **ci:** Easier to use mac ci
([#11194](AztecProtocol/aztec-packages#11194))
([9ab4cee](AztecProtocol/aztec-packages@9ab4cee))
* **ci:** Ensure that prover.toml files in protocol circuits are in sync
([#11141](AztecProtocol/aztec-packages#11141))
([db769bd](AztecProtocol/aztec-packages@db769bd))
* **ci:** Fail properly in `external-repo-checks`
(noir-lang/noir#6988)
([9189120](AztecProtocol/aztec-packages@9189120))
* **ci:** Try fix boxes-test
([#11162](AztecProtocol/aztec-packages#11162))
([a66349f](AztecProtocol/aztec-packages@a66349f))
* Clarity fix in docs (noir-lang/noir#7016)
([9189120](AztecProtocol/aztec-packages@9189120))
* Delete a bunch of dead code from `noirc_evaluator`
(noir-lang/noir#6939)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* Delete docs for versions which aren't used
(noir-lang/noir#7020)
([9189120](AztecProtocol/aztec-packages@9189120))
* Disable reorg test
([#11176](AztecProtocol/aztec-packages#11176))
([78bec44](AztecProtocol/aztec-packages@78bec44))
* Disallow inserting ACIR-only instructions into brillig functions
(noir-lang/noir#7017)
([9189120](AztecProtocol/aztec-packages@9189120))
* **docs:** Backport 1.0.0-beta.0 doc fixes
(noir-lang/noir#7014)
([9189120](AztecProtocol/aztec-packages@9189120))
* **docs:** Edit Aztec.nr Guide section
([#10866](AztecProtocol/aztec-packages#10866))
([4051ba8](AztecProtocol/aztec-packages@4051ba8))
* **docs:** Remove node pages
([#11161](AztecProtocol/aztec-packages#11161))
([e494f6b](AztecProtocol/aztec-packages@e494f6b))
* **docs:** Update tx concepts page
([#10947](AztecProtocol/aztec-packages#10947))
([d9d9798](AztecProtocol/aztec-packages@d9d9798))
* Document aztec-nargo in readme
([#11173](AztecProtocol/aztec-packages#11173))
([927eabf](AztecProtocol/aztec-packages@927eabf))
* Greater stability at 1TPS
([#10981](AztecProtocol/aztec-packages#10981))
([1c23662](AztecProtocol/aztec-packages@1c23662))
* Jest reporters for CI
([#11125](AztecProtocol/aztec-packages#11125))
([90cd9d2](AztecProtocol/aztec-packages@90cd9d2))
* Log number of instructions executed for call in AVM. Misc fix.
([#11110](AztecProtocol/aztec-packages#11110))
([44e01f4](AztecProtocol/aztec-packages@44e01f4))
* Mark `aztec-nr` as expected to compile
(noir-lang/noir#7015)
([9189120](AztecProtocol/aztec-packages@9189120))
* Mark casts as able to be deduplicated
(noir-lang/noir#6996)
([9189120](AztecProtocol/aztec-packages@9189120))
* Missed test account retrieval simplification in one spot
([#11172](AztecProtocol/aztec-packages#11172))
([b72234e](AztecProtocol/aztec-packages@b72234e))
* Move comment as part of
[#6945](AztecProtocol/aztec-packages#6945)
(noir-lang/noir#6959)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* Move witness computation into class plus some other cleanup
([#11140](AztecProtocol/aztec-packages#11140))
([d41e9ab](AztecProtocol/aztec-packages@d41e9ab))
* Nuke unused `getSiblingPath` oracle
([#11090](AztecProtocol/aztec-packages#11090))
([36b640a](AztecProtocol/aztec-packages@36b640a))
* Nuking mental model of "packing into a hash"
([#11200](AztecProtocol/aztec-packages#11200))
([e1ebcc0](AztecProtocol/aztec-packages@e1ebcc0))
* Only resolved globals monomorphization
(noir-lang/noir#7006)
([9189120](AztecProtocol/aztec-packages@9189120))
* Prover db config
([#11126](AztecProtocol/aztec-packages#11126))
([9d49393](AztecProtocol/aztec-packages@9d49393)),
closes
[#10267](AztecProtocol/aztec-packages#10267)
* Redo typo PR by longxiangqiao
([#11109](AztecProtocol/aztec-packages#11109))
([b8ef30e](AztecProtocol/aztec-packages@b8ef30e))
* Refactor `get_tx_effects_hash_input_helper`
([#11213](AztecProtocol/aztec-packages#11213))
([5becb99](AztecProtocol/aztec-packages@5becb99))
* Refactor Solidity Transcript and improve error handling in sol_honk
flow
([#11158](AztecProtocol/aztec-packages#11158))
([58fdf87](AztecProtocol/aztec-packages@58fdf87))
* Remove explicit collector address
([#11227](AztecProtocol/aztec-packages#11227))
([dfb0db5](AztecProtocol/aztec-packages@dfb0db5))
* Remove resolve_is_unconstrained pass
(noir-lang/noir#7004)
([9189120](AztecProtocol/aztec-packages@9189120))
* Removing noir bug workaround
([#10535](AztecProtocol/aztec-packages#10535))
([8be882f](AztecProtocol/aztec-packages@8be882f))
* Replace relative paths to noir-protocol-circuits
([d8619fa](AztecProtocol/aztec-packages@d8619fa))
* Replace relative paths to noir-protocol-circuits
([70cad1c](AztecProtocol/aztec-packages@70cad1c))
* Replace relative paths to noir-protocol-circuits
([e962534](AztecProtocol/aztec-packages@e962534))
* Replace relative paths to noir-protocol-circuits
([ba5a589](AztecProtocol/aztec-packages@ba5a589))
* Replace relative paths to noir-protocol-circuits
([b7c3fa2](AztecProtocol/aztec-packages@b7c3fa2))
* Replace relative paths to noir-protocol-circuits
([32840c6](AztecProtocol/aztec-packages@32840c6))
* Require safety doc comment for unsafe instead of
`//[@safety](https://github.com/safety)`
(noir-lang/noir#6992)
([9189120](AztecProtocol/aztec-packages@9189120))
* Reserve `enum` and `match` keywords
(noir-lang/noir#6961)
([9189120](AztecProtocol/aztec-packages@9189120))
* Rpc server cleanup & misc fixes
([#11145](AztecProtocol/aztec-packages#11145))
([8a927eb](AztecProtocol/aztec-packages@8a927eb))
* Sanity checking of proving job IDs
([#11134](AztecProtocol/aztec-packages#11134))
([61c3e95](AztecProtocol/aztec-packages@61c3e95))
* Save kind smoke test logs as artifact
([#11212](AztecProtocol/aztec-packages#11212))
([1389a5b](AztecProtocol/aztec-packages@1389a5b))
* Separate unconstrained functions during monomorphization
(noir-lang/noir#6894)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* Simplify a couple of enum variants
(noir-lang/noir#7025)
([9189120](AztecProtocol/aztec-packages@9189120))
* Simplify boolean in a mul of a mul
(noir-lang/noir#6951)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* SmallSubgroupIPA tests
([#11106](AztecProtocol/aztec-packages#11106))
([f034e2a](AztecProtocol/aztec-packages@f034e2a))
* **spartan:** Making the spartan script install jq
([#11231](AztecProtocol/aztec-packages#11231))
([7e628cc](AztecProtocol/aztec-packages@7e628cc))
* Test:e2e defaults to no-docker
([#10966](AztecProtocol/aztec-packages#10966))
([15e0d71](AztecProtocol/aztec-packages@15e0d71))
* Turn on averaging for protocol circuits metrics in CI
(noir-lang/noir#6999)
([9189120](AztecProtocol/aztec-packages@9189120))
* Update aztec-spartan.sh script
([#11228](AztecProtocol/aztec-packages#11228))
([52b3a87](AztecProtocol/aztec-packages@52b3a87))
* Use DFG in SSA printer (noir-lang/noir#6986)
([9189120](AztecProtocol/aztec-packages@9189120))
* Use L1 Tx Utils
([#10759](AztecProtocol/aztec-packages#10759))
([ccf28f5](AztecProtocol/aztec-packages@ccf28f5)),
closes
[#10464](AztecProtocol/aztec-packages#10464)
* Use logs for benchmarking
(noir-lang/noir#6911)
([3883a0e](AztecProtocol/aztec-packages@3883a0e))
* VariableMerkleTree readability improvements
([#11165](AztecProtocol/aztec-packages#11165))
([010d1b0](AztecProtocol/aztec-packages@010d1b0))
* Wait for ethereum in each pod
([#11238](AztecProtocol/aztec-packages#11238))
([9c08e00](AztecProtocol/aztec-packages@9c08e00))


### Documentation

* Enable protocol specs for docs in dev mode
([#11219](AztecProtocol/aztec-packages#11219))
([10c8afe](AztecProtocol/aztec-packages@10c8afe))
</details>

<details><summary>barretenberg: 0.70.0</summary>

##
[0.70.0](AztecProtocol/aztec-packages@barretenberg-v0.69.1...barretenberg-v0.70.0)
(2025-01-15)


### Features

* **avm2:** Avm redesign init
([#10906](AztecProtocol/aztec-packages#10906))
([231f017](AztecProtocol/aztec-packages@231f017))
* Permutation argument optimizations
([#10960](AztecProtocol/aztec-packages#10960))
([de99603](AztecProtocol/aztec-packages@de99603))
* Use tail public inputs as transaction hash
([#11100](AztecProtocol/aztec-packages#11100))
([34be2c3](AztecProtocol/aztec-packages@34be2c3))


### Bug Fixes

* **avm:** AVM circuit fixes related calldata, returndata and call_ptr
([#11207](AztecProtocol/aztec-packages#11207))
([2f05dc0](AztecProtocol/aztec-packages@2f05dc0))
* **avm:** Mac build
([#11195](AztecProtocol/aztec-packages#11195))
([c4f4452](AztecProtocol/aztec-packages@c4f4452))
* **avm:** Mac build (retry)
([#11197](AztecProtocol/aztec-packages#11197))
([0a4b763](AztecProtocol/aztec-packages@0a4b763))
* **bootstrap:** Don't download bad cache if unstaged changes
([#11198](AztecProtocol/aztec-packages#11198))
([2bd895b](AztecProtocol/aztec-packages@2bd895b))
* Remove max lookup table size constant (for now)
([#11095](AztecProtocol/aztec-packages#11095))
([7e9e268](AztecProtocol/aztec-packages@7e9e268))


### Miscellaneous

* **avm:** Fix mac build
([#11147](AztecProtocol/aztec-packages#11147))
([1775e53](AztecProtocol/aztec-packages@1775e53))
* **avm:** Improve column stats
([#11135](AztecProtocol/aztec-packages#11135))
([535a14c](AztecProtocol/aztec-packages@535a14c))
* **avm:** Re-enable bb-prover tests in CI, change some to
check-circuit-only, enable multi-enqueued call tests
([#11180](AztecProtocol/aztec-packages#11180))
([3092212](AztecProtocol/aztec-packages@3092212))
* **avm:** Vm2 followup cleanup
([#11186](AztecProtocol/aztec-packages#11186))
([6de4013](AztecProtocol/aztec-packages@6de4013))
* **docs:** Update tx concepts page
([#10947](AztecProtocol/aztec-packages#10947))
([d9d9798](AztecProtocol/aztec-packages@d9d9798))
* Move witness computation into class plus some other cleanup
([#11140](AztecProtocol/aztec-packages#11140))
([d41e9ab](AztecProtocol/aztec-packages@d41e9ab))
* Redo typo PR by longxiangqiao
([#11109](AztecProtocol/aztec-packages#11109))
([b8ef30e](AztecProtocol/aztec-packages@b8ef30e))
* Refactor Solidity Transcript and improve error handling in sol_honk
flow
([#11158](AztecProtocol/aztec-packages#11158))
([58fdf87](AztecProtocol/aztec-packages@58fdf87))
* SmallSubgroupIPA tests
([#11106](AztecProtocol/aztec-packages#11106))
([f034e2a](AztecProtocol/aztec-packages@f034e2a))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-avm Component: AVM related tickets (aka public VM)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants