Hi everyone,
With the v1.7 release, we have received reports of some dependencies no longer working properly on the new release.
Developers should not expect breaking changes from Elixir on minor and patch releases. We outline our compatibility and deprecations policy in our docs: Compatibility and Deprecations — Elixir v1.15.2
This means that, if there is something effectively broken in a new release, it is one of:
- We messed up and accidentally introduced a regression, which we have to fix
- We fixed a bug that you were accidentally relying on. It is still our bad. We will either have to accept this or find a better way to do a bug fix (for example, introduce a new function and deprecate the old one)
- Some project (it could be yours) was using private API
Thanks to everyone, we are able to catch the huge majority of the occurrences of 1 and 2 during the RCs. However, there are still many cases where developers are simply using private Elixir modules and functionality - which may be renamed or completely removed in new Elixir versions. We do not provide any guarantees for private functionality. Needless to say, DO NOT USE PRIVATE APIs.
Using private APIs generate a negative cascade effect in the community because it makes developers unable to update to the latest Elixir version.
How to help
If you are a user of a project and you notice it depends on private functionality, consider reporting a bug or submitting a pull request.
If you are a library author and you are using private APIs, don’t. If Elixir has a functionality that you need but it is private, please open up a feature request to make the desired functionality public.
Also, consider running your CI builds against Elixir master. It is as easy as:
- wget https://repo.hex.pm/builds/elixir/master.zip
- unzip -d elixir master.zip
- export PATH=$(pwd)/elixir/bin:${PATH}
Here is more info on available precompiled Elixir versions, branches and tags: GitHub - hexpm/bob: The Builder
While I wrote this thinking about Elixir, it likely applies to most libraries out there.