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: add prelude.nr #3693

Merged
merged 15 commits into from Dec 12, 2023
Merged

feat: add prelude.nr #3693

merged 15 commits into from Dec 12, 2023

Conversation

ghost
Copy link

@ghost ghost commented Dec 5, 2023

Description

Resolves #2361.

Documentation

Check one:

  • No documentation needed.
  • Documentation included in this PR.
  • [Exceptional Case] Documentation to be submitted in a separate PR.

PR Checklist

  • I have tested the changes locally.
  • I have formatted the changes with Prettier and/or cargo fmt on default settings.

@ghost ghost mentioned this pull request Dec 5, 2023
@kevaundray
Copy link
Contributor

My initial thoughts are that we should be able to add this in one location.

CC @jfecher because I see that ante has a method in nameresolution for importing the prelude: https://github.com/jfecher/ante/blob/28937d2223bf07dda1dc61b0dff1130d22f80d3f/src/nameresolution/builtin.rs#L69C8-L69C22

@ghost
Copy link
Author

ghost commented Dec 5, 2023

Can I forgo the prelude.nr file and simply create imports for the prelude in Rust code?

@kevaundray
Copy link
Contributor

Can I forgo the prelude.nr file and simply create imports for the prelude in Rust code?

I'd like to try and see if we can do something closer to what ante is doing in the link first.

I'm hesitant to do your suggestion because if the prelude.nr changes then we will also need to change Rust code, if this is only done in one place perhaps its fine, but lets see what we can do by just importing the prelude items during name resolution first

@ghost
Copy link
Author

ghost commented Dec 6, 2023

It seems that in some tests we don't have 'std', how should we handle these cases?

@ghost
Copy link
Author

ghost commented Dec 7, 2023

@kevaundray

@kevaundray
Copy link
Contributor

It seems that in some tests we don't have 'std', how should we handle these cases?

Can you explain why that matters?

@ghost
Copy link
Author

ghost commented Dec 7, 2023

@kevaundray. ah, I've already decided that. just then there is an import error

@kevaundray
Copy link
Contributor

@kevaundray. ah, I've already decided that. just then there is an import error

Alright -- I don't understand what issue you was referring to

@ghost
Copy link
Author

ghost commented Dec 7, 2023

Hi @jfecher,

Could you review my pull request? Thanks!

Copy link
Contributor

@jfecher jfecher left a comment

Choose a reason for hiding this comment

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

I don't think we should need this is_prelude value in several places. It looks like it is only being used to avoid issuing "x is already defined" errors for items in the prelude. Presumably because the prelude itself is also being imported into the prelude. Would a check that "if !self.in_prelude() { import_prelude() }` suffice instead?

noir_stdlib/src/prelude.nr Show resolved Hide resolved
Copy link
Member

@TomAFrench TomAFrench left a comment

Choose a reason for hiding this comment

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

I'm happy with this but will defer to @jfecher for final approval.

