Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: noir-lang/noir-bignum
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.3.6
Choose a base ref
...
head repository: noir-lang/noir-bignum
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref

Commits on Oct 17, 2024

  1. feat: added modular square root computation and fully constrained `de…

    …rive_from_seed` method (#32)
    
    * got modular square root working. madness. also constrained derive from seed
    
    part of the work required to get a constrained bigcurve::hash_to_curve working
    
    * stashed nonsense to fix later
    
    * fixed reduction parameter error
    
    redc_param previously was only large enough to cover barrett reductions whose input was < 2^{modulus_bits * 2 + 2}
    
    this was insufficient for elliptic curve arithmetic in bignum
    
    redc_param is now large enough to cover barrett reduction inputs of at least 16 * modulus^2
    
    additonally, library upgraded to not trigger compiler warnings for nargo 0.35.0
    
    * format
    
    * fix to pub traits
    
    * added more thorough bignum tests
    
    * typo
    
    * nargo fmt
    
    * removed redundant TODO
    zac-williamson authored Oct 17, 2024
    Copy the full SHA
    20e03b0 View commit details

Commits on Oct 25, 2024

  1. feat!: refactor library architecture (#36)

    * refactor
    
    * silence warnings
    
    * silence more warnings
    
    * rebase & silence warnings
    
    * fmt
    
    * Update src/runtime_bignum.nr
    
    * Update src/utils/map.nr
    
    * reduce constraint counts
    
    * update in line w/ Zac's changes, incl macro tests
    
    * fix merge mistake
    
    * add sqrt code from zac
    
    * fix sqrt test
    
    * fmt
    
    * fmt
    
    * riddle with MOD_BITS
    
    * tonelli
    
    * option
    
    * tidy
    
    * warnings
    
    * warnings
    
    * fmt
    
    * latest nightly
    
    * fix to work with latest aztec-packages version of nargo
    
    * README
    
    * tidy filing
    
    * version bump
    
    * fmt
    
    * use nargo 0.36 for ci
    
    * Update test.yml
    
    ---------
    
    Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
    Co-authored-by: sirasistant <sirasistant@gmail.com>
    Co-authored-by: kashbrti <kashbrti@gmail.com>
    4 people authored Oct 25, 2024
    Copy the full SHA
    4fa65f6 View commit details
  2. Copy the full SHA
    cdcb2b7 View commit details

Commits on Nov 1, 2024

  1. Copy the full SHA
    1eb64aa View commit details
  2. Copy the full SHA
    6a5280f View commit details
  3. chore: Release 0.4.0 (#28)

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    github-actions[bot] authored Nov 1, 2024
    Copy the full SHA
    fbca8b8 View commit details

Commits on Nov 5, 2024

  1. feat: optimize brillig execution of split_X_bits functions (#47)

    Co-authored-by: Maxim Vezenov <mvezenov@gmail.com>
    TomAFrench and vezenovm authored Nov 5, 2024
    Copy the full SHA
    31ebc7c View commit details

Commits on Nov 6, 2024

  1. fix: Fix barrett reduction bug (#51)

    Co-authored-by: Khashayar Barooti <khashayar@aztecprotocol.com>
    iAmMichaelConnor and kashbrti authored Nov 6, 2024
    Copy the full SHA
    c61a621 View commit details

Commits on Nov 7, 2024

  1. Copy the full SHA
    08c4151 View commit details
  2. fix: fix broken tests in runtime_bignum_test.nr (#39)

    Co-authored-by: Khashayar Barooti <khashayar@aztecprotocol.com>
    Co-authored-by: Tom French <tom@tomfren.ch>
    Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
    Co-authored-by: kashbrti <kashbrti@gmail.com>
    5 people authored Nov 7, 2024
    Copy the full SHA
    63e6c85 View commit details

Commits on Nov 8, 2024

  1. feat: remove generic parameter from the BigNum trait (#44)

    Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
    Co-authored-by: Tom French <tom@tomfren.ch>
    3 people authored Nov 8, 2024
    Copy the full SHA
    53f652b View commit details
  2. fix: Check that RuntimeBigNums have the same BigNumParams on oper…

    …ations (#46)
    
    Co-authored-by: Tom French <tom@tomfren.ch>
    Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
    3 people authored Nov 8, 2024
    Copy the full SHA
    729dd24 View commit details
  3. chore: Release 0.4.1 (#48)

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    github-actions[bot] authored Nov 8, 2024
    Copy the full SHA
    0f95238 View commit details

Commits on Nov 14, 2024

  1. Copy the full SHA
    4b34164 View commit details

Commits on Nov 15, 2024

  1. Copy the full SHA
    d81d5fa View commit details

Commits on Nov 18, 2024

  1. chore: Release 0.4.2 (#55)

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    github-actions[bot] authored Nov 18, 2024
    Copy the full SHA
    28552ff View commit details

Commits on Nov 26, 2024

  1. Copy the full SHA
    0998cc8 View commit details

Commits on Dec 4, 2024

  1. feat: Noir 1.0.0 (#66)

    jtriley2p authored Dec 4, 2024
    Copy the full SHA
    af8d54e View commit details

Commits on Dec 6, 2024

  1. Copy the full SHA
    4081673 View commit details

Commits on Dec 9, 2024

  1. Copy the full SHA
    1fcb2c9 View commit details

Commits on Jan 2, 2025

  1. Copy the full SHA
    8e16ef3 View commit details
  2. Copy the full SHA
    bc8767a View commit details

Commits on Jan 3, 2025

  1. Copy the full SHA
    b5c6ce2 View commit details

Commits on Jan 6, 2025

  1. Copy the full SHA
    c798262 View commit details
  2. chore: Release 0.5.0 (#67)

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    github-actions[bot] authored Jan 6, 2025
    Copy the full SHA
    eb2ec95 View commit details
  3. Copy the full SHA
    b44ef7f View commit details

Commits on Jan 7, 2025

  1. Copy the full SHA
    8195947 View commit details

Commits on Jan 8, 2025

  1. chore: Updated README for BigNum lib (#85)

    Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
    ewynx and TomAFrench authored Jan 8, 2025
    Copy the full SHA
    241c26d View commit details

Commits on Jan 16, 2025

  1. feat: implement From<Field> on BigNum (#87)

    Co-authored-by: Khashayar Barooti <khashayar.baroot@epfl.ch>
    Co-authored-by: TomAFrench <tom@tomfren.ch>
    Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
    4 people authored Jan 16, 2025
    Copy the full SHA
    35bf983 View commit details

Commits on Jan 20, 2025

  1. chore: add benchmarks (#105)

    Co-authored-by: Khashayar Barooti <khashayar.baroot@epfl.ch>
    TomAFrench and Khashayar Barooti authored Jan 20, 2025
    Copy the full SHA
    2ca8b1a View commit details

Commits on Jan 21, 2025

  1. feat: remove unnecessary usage of slices (#104)

    Co-authored-by: kashbrti <kashbrti@gmail.com>
    TomAFrench and kashbrti authored Jan 21, 2025
    Copy the full SHA
    fb6f9e5 View commit details
  2. chore: remove unnecessary default implementation of Eq (#106)

    Co-authored-by: kashbrti <kashbrti@gmail.com>
    TomAFrench and kashbrti authored Jan 21, 2025
    Copy the full SHA
    d231a45 View commit details

Commits on Jan 27, 2025

  1. Copy the full SHA
    b3000e1 View commit details
  2. feat: added to_field function (#99)

    Co-authored-by: Khashayar Barooti <khashayar.baroot@epfl.ch>
    Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
    Co-authored-by: Tom French <tom@tomfren.ch>
    4 people authored Jan 27, 2025
    Copy the full SHA
    7c92c22 View commit details
  3. Copy the full SHA
    c6466ef View commit details
  4. Copy the full SHA
    ce3c654 View commit details

Commits on Jan 28, 2025

  1. chore: Release 0.5.1 (#90)

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    github-actions[bot] authored Jan 28, 2025
    Copy the full SHA
    5f22ff7 View commit details

Commits on Jan 29, 2025

  1. fix: constrain split_60_bits function (#113)

    Co-authored-by: kashbrti <kashbrti@gmail.com>
    TomAFrench and kashbrti authored Jan 29, 2025
    Copy the full SHA
    0d19e5a View commit details
  2. Copy the full SHA
    688c483 View commit details
  3. feat: Add is_zero (#111)

    Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
    jtriley2p and TomAFrench authored Jan 29, 2025
    Copy the full SHA
    2ca1383 View commit details
  4. Copy the full SHA
    add8bab View commit details
  5. Copy the full SHA
    e56352a View commit details
  6. chore: Release 0.5.2 (#116)

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    github-actions[bot] authored Jan 29, 2025
    Copy the full SHA
    53a4d4a View commit details

Commits on Feb 3, 2025

  1. fix: correct batch inversion function (#117)

    Co-authored-by: Khashayar Barooti <khashayar.baroot@epfl.ch>
    TomAFrench and Khashayar Barooti authored Feb 3, 2025
    Copy the full SHA
    976d3ef View commit details

Commits on Feb 8, 2025

  1. chore: Release 0.5.3 (#118)

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    github-actions[bot] authored Feb 8, 2025
    Copy the full SHA
    5ad862d View commit details
  2. Copy the full SHA
    399d21a View commit details
  3. chore: Release 0.5.4 (#122)

    Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
    github-actions[bot] authored Feb 8, 2025
    Copy the full SHA
    bc91a2d View commit details

Commits on Feb 18, 2025

  1. fix: bugs on border cases of udiv_mod (#128)

    Co-authored-by: Pablo Dallegri <pdallegri@dc.uba.ar>
    Co-authored-by: Khashayar Barooti <khashayar.baroot@epfl.ch>
    3 people authored Feb 18, 2025
    Copy the full SHA
    86a9492 View commit details

Commits on Feb 24, 2025

  1. chore!: remove the RuntimeBignumTrait and impl the methods directly…

    … for the `RuntimeBignum` struct. (#134)
    
    Co-authored-by: Khashayar Barooti <khashayar.baroot@epfl.ch>
    kashbrti and Khashayar Barooti authored Feb 24, 2025
    Copy the full SHA
    954dcf6 View commit details
  2. Copy the full SHA
    e338c51 View commit details
Showing with 6,006 additions and 4,654 deletions.
  1. +49 −0 .github/workflows/benchmark.yml
  2. +46 −2 .github/workflows/test.yml
  3. +4 −1 .gitignore
  4. +1 −1 .release-please-manifest.json
  5. +117 −0 CHANGELOG.md
  6. +89 −0 CONTRIBUTING.md
  7. +1 −1 Nargo.toml
  8. +308 −115 README.md
  9. +0 −1 info.sh
  10. +34 −0 scripts/build-gates-report.sh
  11. +113 −0 src/benchmarks/bignum_benchmarks.nr
  12. +1 −0 src/benchmarks/mod.nr
  13. +405 −0 src/bignum.nr
  14. +0 −657 src/bignum_test.nr
  15. +6 −0 src/constants.nr
  16. +26 −29 src/fields/U1024.nr
  17. +41 −29 src/fields/U2048.nr
  18. +20 −29 src/fields/U256.nr
  19. +21 −29 src/fields/U384.nr
  20. +60 −29 src/fields/U4096.nr
  21. +22 −29 src/fields/U512.nr
  22. +24 −29 src/fields/U768.nr
  23. +226 −29 src/fields/U8192.nr
  24. +31 −29 src/fields/bls12_377Fq.nr
  25. +20 −29 src/fields/bls12_377Fr.nr
  26. +31 −29 src/fields/bls12_381Fq.nr
  27. +21 −30 src/fields/bls12_381Fr.nr
  28. +21 −30 src/fields/bn254Fq.nr
  29. +20 −29 src/fields/ed25519Fq.nr
  30. +20 −29 src/fields/ed25519Fr.nr
  31. +40 −29 src/fields/mnt4_753Fq.nr
  32. +40 −29 src/fields/mnt4_753Fr.nr
  33. +40 −29 src/fields/mnt6_753Fq.nr
  34. +40 −29 src/fields/mnt6_753Fr.nr
  35. +0 −40 src/fields/mod.nr
  36. +20 −29 src/fields/pallasFq.nr
  37. +20 −29 src/fields/pallasFr.nr
  38. +20 −29 src/fields/secp256k1Fq.nr
  39. +20 −29 src/fields/secp256k1Fr.nr
  40. +20 −29 src/fields/secp256r1Fq.nr
  41. +20 −29 src/fields/secp256r1Fr.nr
  42. +26 −29 src/fields/secp384r1Fq.nr
  43. +26 −29 src/fields/secp384r1Fr.nr
  44. +20 −29 src/fields/vestaFq.nr
  45. +20 −29 src/fields/vestaFr.nr
  46. +604 −0 src/fns/constrained_ops.nr
  47. +382 −0 src/fns/expressions.nr
  48. +6 −0 src/fns/mod.nr
  49. +61 −0 src/fns/serialization.nr
  50. +481 −0 src/fns/unconstrained_helpers.nr
  51. +382 −0 src/fns/unconstrained_ops.nr
  52. +46 −307 src/lib.nr
  53. +61 −0 src/params.nr
  54. +249 −1,487 src/runtime_bignum.nr
  55. +0 −792 src/runtime_bignum_test.nr
  56. +923 −0 src/tests/bignum_test.nr
  57. +2 −0 src/tests/mod.nr
  58. +622 −0 src/tests/runtime_bignum_test.nr
  59. +11 −0 src/utils/map.nr
  60. +1 −2 src/utils/mod.nr
  61. +9 −11 src/utils/msb.nr
  62. +16 −53 src/utils/split_bits.nr
  63. +0 −227 src/utils/u60_representation.nr
  64. +0 −114 src/utils/u60_representation_test.nr
49 changes: 49 additions & 0 deletions .github/workflows/benchmark.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Benchmarks

on:
push:
branches:
- main
pull_request:

jobs:
test:
name: Benchmark library
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4

- name: Install Nargo
uses: noir-lang/noirup@v0.1.3
with:
toolchain: 1.0.0-beta.3

- name: Install bb
run: |
npm install -g bbup
bbup -nv 1.0.0-beta.3
sudo apt install libc++-dev
- name: Build Noir benchmark programs
run: nargo export

- name: Generate gates report
run: ./scripts/build-gates-report.sh
env:
BACKEND: /home/runner/.bb/bb

- name: Compare gates reports
id: gates_diff
uses: noir-lang/noir-gates-diff@dbe920a8dcc3370af4be4f702ca9cef29317bec1
with:
report: gates_report.json
summaryQuantile: 0.9 # only display the 10% most significant circuit size diffs in the summary (defaults to 20%)

- name: Add gates diff to sticky comment
if: github.event_name == 'pull_request' || github.event_name == 'pull_request_target'
uses: marocchino/sticky-pull-request-comment@v2
with:
# delete the comment in case changes no longer impact circuit sizes
delete: ${{ !steps.gates_diff.outputs.markdown }}
message: ${{ steps.gates_diff.outputs.markdown }}
48 changes: 46 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -8,15 +8,36 @@ on:

env:
CARGO_TERM_COLOR: always
MINIMUM_NOIR_VERSION: v1.0.0-beta.3

jobs:
noir-version-list:
name: Query supported Noir versions
runs-on: ubuntu-latest
outputs:
noir_versions: ${{ steps.get_versions.outputs.versions }}

steps:
- name: Checkout sources
id: get_versions
run: |
# gh returns the Noir releases in reverse chronological order so we keep all releases published after the minimum supported version.
VERSIONS=$(gh release list -R noir-lang/noir --exclude-pre-releases --json tagName -q 'map(.tagName) | index(env.MINIMUM_NOIR_VERSION) as $index | if $index then .[0:$index+1] else [env.MINIMUM_NOIR_VERSION] end')
echo "versions=$VERSIONS"
echo "versions=$VERSIONS" >> $GITHUB_OUTPUT
env:
GH_TOKEN: ${{ github.token }}

test:
needs: [noir-version-list]
name: Test on Nargo ${{matrix.toolchain}}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
toolchain: [nightly, 0.35.0]
toolchain: ${{ fromJson( needs.noir-version-list.outputs.noir_versions )}}
include:
- toolchain: nightly
steps:
- name: Checkout sources
uses: actions/checkout@v4
@@ -38,7 +59,30 @@ jobs:
- name: Install Nargo
uses: noir-lang/noirup@v0.1.3
with:
toolchain: 0.35.0
toolchain: ${{env.MINIMUM_NOIR_VERSION}}

- name: Run formatter
run: nargo fmt --check

# This is a job which depends on all test jobs and reports the overall status.
# This allows us to add/remove test jobs without having to update the required workflows.
tests-end:
name: Noir End
runs-on: ubuntu-latest
# We want this job to always run (even if the dependant jobs fail) as we want this job to fail rather than skipping.
if: ${{ always() }}
needs:
- test
- format

steps:
- name: Report overall success
run: |
if [[ $FAIL == true ]]; then
exit 1
else
exit 0
fi
env:
# We treat any cancelled, skipped or failing jobs as a failure for the workflow as a whole.
FAIL: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'skipped') }}
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
target
target
.vscode/launch.json
export/*
gates_report.json
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{".":"0.3.5"}
{".":"0.6.0"}
117 changes: 117 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,122 @@
# Changelog

## [0.6.0](https://github.com/noir-lang/noir-bignum/compare/v0.5.4...v0.6.0) (2025-02-25)


### ⚠ BREAKING CHANGES

* refactor library to work on u128 limbs ([#120](https://github.com/noir-lang/noir-bignum/issues/120))
* remove the `RuntimeBignumTrait` and impl the methods directly for the `RuntimeBignum` struct. ([#134](https://github.com/noir-lang/noir-bignum/issues/134))

### Features

* Export pre-defined bignum types ([#125](https://github.com/noir-lang/noir-bignum/issues/125)) ([41c3882](https://github.com/noir-lang/noir-bignum/commit/41c38828dbb6277eff99cea9e2d0901a601b943b))
* Refactor library to work on u128 limbs ([#120](https://github.com/noir-lang/noir-bignum/issues/120)) ([78e7216](https://github.com/noir-lang/noir-bignum/commit/78e7216b019db27530322ae9bba5d0bb6e7c6b6a))


### Bug Fixes

* Bugs on border cases of udiv_mod ([#128](https://github.com/noir-lang/noir-bignum/issues/128)) ([86a9492](https://github.com/noir-lang/noir-bignum/commit/86a9492b063de8b9ce29382445f84efff46a372e))


### Miscellaneous Chores

* Remove the `RuntimeBignumTrait` and impl the methods directly for the `RuntimeBignum` struct. ([#134](https://github.com/noir-lang/noir-bignum/issues/134)) ([954dcf6](https://github.com/noir-lang/noir-bignum/commit/954dcf6bf5335c20d4c75f99cb9f9c448c6d6996))

## [0.5.4](https://github.com/noir-lang/noir-bignum/compare/v0.5.3...v0.5.4) (2025-02-08)


### Bug Fixes

* Correct batch inversion implementation ([#121](https://github.com/noir-lang/noir-bignum/issues/121)) ([399d21a](https://github.com/noir-lang/noir-bignum/commit/399d21adb6786ad0ce2b670e8b216faf1f8a3fc2))

## [0.5.3](https://github.com/noir-lang/noir-bignum/compare/v0.5.2...v0.5.3) (2025-02-03)


### Bug Fixes

* Correct batch inversion function ([#117](https://github.com/noir-lang/noir-bignum/issues/117)) ([976d3ef](https://github.com/noir-lang/noir-bignum/commit/976d3efd392fc12d95256624e82f5c826e98ab82))

## [0.5.2](https://github.com/noir-lang/noir-bignum/compare/v0.5.1...v0.5.2) (2025-01-29)


### Features

* Add `is_zero` ([#111](https://github.com/noir-lang/noir-bignum/issues/111)) ([2ca1383](https://github.com/noir-lang/noir-bignum/commit/2ca1383238b927d11fc12c48c618475172c0a677))
* Implement `Default` trait on `BigNum` ([#109](https://github.com/noir-lang/noir-bignum/issues/109)) ([e56352a](https://github.com/noir-lang/noir-bignum/commit/e56352a05c3cb8620076dd9e0453ef9b20974315))


### Bug Fixes

* Constrain `split_60_bits` function ([#113](https://github.com/noir-lang/noir-bignum/issues/113)) ([0d19e5a](https://github.com/noir-lang/noir-bignum/commit/0d19e5a34dbfa91e9f7c2eedb3e51b034ecd75d7))

## [0.5.1](https://github.com/noir-lang/noir-bignum/compare/v0.5.0...v0.5.1) (2025-01-27)


### Features

* Add zero constructor ([#108](https://github.com/noir-lang/noir-bignum/issues/108)) ([c6466ef](https://github.com/noir-lang/noir-bignum/commit/c6466ef6c831d6ecd12dbc9e921b822319f7e4a8))
* Added `to_field` function ([#99](https://github.com/noir-lang/noir-bignum/issues/99)) ([7c92c22](https://github.com/noir-lang/noir-bignum/commit/7c92c22d35bb2f4199d53b32dd339d6b9142bb0d))
* Constrain ops only in constrained context ([#102](https://github.com/noir-lang/noir-bignum/issues/102)) ([b3000e1](https://github.com/noir-lang/noir-bignum/commit/b3000e17c4f057be85cf36e56816ea77b719e5f2))
* Deprecate `BigNum::new()` ([#110](https://github.com/noir-lang/noir-bignum/issues/110)) ([ce3c654](https://github.com/noir-lang/noir-bignum/commit/ce3c654a077f2b5c96f53610123f9321fcd11089))
* Implement `From&lt;Field&gt;` on `BigNum` ([#87](https://github.com/noir-lang/noir-bignum/issues/87)) ([35bf983](https://github.com/noir-lang/noir-bignum/commit/35bf983bdf80abbb2f191dd6c464a6fe3516f9c2))
* Minor unconstrained bytecode optimizations ([#79](https://github.com/noir-lang/noir-bignum/issues/79)) ([b44ef7f](https://github.com/noir-lang/noir-bignum/commit/b44ef7f6bee56751e2d83848e84accf25e0bdc0f))
* Remove unnecessary usage of slices ([#104](https://github.com/noir-lang/noir-bignum/issues/104)) ([fb6f9e5](https://github.com/noir-lang/noir-bignum/commit/fb6f9e5982dda8729d6b12ef83ad3ef60cdf0b7e))

## [0.5.0](https://github.com/noir-lang/noir-bignum/compare/v0.4.2...v0.5.0) (2025-01-06)


### ⚠ BREAKING CHANGES

* remove redefinition of arithmetic methods on `BigNumTrait` ([#84](https://github.com/noir-lang/noir-bignum/issues/84))

### Features

* Remove redefinition of arithmetic methods on `BigNumTrait` ([#84](https://github.com/noir-lang/noir-bignum/issues/84)) ([b5c6ce2](https://github.com/noir-lang/noir-bignum/commit/b5c6ce20d8a5705127f3b0c33a17e77750fc91c2))

## [0.4.2](https://github.com/noir-lang/noir-bignum/compare/v0.4.1...v0.4.2) (2024-11-15)


### Bug Fixes

* Constraint count regression introduced in commit 53f652b ([#53](https://github.com/noir-lang/noir-bignum/issues/53)) ([d81d5fa](https://github.com/noir-lang/noir-bignum/commit/d81d5fac5e2ea919bd93e513644d0edc5630261c))

## [0.4.1](https://github.com/noir-lang/noir-bignum/compare/v0.4.0...v0.4.1) (2024-11-08)


### Features

* Optimize brillig execution of `split_X_bits` functions ([#47](https://github.com/noir-lang/noir-bignum/issues/47)) ([31ebc7c](https://github.com/noir-lang/noir-bignum/commit/31ebc7cc03a7d8be4aef90a632515f79e3405c7a))
* Remove a bunch of unnecessary bytecode from unconstrained ops ([#50](https://github.com/noir-lang/noir-bignum/issues/50)) ([08c4151](https://github.com/noir-lang/noir-bignum/commit/08c4151f12cc4fe1831da2eba6c854948a17c3d8))
* Remove generic parameter from the `BigNum` trait ([#44](https://github.com/noir-lang/noir-bignum/issues/44)) ([53f652b](https://github.com/noir-lang/noir-bignum/commit/53f652b443967b589ae5ee3b3c9bdba5d3606806))


### Bug Fixes

* Check that `RuntimeBigNum`s have the same `BigNumParams` on operations ([#46](https://github.com/noir-lang/noir-bignum/issues/46)) ([729dd24](https://github.com/noir-lang/noir-bignum/commit/729dd244e07a17b4c5f4d24fcd63caae91e8d645))
* Fix barrett reduction bug ([#51](https://github.com/noir-lang/noir-bignum/issues/51)) ([c61a621](https://github.com/noir-lang/noir-bignum/commit/c61a621745fb6a6c3778fbee35344bc7cf79f6a9))
* Fix broken tests in `runtime_bignum_test.nr` ([#39](https://github.com/noir-lang/noir-bignum/issues/39)) ([63e6c85](https://github.com/noir-lang/noir-bignum/commit/63e6c851712ff3492d0b538437d3ddb0c6aacc1e))

## [0.4.0](https://github.com/noir-lang/noir-bignum/compare/v0.3.5...v0.4.0) (2024-11-01)


### ⚠ BREAKING CHANGES

* refactor library architecture ([#36](https://github.com/noir-lang/noir-bignum/issues/36))
* bump minimum noir version to 0.35.0 and address privacy warnings #24

### Features

* Added modular square root computation and fully constrained `derive_from_seed` method ([#32](https://github.com/noir-lang/noir-bignum/issues/32)) ([20e03b0](https://github.com/noir-lang/noir-bignum/commit/20e03b04f7e2c57b61538d707695ae02979c51b4))
* Refactor library architecture ([#36](https://github.com/noir-lang/noir-bignum/issues/36)) ([4fa65f6](https://github.com/noir-lang/noir-bignum/commit/4fa65f6be596ea1b6c6c49b784fa7a9aca95c5d4))


### Bug Fixes

* Bump minimum noir version to 0.35.0 and address privacy warnings [#24](https://github.com/noir-lang/noir-bignum/issues/24) ([fc53098](https://github.com/noir-lang/noir-bignum/commit/fc53098332e1843759114ad7c05118e8fee141ed))
* Fixed reduction parameter error ([#31](https://github.com/noir-lang/noir-bignum/issues/31)) ([c312ef7](https://github.com/noir-lang/noir-bignum/commit/c312ef72e2127153fad5afcffc5bf88045a5b4ba))
* Remove unnecessary generic ([#42](https://github.com/noir-lang/noir-bignum/issues/42)) ([1eb64aa](https://github.com/noir-lang/noir-bignum/commit/1eb64aab691e96d143775183987e7dfc2132bdc3))

## [0.3.5](https://github.com/noir-lang/noir-bignum/compare/v0.3.4...v0.3.5) (2024-10-02)


89 changes: 89 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
# Contributing

Thank you for your interest in contributing! We value your contributions. 🙏

This guide will discuss how the team handles [Commits](#commits), [Pull Requests](#pull-requests), [Releases](#releases), the [Changelog](#changelog), and [Response time](#response-time).

**Note:** We won't force external contributors to follow this verbatim, but following these guidelines definitely helps us in accepting your contributions.

## Commits

We want to keep our commits small and focused. This allows for easily reviewing individual commits and/or splitting up pull requests when they grow too big. Additionally, this allows us to merge smaller changes quicker.

When committing, it's often useful to use the `git add -p` workflow to decide on what parts of the changeset to stage for commit.

## Pull Requests

Before you create a pull request, search for any issues related to the change you are making. If none exist already, create an issue that thoroughly describes the problem that you are trying to solve. These are used to inform reviewers of the original intent and should be referenced via the pull request template.

Pull Requests should be focused on the specific change they are working towards. If prerequisite work is required to complete the original pull request, that work should be submitted as a separate pull request.

This strategy avoids scenarios where pull requests grow too large/out-of-scope and don't get proper reviews—we want to avoid "LGTM, I trust you" reviews.

### Conventional Commits

We use [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) naming conventions for PRs, which help with releases and changelogs. Please use the following format for PR titles:

```
<type>[optional scope]: <description>
```

Generally, we want to only use the three primary types defined by the specification:

- `feat:` - This should be the most used type, as most work we are doing in the project are new features. Commits using this type will always show up in the Changelog.
- `fix:` - When fixing a bug, we should use this type. Commits using this type will always show up in the Changelog.
- `chore:` - The least used type, these are not included in the Changelog unless they are breaking changes. But remain useful for an understandable commit history.

#### Breaking Changes

Annotating BREAKING CHANGES is extremely important to our release process and versioning. To mark a commit as breaking, we add the ! character after the type, but before the colon. For example:

```
feat!: Rename nargo build to nargo check (#693)
```

```
feat(nargo)!: Enforce minimum rustc version
```

#### Scopes

Scopes significantly improve the Changelog, so we want to use a scope whenever possible. If we are only changing one part of the project, we can use the name of the crate, like (nargo) or (noirc_driver). If a change touches multiple parts of the codebase, there might be a better scope, such as using (syntax) for new language features.

```
feat(nargo): Add support for wasm backend (#234)
```

```
feat(syntax): Implement String data type (#123)
```

### Typos and other small changes

Significant changes, like new features or important bug fixes, typically have a more pronounced impact on the project’s overall development. For smaller fixes, such as typos, we encourage you to report them as Issues instead of opening PRs. This approach helps us manage our resources effectively and ensures that every change contributes meaningfully to the project. PRs involving such smaller fixes will likely be closed and incorporated in PRs authored by the core team.

### Reviews

For any repository in the organization, we require code review & approval by **one** team member before the changes are merged, as enforced by GitHub branch protection. Non-breaking pull requests may be merged at any time. Breaking pull requests should only be merged when the team has general agreement of the changes and is preparing a breaking release.

### Documentation

Breaking changes must be documented, either through adding/updating existing docs or README.md.

## Releases

Releases are managed by [Release Please](https://github.com/googleapis/release-please) which runs in a GitHub Action whenever a commit is made on the master branch.

Release Please parses Conventional Commit messages and opens (or updates) a pull request against the master branch that contains updates to the versions & Changelog within the project. If it doesn't detect any breaking change commits, it will only increment the "patch" version; however, if it detects a breaking change commit, it will increment the "minor" version number to indicate a breaking release.

When we are ready to release the version, we approve and squash merge the release pull request into master. Release Please will detect this merge and generate the appropriate tags for the release. Additional release steps may be triggered inside the GitHub Action to automate other parts of the release process.

There is no strict release cadence, but a new release is usually cut every 1 to 2 months.

## Changelog

The Changelog is automatically managed by Release Please and informed by the Conventional Commits (as discussed above).

## Response time

The team will respond to issues and PRs within 1 week from submission.
2 changes: 1 addition & 1 deletion Nargo.toml
Original file line number Diff line number Diff line change
@@ -2,6 +2,6 @@
name = "bignum"
type = "lib"
authors = [""]
compiler_version = ">=0.35.0"
compiler_version = ">=1.0.0"

[dependencies]
Loading