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

🪤 Audit semver traps in viceroy-lib #262

Open
acfoltzer opened this issue May 11, 2023 · 0 comments
Open

🪤 Audit semver traps in viceroy-lib #262

acfoltzer opened this issue May 11, 2023 · 0 comments
Labels
question Further information is requested

Comments

@acfoltzer
Copy link
Contributor

While reviewing the release branch in #261, I noticed that we have an awful lot of viceroy-lib exposed as public, including session methods like insert_pending_request() and types like AsyncItem. It is very difficult to imagine these being useful to anyone outside of viceroy-lib itself, and so their presence in the public interface is a semver trap that I don't think yields us much benefit.

In addition, we have types like Error which are legitimately useful by library clients, but that are missing defensive measures like #[non_exhaustive] to prevent breakage via adding variants.

I think we should either:

  • reduce our exposure to semver traps by
    • making the public interface of viceroy-lib smaller, and
    • using mitigations like #[non_exhaustive] to make the remaining public interface more forwards-compatible
  • or adopt a wasmtime-like strategy where every non-bugfix release is a major semver bump, and we just don't worry about what we expose

I don't have a great sense of how many clients of viceroy-lib there are other than viceroy-cli, so maybe folks could weigh in here if either of these changes would impact you or others you're aware of?

@acfoltzer acfoltzer added the question Further information is requested label May 11, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

1 participant