Co-authored-by: kevaundray <[email protected]>
@jfecher jfecher added this pull request to the merge queue Dec 12, 2023
Merged via the queue into noir-lang:master with commit 5f0f81f Dec 12, 2023
33 checks passed
@ghost ghost deleted the prelude branch December 12, 2023 16:06
TomAFrench added a commit that referenced this pull request Dec 14, 2023
* master: (25 commits)
  chore!: Make file manager read-only to the compiler (#3760)
  feat: Add some traits to the stdlib (#3796)
  fix: Stop issuing unused variable warnings for variables in trait definitions (#3797)
  fix(lsp): package resolution on save (#3794)
  chore: clippy fix (#3793)
  feat: Remove experimental feature warning for traits (#3783)
  fix: Allow trait method references from the trait name (#3774)
  chore: adds a new option only-acir (#3683)
  feat(lsp): add goto definition for structs (#3718)
  chore: disable code lens feature of lsp (#3789)
  chore: moving ordering to category jsons and frontmatters (#3777)
  chore(ci): use `actions/setup-node` for caching yarn dependencies (#2730)
  fix: remove `noirc_driver/aztec` feature flag in docker (#3784)
  chore: remove aztec compile time feature flag (#3596)
  chore: move debugger tests in submodule (#3780)
  feat: simplify explicit equality assertions to assert equality directly (#3708)
  fix(ssa): Handle array arguments to side effectual constrain statements (#3740)
  feat: add `prelude.nr` (#3693)
  chore: removing old docs (#3778)
  feat: avoid overflow checks on boolean multiplication (#3745)
  ...
kevaundray added a commit that referenced this pull request Dec 15, 2023
🤖 I have created a release *beep* *boop*
---


<details><summary>0.21.0</summary>

## [0.21.0](v0.20.0...v0.21.0)
(2023-12-15)


### ⚠ BREAKING CHANGES

* remove unused `source-resolver` package
([#3791](#3791))
* Make file manager read-only to the compiler
([#3760](#3760))

### Features

* Add `prelude.nr`
([#3693](#3693))
([5f0f81f](5f0f81f))
* Add some traits to the stdlib
([#3796](#3796))
([8e11352](8e11352))
* Add support for writing tracing debug info to file
([#3790](#3790))
([98a5004](98a5004))
* Allow passing custom foreign call handlers when creating proofs in
NoirJS ([#3764](#3764))
([6076e08](6076e08))
* Allow underscores in integer literals
([#3746](#3746))
([2c06a64](2c06a64))
* Avoid overflow checks on boolean multiplication
([#3745](#3745))
([9b5b686](9b5b686))
* Aztec-packages
([#3754](#3754))
([c043265](c043265))
* Dockerfile to test cargo and JS packages
([#3684](#3684))
([513d619](513d619))
* Docs landing page with a playground
([#3667](#3667))
([9a95fbe](9a95fbe))
* Enhance test information output
([#3696](#3696))
([468fbbc](468fbbc))
* Implement print without newline
([#3650](#3650))
([9827dfe](9827dfe))
* **lsp:** Add goto definition for locals
([#3705](#3705))
([9dd465c](9dd465c))
* **lsp:** Add goto definition for structs
([#3718](#3718))
([a576c5b](a576c5b))
* Optimize out unnecessary truncation instructions
([#3717](#3717))
([c9c72ae](c9c72ae))
* Remove experimental feature warning for traits
([#3783](#3783))
([cb52242](cb52242))
* Reorganizing docs to fit diataxis framework
([#3711](#3711))
([54a1ed5](54a1ed5))
* Simplify explicit equality assertions to assert equality directly
([#3708](#3708))
([2fc46e2](2fc46e2))
* Speed up transformation of debug messages
([#3815](#3815))
([2a8af1e](2a8af1e))


### Bug Fixes

* `try_unify` no longer binds types on failure
([#3697](#3697))
([f03e581](f03e581))
* Add missing assertion to test
([#3765](#3765))
([bcbe116](bcbe116))
* Add negative integer literals
([#3690](#3690))
([8b3a68f](8b3a68f))
* Allow trait method references from the trait name
([#3774](#3774))
([cfa34d4](cfa34d4))
* Deserialize odd length hex literals
([#3747](#3747))
([4000fb2](4000fb2))
* **docs:** Trigger `update-docs` workflow when the `release-please` PR
gets merged and not on every merge to master
([#3677](#3677))
([9a3d1d2](9a3d1d2))
* Initialise strings as u8 array
([#3682](#3682))
([8da40b7](8da40b7))
* **lsp:** Package resolution on save
([#3794](#3794))
([14f2fff](14f2fff))
* Parse negative integer literals
([#3698](#3698))
([463ab06](463ab06))
* Pub is required on return for entry points
([#3616](#3616))
([7f1d796](7f1d796))
* Remove `noirc_driver/aztec` feature flag in docker
([#3784](#3784))
([a48d562](a48d562))
* Remove include-keys option
([#3692](#3692))
([95d7ce2](95d7ce2))
* Revert chnage to modify version in workspace file for acvm
dependencies ([#3673](#3673))
([0696f75](0696f75))
* Sequence update-lockfile workflow so it gets modified after the ACVM
version in the root has been changed
([#3676](#3676))
([c00cd85](c00cd85))
* **ssa:** Handle array arguments to side effectual constrain statements
([#3740](#3740))
([028d65e](028d65e))
* Stop cloning Traits!
([#3736](#3736))
([fcff412](fcff412))
* Stop issuing unused variable warnings for variables in trait
definitions ([#3797](#3797))
([0bb44c3](0bb44c3))
* Unsigned integers cannot be negated
([#3688](#3688))
([f904ae1](f904ae1))


### Miscellaneous Chores

* Make file manager read-only to the compiler
([#3760](#3760))
([e3dcc21](e3dcc21))
* Remove unused `source-resolver` package
([#3791](#3791))
([57d2505](57d2505))
</details>

<details><summary>0.37.1</summary>

## [0.37.1](v0.37.0...v0.37.1)
(2023-12-15)


### Features

* Aztec-packages
([#3754](#3754))
([c043265](c043265))
* Speed up transformation of debug messages
([#3815](#3815))
([2a8af1e](2a8af1e))


### Bug Fixes

* Deserialize odd length hex literals
([#3747](#3747))
([4000fb2](4000fb2))
</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
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add a prelude module in the noir_stdlib
3 participants