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

Remove unused rounding modes Trunc and Expand #5412

Closed

Conversation

barakman
Copy link
Contributor

Fixes #5411

In the Rounding-Modes API (in the Math library):

    enum Rounding {
        Floor, // Toward negative infinity
        Ceil, // Toward positive infinity
        Trunc, // Toward zero
        Expand // Away from zero
    }

Remove the last two options, which are not in use throughout the codebase.

PR Checklist

  • Tests
  • Documentation
  • Changeset entry (run npx changeset add)

Copy link

changeset-bot bot commented Dec 30, 2024

⚠️ No Changeset found

Latest commit: c0eae73

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@barakman
Copy link
Contributor Author

⚠️ No Changeset found

Latest commit: 6a441be

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets
Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

This PR introduces an API-breaking change, so in theory, the changeset should include a major-version update.
On the other hand, the changed part in the API is not used anywhere in the current version, so it is possible that a minor-version update or even a patch-version update will suffice.

@Amxx
Copy link
Collaborator

Amxx commented Jan 6, 2025

Hello @barakman

Rounding mode Trunc and Expand have been introduced from the start so that we couldn't unambiguously expand the library to signed integers in the future. While this is not (yet) available in our library, there may be code that depends on our library to define these operation.

Removing enum entries is a breaking change, and we don't allow such modification without a very strong reason.

@Amxx Amxx closed this Jan 6, 2025
@barakman
Copy link
Contributor Author

barakman commented Jan 6, 2025

Removing enum entries is a breaking change, and we don't allow such modification without a very strong reason.

The reasons are explained in the associated issue (#5411), as by changing this API to support only unsigned input, it becomes easier (and cleaner) to:

  1. Support an additional rounding mode, namely, round-to-nearest
  2. Get rid of the enum altogether, thus reducing the gas consumption of all related functions

Whether these are strong reasons is subjected to opinion, which I will leave for your dev team to decide.

One way to handle the API-break issue, is by implementing the new functions ("funcFloor" and "funcCeil" per each "func") independently and without removing the current API (which could later be deprecated if chosen to).

@Amxx
Copy link
Collaborator

Amxx commented Jan 6, 2025

Lets discuss all that in the issue before doing any breaking implementation.

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.

Simplify Rounding Modes
2 participants