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

tracking backwards-incompatible changes #16

Open
belm0 opened this issue Apr 6, 2021 · 1 comment
Open

tracking backwards-incompatible changes #16

belm0 opened this issue Apr 6, 2021 · 1 comment

Comments

@belm0
Copy link
Member

belm0 commented Apr 6, 2021

Subscribe to this issue for notices of backward-incompatible changes.

Occasional API changes in trio-util should be expected. The current policy is that such changes may happen within minor version increments (middle number of the version). Bugfix increments (last number) will never have intentional breaking changes. Therefore:

  1. if your application or package build/test environment depends on trio-util, it's best practice to pin the entire version (e.g. via pip-compile tool)
  2. if your package has a trio-util requirement, then... it's tricky. Ideally you'd specify only a minimum version, and make the package work with old and new trio-util versions by various means (so that apps or dependees using your package are free to choose a trio-util version).

Regarding packages depending on trio-util, roughly these levels of care about compatibility are possible:

  • best effort (0 dependee packages, current situation) - occasional breaking changes, no deprecation cycle
  • deprecating changes (> 0 dependee packages) - occasional breaking changes, but backwards compatibility will be provides for a few minor releases. (It's hard to do for some changes, like transitioning a function between sync and async.)
  • major version only (significant dependee packages) - breaking changes are made with major version increments only, so dependee packages can safely specify a version like ~= 2.1 (i.e. any major version 2, with minor version >= 1).

As the number of packages depending on trio-util increases, I'll try to adjust the priority to suit.

belm0 added a commit that referenced this issue Apr 6, 2021
  * supports both unqueued and eventual consistency cases
  * unlike MailboxRepeatedEvent, supports broadcast
  * supports one-shot usage: wait_event()
  * eventual consistency iterator supports "repeat_last"

This is a backwards incompatible change (#16).
@belm0
Copy link
Member Author

belm0 commented Apr 6, 2021

breaking changes in upcoming release trio-util 0.5.0:

  • compose_values() context manager was changed from async to synchronous
  • RepeatedEvent replaces both UnqueuedRepeatedEvent and MailboxRepeatedEvent

@belm0 belm0 pinned this issue Apr 6, 2021
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

No branches or pull requests

1 participant