diff --git a/acir_tests/run_acir_tests.sh b/acir_tests/run_acir_tests.sh index 20845e978a..1deabdaf3e 100755 --- a/acir_tests/run_acir_tests.sh +++ b/acir_tests/run_acir_tests.sh @@ -7,7 +7,7 @@ set -e BB=$PWD/${BB:-../cpp/build/bin/bb} CRS_PATH=~/.bb-crs -BRANCH=master +BRANCH=kw/acvm-0-24 # Pull down the test vectors from the noir repo, if we don't have the folder already. if [ ! -d acir_tests ]; then @@ -29,7 +29,7 @@ fi cd acir_tests # Convert them to array -skip_array=(diamond_deps_0 workspace workspace_default_member) +skip_array=(diamond_deps_0 workspace workspace_default_member double_verify_proof) function test() { echo -n "Testing $1... " diff --git a/cpp/src/barretenberg/dsl/acir_format/serde/acir.hpp b/cpp/src/barretenberg/dsl/acir_format/serde/acir.hpp index 34e87c391d..60ca1a2c07 100644 --- a/cpp/src/barretenberg/dsl/acir_format/serde/acir.hpp +++ b/cpp/src/barretenberg/dsl/acir_format/serde/acir.hpp @@ -755,31 +755,6 @@ struct Brillig { static Brillig bincodeDeserialize(std::vector); }; -struct LogInfo { - - struct FinalizedOutput { - std::string value; - - friend bool operator==(const FinalizedOutput&, const FinalizedOutput&); - std::vector bincodeSerialize() const; - static FinalizedOutput bincodeDeserialize(std::vector); - }; - - struct WitnessOutput { - std::vector value; - - friend bool operator==(const WitnessOutput&, const WitnessOutput&); - std::vector bincodeSerialize() const; - static WitnessOutput bincodeDeserialize(std::vector); - }; - - std::variant value; - - friend bool operator==(const LogInfo&, const LogInfo&); - std::vector bincodeSerialize() const; - static LogInfo bincodeDeserialize(std::vector); -}; - struct QuotientDirective { Circuit::Expression a; Circuit::Expression b; @@ -794,15 +769,6 @@ struct QuotientDirective { struct Directive { - struct Invert { - Circuit::Witness x; - Circuit::Witness result; - - friend bool operator==(const Invert&, const Invert&); - std::vector bincodeSerialize() const; - static Invert bincodeDeserialize(std::vector); - }; - struct Quotient { Circuit::QuotientDirective value; @@ -832,15 +798,7 @@ struct Directive { static PermutationSort bincodeDeserialize(std::vector); }; - struct Log { - Circuit::LogInfo value; - - friend bool operator==(const Log&, const Log&); - std::vector bincodeSerialize() const; - static Log bincodeDeserialize(std::vector); - }; - - std::variant value; + std::variant value; friend bool operator==(const Directive&, const Directive&); std::vector bincodeSerialize() const; @@ -894,6 +852,7 @@ struct Opcode { struct MemoryOp { Circuit::BlockId block_id; Circuit::MemOp op; + std::optional predicate; friend bool operator==(const MemoryOp&, const MemoryOp&); std::vector bincodeSerialize() const; @@ -916,6 +875,32 @@ struct Opcode { static Opcode bincodeDeserialize(std::vector); }; +struct OpcodeLocation { + + struct Acir { + uint64_t value; + + friend bool operator==(const Acir&, const Acir&); + std::vector bincodeSerialize() const; + static Acir bincodeDeserialize(std::vector); + }; + + struct Brillig { + uint64_t acir_index; + uint64_t brillig_index; + + friend bool operator==(const Brillig&, const Brillig&); + std::vector bincodeSerialize() const; + static Brillig bincodeDeserialize(std::vector); + }; + + std::variant value; + + friend bool operator==(const OpcodeLocation&, const OpcodeLocation&); + std::vector bincodeSerialize() const; + static OpcodeLocation bincodeDeserialize(std::vector); +}; + struct PublicInputs { std::vector value; @@ -930,6 +915,7 @@ struct Circuit { std::vector private_parameters; PublicInputs public_parameters; PublicInputs return_values; + std::vector> assert_messages; friend bool operator==(const Circuit&, const Circuit&); std::vector bincodeSerialize() const; @@ -4429,6 +4415,9 @@ inline bool operator==(const Circuit& lhs, const Circuit& rhs) if (!(lhs.return_values == rhs.return_values)) { return false; } + if (!(lhs.assert_messages == rhs.assert_messages)) { + return false; + } return true; } @@ -4461,6 +4450,7 @@ void serde::Serializable::serialize(const Circuit::Circuit& ob serde::Serializable::serialize(obj.private_parameters, serializer); serde::Serializable::serialize(obj.public_parameters, serializer); serde::Serializable::serialize(obj.return_values, serializer); + serde::Serializable::serialize(obj.assert_messages, serializer); serializer.decrease_container_depth(); } @@ -4475,6 +4465,7 @@ Circuit::Circuit serde::Deserializable::deserialize(Deserializ obj.private_parameters = serde::Deserializable::deserialize(deserializer); obj.public_parameters = serde::Deserializable::deserialize(deserializer); obj.return_values = serde::Deserializable::deserialize(deserializer); + obj.assert_messages = serde::Deserializable::deserialize(deserializer); deserializer.decrease_container_depth(); return obj; } @@ -4530,57 +4521,6 @@ Circuit::Directive serde::Deserializable::deserialize(Deseri namespace Circuit { -inline bool operator==(const Directive::Invert& lhs, const Directive::Invert& rhs) -{ - if (!(lhs.x == rhs.x)) { - return false; - } - if (!(lhs.result == rhs.result)) { - return false; - } - return true; -} - -inline std::vector Directive::Invert::bincodeSerialize() const -{ - auto serializer = serde::BincodeSerializer(); - serde::Serializable::serialize(*this, serializer); - return std::move(serializer).bytes(); -} - -inline Directive::Invert Directive::Invert::bincodeDeserialize(std::vector input) -{ - auto deserializer = serde::BincodeDeserializer(input); - auto value = serde::Deserializable::deserialize(deserializer); - if (deserializer.get_buffer_offset() < input.size()) { - throw_or_abort("Some input bytes were not read"); - } - return value; -} - -} // end of namespace Circuit - -template <> -template -void serde::Serializable::serialize(const Circuit::Directive::Invert& obj, - Serializer& serializer) -{ - serde::Serializable::serialize(obj.x, serializer); - serde::Serializable::serialize(obj.result, serializer); -} - -template <> -template -Circuit::Directive::Invert serde::Deserializable::deserialize(Deserializer& deserializer) -{ - Circuit::Directive::Invert obj; - obj.x = serde::Deserializable::deserialize(deserializer); - obj.result = serde::Deserializable::deserialize(deserializer); - return obj; -} - -namespace Circuit { - inline bool operator==(const Directive::Quotient& lhs, const Directive::Quotient& rhs) { if (!(lhs.value == rhs.value)) { @@ -4747,51 +4687,6 @@ Circuit::Directive::PermutationSort serde::Deserializable Directive::Log::bincodeSerialize() const -{ - auto serializer = serde::BincodeSerializer(); - serde::Serializable::serialize(*this, serializer); - return std::move(serializer).bytes(); -} - -inline Directive::Log Directive::Log::bincodeDeserialize(std::vector input) -{ - auto deserializer = serde::BincodeDeserializer(input); - auto value = serde::Deserializable::deserialize(deserializer); - if (deserializer.get_buffer_offset() < input.size()) { - throw_or_abort("Some input bytes were not read"); - } - return value; -} - -} // end of namespace Circuit - -template <> -template -void serde::Serializable::serialize(const Circuit::Directive::Log& obj, Serializer& serializer) -{ - serde::Serializable::serialize(obj.value, serializer); -} - -template <> -template -Circuit::Directive::Log serde::Deserializable::deserialize(Deserializer& deserializer) -{ - Circuit::Directive::Log obj; - obj.value = serde::Deserializable::deserialize(deserializer); - return obj; -} - -namespace Circuit { - inline bool operator==(const Expression& lhs, const Expression& rhs) { if (!(lhs.mul_terms == rhs.mul_terms)) { @@ -5207,25 +5102,31 @@ Circuit::HeapVector serde::Deserializable::deserialize(Dese namespace Circuit { -inline bool operator==(const LogInfo& lhs, const LogInfo& rhs) +inline bool operator==(const MemOp& lhs, const MemOp& rhs) { + if (!(lhs.operation == rhs.operation)) { + return false; + } + if (!(lhs.index == rhs.index)) { + return false; + } if (!(lhs.value == rhs.value)) { return false; } return true; } -inline std::vector LogInfo::bincodeSerialize() const +inline std::vector MemOp::bincodeSerialize() const { auto serializer = serde::BincodeSerializer(); - serde::Serializable::serialize(*this, serializer); + serde::Serializable::serialize(*this, serializer); return std::move(serializer).bytes(); } -inline LogInfo LogInfo::bincodeDeserialize(std::vector input) +inline MemOp MemOp::bincodeDeserialize(std::vector input) { auto deserializer = serde::BincodeDeserializer(input); - auto value = serde::Deserializable::deserialize(deserializer); + auto value = serde::Deserializable::deserialize(deserializer); if (deserializer.get_buffer_offset() < input.size()) { throw_or_abort("Some input bytes were not read"); } @@ -5236,19 +5137,23 @@ inline LogInfo LogInfo::bincodeDeserialize(std::vector input) template <> template -void serde::Serializable::serialize(const Circuit::LogInfo& obj, Serializer& serializer) +void serde::Serializable::serialize(const Circuit::MemOp& obj, Serializer& serializer) { serializer.increase_container_depth(); + serde::Serializable::serialize(obj.operation, serializer); + serde::Serializable::serialize(obj.index, serializer); serde::Serializable::serialize(obj.value, serializer); serializer.decrease_container_depth(); } template <> template -Circuit::LogInfo serde::Deserializable::deserialize(Deserializer& deserializer) +Circuit::MemOp serde::Deserializable::deserialize(Deserializer& deserializer) { deserializer.increase_container_depth(); - Circuit::LogInfo obj; + Circuit::MemOp obj; + obj.operation = serde::Deserializable::deserialize(deserializer); + obj.index = serde::Deserializable::deserialize(deserializer); obj.value = serde::Deserializable::deserialize(deserializer); deserializer.decrease_container_depth(); return obj; @@ -5256,7 +5161,7 @@ Circuit::LogInfo serde::Deserializable::deserialize(Deserializ namespace Circuit { -inline bool operator==(const LogInfo::FinalizedOutput& lhs, const LogInfo::FinalizedOutput& rhs) +inline bool operator==(const Opcode& lhs, const Opcode& rhs) { if (!(lhs.value == rhs.value)) { return false; @@ -5264,17 +5169,17 @@ inline bool operator==(const LogInfo::FinalizedOutput& lhs, const LogInfo::Final return true; } -inline std::vector LogInfo::FinalizedOutput::bincodeSerialize() const +inline std::vector Opcode::bincodeSerialize() const { auto serializer = serde::BincodeSerializer(); - serde::Serializable::serialize(*this, serializer); + serde::Serializable::serialize(*this, serializer); return std::move(serializer).bytes(); } -inline LogInfo::FinalizedOutput LogInfo::FinalizedOutput::bincodeDeserialize(std::vector input) +inline Opcode Opcode::bincodeDeserialize(std::vector input) { auto deserializer = serde::BincodeDeserializer(input); - auto value = serde::Deserializable::deserialize(deserializer); + auto value = serde::Deserializable::deserialize(deserializer); if (deserializer.get_buffer_offset() < input.size()) { throw_or_abort("Some input bytes were not read"); } @@ -5285,25 +5190,27 @@ inline LogInfo::FinalizedOutput LogInfo::FinalizedOutput::bincodeDeserialize(std template <> template -void serde::Serializable::serialize(const Circuit::LogInfo::FinalizedOutput& obj, - Serializer& serializer) +void serde::Serializable::serialize(const Circuit::Opcode& obj, Serializer& serializer) { + serializer.increase_container_depth(); serde::Serializable::serialize(obj.value, serializer); + serializer.decrease_container_depth(); } template <> template -Circuit::LogInfo::FinalizedOutput serde::Deserializable::deserialize( - Deserializer& deserializer) +Circuit::Opcode serde::Deserializable::deserialize(Deserializer& deserializer) { - Circuit::LogInfo::FinalizedOutput obj; + deserializer.increase_container_depth(); + Circuit::Opcode obj; obj.value = serde::Deserializable::deserialize(deserializer); + deserializer.decrease_container_depth(); return obj; } namespace Circuit { -inline bool operator==(const LogInfo::WitnessOutput& lhs, const LogInfo::WitnessOutput& rhs) +inline bool operator==(const Opcode::Arithmetic& lhs, const Opcode::Arithmetic& rhs) { if (!(lhs.value == rhs.value)) { return false; @@ -5311,17 +5218,17 @@ inline bool operator==(const LogInfo::WitnessOutput& lhs, const LogInfo::Witness return true; } -inline std::vector LogInfo::WitnessOutput::bincodeSerialize() const +inline std::vector Opcode::Arithmetic::bincodeSerialize() const { auto serializer = serde::BincodeSerializer(); - serde::Serializable::serialize(*this, serializer); + serde::Serializable::serialize(*this, serializer); return std::move(serializer).bytes(); } -inline LogInfo::WitnessOutput LogInfo::WitnessOutput::bincodeDeserialize(std::vector input) +inline Opcode::Arithmetic Opcode::Arithmetic::bincodeDeserialize(std::vector input) { auto deserializer = serde::BincodeDeserializer(input); - auto value = serde::Deserializable::deserialize(deserializer); + auto value = serde::Deserializable::deserialize(deserializer); if (deserializer.get_buffer_offset() < input.size()) { throw_or_abort("Some input bytes were not read"); } @@ -5332,49 +5239,42 @@ inline LogInfo::WitnessOutput LogInfo::WitnessOutput::bincodeDeserialize(std::ve template <> template -void serde::Serializable::serialize(const Circuit::LogInfo::WitnessOutput& obj, - Serializer& serializer) +void serde::Serializable::serialize(const Circuit::Opcode::Arithmetic& obj, + Serializer& serializer) { serde::Serializable::serialize(obj.value, serializer); } template <> template -Circuit::LogInfo::WitnessOutput serde::Deserializable::deserialize( - Deserializer& deserializer) +Circuit::Opcode::Arithmetic serde::Deserializable::deserialize(Deserializer& deserializer) { - Circuit::LogInfo::WitnessOutput obj; + Circuit::Opcode::Arithmetic obj; obj.value = serde::Deserializable::deserialize(deserializer); return obj; } namespace Circuit { -inline bool operator==(const MemOp& lhs, const MemOp& rhs) +inline bool operator==(const Opcode::BlackBoxFuncCall& lhs, const Opcode::BlackBoxFuncCall& rhs) { - if (!(lhs.operation == rhs.operation)) { - return false; - } - if (!(lhs.index == rhs.index)) { - return false; - } if (!(lhs.value == rhs.value)) { return false; } return true; } -inline std::vector MemOp::bincodeSerialize() const +inline std::vector Opcode::BlackBoxFuncCall::bincodeSerialize() const { auto serializer = serde::BincodeSerializer(); - serde::Serializable::serialize(*this, serializer); + serde::Serializable::serialize(*this, serializer); return std::move(serializer).bytes(); } -inline MemOp MemOp::bincodeDeserialize(std::vector input) +inline Opcode::BlackBoxFuncCall Opcode::BlackBoxFuncCall::bincodeDeserialize(std::vector input) { auto deserializer = serde::BincodeDeserializer(input); - auto value = serde::Deserializable::deserialize(deserializer); + auto value = serde::Deserializable::deserialize(deserializer); if (deserializer.get_buffer_offset() < input.size()) { throw_or_abort("Some input bytes were not read"); } @@ -5385,31 +5285,25 @@ inline MemOp MemOp::bincodeDeserialize(std::vector input) template <> template -void serde::Serializable::serialize(const Circuit::MemOp& obj, Serializer& serializer) +void serde::Serializable::serialize(const Circuit::Opcode::BlackBoxFuncCall& obj, + Serializer& serializer) { - serializer.increase_container_depth(); - serde::Serializable::serialize(obj.operation, serializer); - serde::Serializable::serialize(obj.index, serializer); serde::Serializable::serialize(obj.value, serializer); - serializer.decrease_container_depth(); } template <> template -Circuit::MemOp serde::Deserializable::deserialize(Deserializer& deserializer) +Circuit::Opcode::BlackBoxFuncCall serde::Deserializable::deserialize( + Deserializer& deserializer) { - deserializer.increase_container_depth(); - Circuit::MemOp obj; - obj.operation = serde::Deserializable::deserialize(deserializer); - obj.index = serde::Deserializable::deserialize(deserializer); + Circuit::Opcode::BlackBoxFuncCall obj; obj.value = serde::Deserializable::deserialize(deserializer); - deserializer.decrease_container_depth(); return obj; } namespace Circuit { -inline bool operator==(const Opcode& lhs, const Opcode& rhs) +inline bool operator==(const Opcode::Directive& lhs, const Opcode::Directive& rhs) { if (!(lhs.value == rhs.value)) { return false; @@ -5417,17 +5311,17 @@ inline bool operator==(const Opcode& lhs, const Opcode& rhs) return true; } -inline std::vector Opcode::bincodeSerialize() const +inline std::vector Opcode::Directive::bincodeSerialize() const { auto serializer = serde::BincodeSerializer(); - serde::Serializable::serialize(*this, serializer); + serde::Serializable::serialize(*this, serializer); return std::move(serializer).bytes(); } -inline Opcode Opcode::bincodeDeserialize(std::vector input) +inline Opcode::Directive Opcode::Directive::bincodeDeserialize(std::vector input) { auto deserializer = serde::BincodeDeserializer(input); - auto value = serde::Deserializable::deserialize(deserializer); + auto value = serde::Deserializable::deserialize(deserializer); if (deserializer.get_buffer_offset() < input.size()) { throw_or_abort("Some input bytes were not read"); } @@ -5438,27 +5332,24 @@ inline Opcode Opcode::bincodeDeserialize(std::vector input) template <> template -void serde::Serializable::serialize(const Circuit::Opcode& obj, Serializer& serializer) +void serde::Serializable::serialize(const Circuit::Opcode::Directive& obj, + Serializer& serializer) { - serializer.increase_container_depth(); serde::Serializable::serialize(obj.value, serializer); - serializer.decrease_container_depth(); } template <> template -Circuit::Opcode serde::Deserializable::deserialize(Deserializer& deserializer) +Circuit::Opcode::Directive serde::Deserializable::deserialize(Deserializer& deserializer) { - deserializer.increase_container_depth(); - Circuit::Opcode obj; + Circuit::Opcode::Directive obj; obj.value = serde::Deserializable::deserialize(deserializer); - deserializer.decrease_container_depth(); return obj; } namespace Circuit { -inline bool operator==(const Opcode::Arithmetic& lhs, const Opcode::Arithmetic& rhs) +inline bool operator==(const Opcode::Brillig& lhs, const Opcode::Brillig& rhs) { if (!(lhs.value == rhs.value)) { return false; @@ -5466,17 +5357,17 @@ inline bool operator==(const Opcode::Arithmetic& lhs, const Opcode::Arithmetic& return true; } -inline std::vector Opcode::Arithmetic::bincodeSerialize() const +inline std::vector Opcode::Brillig::bincodeSerialize() const { auto serializer = serde::BincodeSerializer(); - serde::Serializable::serialize(*this, serializer); + serde::Serializable::serialize(*this, serializer); return std::move(serializer).bytes(); } -inline Opcode::Arithmetic Opcode::Arithmetic::bincodeDeserialize(std::vector input) +inline Opcode::Brillig Opcode::Brillig::bincodeDeserialize(std::vector input) { auto deserializer = serde::BincodeDeserializer(input); - auto value = serde::Deserializable::deserialize(deserializer); + auto value = serde::Deserializable::deserialize(deserializer); if (deserializer.get_buffer_offset() < input.size()) { throw_or_abort("Some input bytes were not read"); } @@ -5487,42 +5378,48 @@ inline Opcode::Arithmetic Opcode::Arithmetic::bincodeDeserialize(std::vector template -void serde::Serializable::serialize(const Circuit::Opcode::Arithmetic& obj, - Serializer& serializer) +void serde::Serializable::serialize(const Circuit::Opcode::Brillig& obj, + Serializer& serializer) { serde::Serializable::serialize(obj.value, serializer); } template <> template -Circuit::Opcode::Arithmetic serde::Deserializable::deserialize(Deserializer& deserializer) +Circuit::Opcode::Brillig serde::Deserializable::deserialize(Deserializer& deserializer) { - Circuit::Opcode::Arithmetic obj; + Circuit::Opcode::Brillig obj; obj.value = serde::Deserializable::deserialize(deserializer); return obj; } namespace Circuit { -inline bool operator==(const Opcode::BlackBoxFuncCall& lhs, const Opcode::BlackBoxFuncCall& rhs) +inline bool operator==(const Opcode::MemoryOp& lhs, const Opcode::MemoryOp& rhs) { - if (!(lhs.value == rhs.value)) { + if (!(lhs.block_id == rhs.block_id)) { + return false; + } + if (!(lhs.op == rhs.op)) { + return false; + } + if (!(lhs.predicate == rhs.predicate)) { return false; } return true; } -inline std::vector Opcode::BlackBoxFuncCall::bincodeSerialize() const +inline std::vector Opcode::MemoryOp::bincodeSerialize() const { auto serializer = serde::BincodeSerializer(); - serde::Serializable::serialize(*this, serializer); + serde::Serializable::serialize(*this, serializer); return std::move(serializer).bytes(); } -inline Opcode::BlackBoxFuncCall Opcode::BlackBoxFuncCall::bincodeDeserialize(std::vector input) +inline Opcode::MemoryOp Opcode::MemoryOp::bincodeDeserialize(std::vector input) { auto deserializer = serde::BincodeDeserializer(input); - auto value = serde::Deserializable::deserialize(deserializer); + auto value = serde::Deserializable::deserialize(deserializer); if (deserializer.get_buffer_offset() < input.size()) { throw_or_abort("Some input bytes were not read"); } @@ -5533,43 +5430,49 @@ inline Opcode::BlackBoxFuncCall Opcode::BlackBoxFuncCall::bincodeDeserialize(std template <> template -void serde::Serializable::serialize(const Circuit::Opcode::BlackBoxFuncCall& obj, - Serializer& serializer) +void serde::Serializable::serialize(const Circuit::Opcode::MemoryOp& obj, + Serializer& serializer) { - serde::Serializable::serialize(obj.value, serializer); + serde::Serializable::serialize(obj.block_id, serializer); + serde::Serializable::serialize(obj.op, serializer); + serde::Serializable::serialize(obj.predicate, serializer); } template <> template -Circuit::Opcode::BlackBoxFuncCall serde::Deserializable::deserialize( - Deserializer& deserializer) +Circuit::Opcode::MemoryOp serde::Deserializable::deserialize(Deserializer& deserializer) { - Circuit::Opcode::BlackBoxFuncCall obj; - obj.value = serde::Deserializable::deserialize(deserializer); + Circuit::Opcode::MemoryOp obj; + obj.block_id = serde::Deserializable::deserialize(deserializer); + obj.op = serde::Deserializable::deserialize(deserializer); + obj.predicate = serde::Deserializable::deserialize(deserializer); return obj; } namespace Circuit { -inline bool operator==(const Opcode::Directive& lhs, const Opcode::Directive& rhs) +inline bool operator==(const Opcode::MemoryInit& lhs, const Opcode::MemoryInit& rhs) { - if (!(lhs.value == rhs.value)) { + if (!(lhs.block_id == rhs.block_id)) { + return false; + } + if (!(lhs.init == rhs.init)) { return false; } return true; } -inline std::vector Opcode::Directive::bincodeSerialize() const +inline std::vector Opcode::MemoryInit::bincodeSerialize() const { auto serializer = serde::BincodeSerializer(); - serde::Serializable::serialize(*this, serializer); + serde::Serializable::serialize(*this, serializer); return std::move(serializer).bytes(); } -inline Opcode::Directive Opcode::Directive::bincodeDeserialize(std::vector input) +inline Opcode::MemoryInit Opcode::MemoryInit::bincodeDeserialize(std::vector input) { auto deserializer = serde::BincodeDeserializer(input); - auto value = serde::Deserializable::deserialize(deserializer); + auto value = serde::Deserializable::deserialize(deserializer); if (deserializer.get_buffer_offset() < input.size()) { throw_or_abort("Some input bytes were not read"); } @@ -5580,24 +5483,26 @@ inline Opcode::Directive Opcode::Directive::bincodeDeserialize(std::vector template -void serde::Serializable::serialize(const Circuit::Opcode::Directive& obj, - Serializer& serializer) +void serde::Serializable::serialize(const Circuit::Opcode::MemoryInit& obj, + Serializer& serializer) { - serde::Serializable::serialize(obj.value, serializer); + serde::Serializable::serialize(obj.block_id, serializer); + serde::Serializable::serialize(obj.init, serializer); } template <> template -Circuit::Opcode::Directive serde::Deserializable::deserialize(Deserializer& deserializer) +Circuit::Opcode::MemoryInit serde::Deserializable::deserialize(Deserializer& deserializer) { - Circuit::Opcode::Directive obj; - obj.value = serde::Deserializable::deserialize(deserializer); + Circuit::Opcode::MemoryInit obj; + obj.block_id = serde::Deserializable::deserialize(deserializer); + obj.init = serde::Deserializable::deserialize(deserializer); return obj; } namespace Circuit { -inline bool operator==(const Opcode::Brillig& lhs, const Opcode::Brillig& rhs) +inline bool operator==(const OpcodeLocation& lhs, const OpcodeLocation& rhs) { if (!(lhs.value == rhs.value)) { return false; @@ -5605,17 +5510,17 @@ inline bool operator==(const Opcode::Brillig& lhs, const Opcode::Brillig& rhs) return true; } -inline std::vector Opcode::Brillig::bincodeSerialize() const +inline std::vector OpcodeLocation::bincodeSerialize() const { auto serializer = serde::BincodeSerializer(); - serde::Serializable::serialize(*this, serializer); + serde::Serializable::serialize(*this, serializer); return std::move(serializer).bytes(); } -inline Opcode::Brillig Opcode::Brillig::bincodeDeserialize(std::vector input) +inline OpcodeLocation OpcodeLocation::bincodeDeserialize(std::vector input) { auto deserializer = serde::BincodeDeserializer(input); - auto value = serde::Deserializable::deserialize(deserializer); + auto value = serde::Deserializable::deserialize(deserializer); if (deserializer.get_buffer_offset() < input.size()) { throw_or_abort("Some input bytes were not read"); } @@ -5626,45 +5531,45 @@ inline Opcode::Brillig Opcode::Brillig::bincodeDeserialize(std::vector template <> template -void serde::Serializable::serialize(const Circuit::Opcode::Brillig& obj, - Serializer& serializer) +void serde::Serializable::serialize(const Circuit::OpcodeLocation& obj, Serializer& serializer) { + serializer.increase_container_depth(); serde::Serializable::serialize(obj.value, serializer); + serializer.decrease_container_depth(); } template <> template -Circuit::Opcode::Brillig serde::Deserializable::deserialize(Deserializer& deserializer) +Circuit::OpcodeLocation serde::Deserializable::deserialize(Deserializer& deserializer) { - Circuit::Opcode::Brillig obj; + deserializer.increase_container_depth(); + Circuit::OpcodeLocation obj; obj.value = serde::Deserializable::deserialize(deserializer); + deserializer.decrease_container_depth(); return obj; } namespace Circuit { -inline bool operator==(const Opcode::MemoryOp& lhs, const Opcode::MemoryOp& rhs) +inline bool operator==(const OpcodeLocation::Acir& lhs, const OpcodeLocation::Acir& rhs) { - if (!(lhs.block_id == rhs.block_id)) { - return false; - } - if (!(lhs.op == rhs.op)) { + if (!(lhs.value == rhs.value)) { return false; } return true; } -inline std::vector Opcode::MemoryOp::bincodeSerialize() const +inline std::vector OpcodeLocation::Acir::bincodeSerialize() const { auto serializer = serde::BincodeSerializer(); - serde::Serializable::serialize(*this, serializer); + serde::Serializable::serialize(*this, serializer); return std::move(serializer).bytes(); } -inline Opcode::MemoryOp Opcode::MemoryOp::bincodeDeserialize(std::vector input) +inline OpcodeLocation::Acir OpcodeLocation::Acir::bincodeDeserialize(std::vector input) { auto deserializer = serde::BincodeDeserializer(input); - auto value = serde::Deserializable::deserialize(deserializer); + auto value = serde::Deserializable::deserialize(deserializer); if (deserializer.get_buffer_offset() < input.size()) { throw_or_abort("Some input bytes were not read"); } @@ -5675,47 +5580,46 @@ inline Opcode::MemoryOp Opcode::MemoryOp::bincodeDeserialize(std::vector template -void serde::Serializable::serialize(const Circuit::Opcode::MemoryOp& obj, - Serializer& serializer) +void serde::Serializable::serialize(const Circuit::OpcodeLocation::Acir& obj, + Serializer& serializer) { - serde::Serializable::serialize(obj.block_id, serializer); - serde::Serializable::serialize(obj.op, serializer); + serde::Serializable::serialize(obj.value, serializer); } template <> template -Circuit::Opcode::MemoryOp serde::Deserializable::deserialize(Deserializer& deserializer) +Circuit::OpcodeLocation::Acir serde::Deserializable::deserialize( + Deserializer& deserializer) { - Circuit::Opcode::MemoryOp obj; - obj.block_id = serde::Deserializable::deserialize(deserializer); - obj.op = serde::Deserializable::deserialize(deserializer); + Circuit::OpcodeLocation::Acir obj; + obj.value = serde::Deserializable::deserialize(deserializer); return obj; } namespace Circuit { -inline bool operator==(const Opcode::MemoryInit& lhs, const Opcode::MemoryInit& rhs) +inline bool operator==(const OpcodeLocation::Brillig& lhs, const OpcodeLocation::Brillig& rhs) { - if (!(lhs.block_id == rhs.block_id)) { + if (!(lhs.acir_index == rhs.acir_index)) { return false; } - if (!(lhs.init == rhs.init)) { + if (!(lhs.brillig_index == rhs.brillig_index)) { return false; } return true; } -inline std::vector Opcode::MemoryInit::bincodeSerialize() const +inline std::vector OpcodeLocation::Brillig::bincodeSerialize() const { auto serializer = serde::BincodeSerializer(); - serde::Serializable::serialize(*this, serializer); + serde::Serializable::serialize(*this, serializer); return std::move(serializer).bytes(); } -inline Opcode::MemoryInit Opcode::MemoryInit::bincodeDeserialize(std::vector input) +inline OpcodeLocation::Brillig OpcodeLocation::Brillig::bincodeDeserialize(std::vector input) { auto deserializer = serde::BincodeDeserializer(input); - auto value = serde::Deserializable::deserialize(deserializer); + auto value = serde::Deserializable::deserialize(deserializer); if (deserializer.get_buffer_offset() < input.size()) { throw_or_abort("Some input bytes were not read"); } @@ -5726,20 +5630,21 @@ inline Opcode::MemoryInit Opcode::MemoryInit::bincodeDeserialize(std::vector template -void serde::Serializable::serialize(const Circuit::Opcode::MemoryInit& obj, - Serializer& serializer) +void serde::Serializable::serialize(const Circuit::OpcodeLocation::Brillig& obj, + Serializer& serializer) { - serde::Serializable::serialize(obj.block_id, serializer); - serde::Serializable::serialize(obj.init, serializer); + serde::Serializable::serialize(obj.acir_index, serializer); + serde::Serializable::serialize(obj.brillig_index, serializer); } template <> template -Circuit::Opcode::MemoryInit serde::Deserializable::deserialize(Deserializer& deserializer) +Circuit::OpcodeLocation::Brillig serde::Deserializable::deserialize( + Deserializer& deserializer) { - Circuit::Opcode::MemoryInit obj; - obj.block_id = serde::Deserializable::deserialize(deserializer); - obj.init = serde::Deserializable::deserialize(deserializer); + Circuit::OpcodeLocation::Brillig obj; + obj.acir_index = serde::Deserializable::deserialize(deserializer); + obj.brillig_index = serde::Deserializable::deserialize(deserializer); return obj; } diff --git a/ts/Dockerfile b/ts/Dockerfile index 14f47a9ea5..e664aebf15 100644 --- a/ts/Dockerfile +++ b/ts/Dockerfile @@ -14,8 +14,4 @@ COPY . . ENV DOCKER_ENV=true RUN yarn formatting && yarn build:ts:browser && yarn build:ts:node -# Run bb.js binary tests -WORKDIR /usr/src/barretenberg/ts/bin-test -RUN ./bin-test.sh - CMD ["yarn", "test"] diff --git a/ts/package.json b/ts/package.json index 5d0fda1ce7..4c36557654 100644 --- a/ts/package.json +++ b/ts/package.json @@ -30,7 +30,7 @@ "serve": "webpack serve", "formatting": "prettier --check ./src && eslint --max-warnings 0 ./src", "formatting:fix": "prettier -w ./src", - "test": "yarn build:ts:browser && yarn build:ts:node && yarn test:jest && yarn test:bin", + "test": "yarn build:ts:browser && yarn build:ts:node && yarn test:jest", "test:jest": "NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --no-cache --passWithNoTests", "test:bin": "cd ./bin-test && ./bin-test.sh", "test:debug": "NODE_NO_WARNINGS=1 node --inspect-brk=0.0.0.0 --experimental-vm-modules $(yarn bin jest) --no-cache --passWithNoTests --runInBand",