Skip to content

Conversation

@ThomasPiellard
Copy link
Contributor

@ThomasPiellard ThomasPiellard commented Jun 13, 2025

Description

iop/ package is now generated from GenerateFF (finite field generation)
iop/ package is generated for small fields (base field only at the moment). It is needed to generate the plonk trace, which is needed in the linea prover.

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

How has this been tested?

Same test suite that already existed in iop/

How has this been benchmarked?

Same test suite that already existed in iop/

Checklist:

  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • I have added tests that prove my fix is effective or that my feature works
  • I did not modify files generated from templates
  • golangci-lint does not output errors locally
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published in downstream modules

@ThomasPiellard ThomasPiellard requested a review from gbotrel June 13, 2025 14:24
gbotrel
gbotrel previously approved these changes Jul 18, 2025
Copy link
Collaborator

@gbotrel gbotrel left a comment

Choose a reason for hiding this comment

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

2 minor changes, lgtm

@gbotrel gbotrel requested a review from Copilot July 18, 2025 13:29
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR generates the iop/ package for small fields (base field only) from a template-based generation system, replacing the previous generator that was specific to curve fields. The iop package provides an API for computations common to IOP backends like permutation and quotient operations, needed for the Linea prover.

  • Refactored the IOP generation from curve-specific to field-specific template generation
  • Added IOP generation support for small fields (koalabear and goldilocks)
  • Updated the field generator system to include IOP functionality as an option

Reviewed Changes

Copilot reviewed 47 out of 47 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
internal/generator/main.go Removed old curve-specific IOP generation and integrated new field-based IOP generation
internal/generator/iop/* Removed old curve-specific IOP generator templates and code
field//iop/ Generated IOP packages for koalabear and goldilocks fields with polynomial operations, ratios, quotients, and expressions
field/generator/* Added IOP generation option and templates for field-specific generation
field/internal/main.go Added IOP generation to the field generator pipeline
Comments suppressed due to low confidence (1)

field/generator/options.go:30

  • Method name 'HashIOP' should be 'HasIOP' to match the naming pattern of other similar methods like 'HasSIS()' and 'HasFFT()'.
func (cfg *generatorConfig) HashIOP() bool {

cursor[bot]

This comment was marked as outdated.

@ThomasPiellard ThomasPiellard merged commit 41370a1 into master Aug 4, 2025
7 checks passed
@ThomasPiellard ThomasPiellard deleted the feat/iop-koalabear branch August 4, 2025 11:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants