Skip to content
This repository was archived by the owner on Nov 18, 2020. It is now read-only.

Conversation

dumbbell
Copy link
Contributor

@dumbbell dumbbell commented Aug 3, 2018

Elixir 1.6.6 is the first version to support Erlang 21.0. Bumping the minimum to this version eases packaging: packagers don't have to think about Erlang/Elixir combinations which work.

The upper limit is set to 1.8.0 (not included) because 1.7.x should work fine. However, 1.8.0 will probably drop Erlang 19.x support, at which point we should review this version pinning.

[#159500280]

Elixir 1.6.6 is the first version to support Erlang 21.0. Bumping the
minimum to this version eases packaging: packagers don't have to think
about Erlang/Elixir combinations which work.

The upper limit is set to 1.8.0 (not included) because 1.7.x should work
fine. However, 1.8.0 will probably drop Erlang 19.x support, at which
point we should review this version pinning.

[#159500280]
@dumbbell dumbbell added this to the 3.7.x milestone Aug 3, 2018
@dumbbell
Copy link
Contributor Author

dumbbell commented Aug 3, 2018

The CI pipeline for the master branch now tests rabbitmq-cli with Erlang 21.0 and Elixir 1.7.1. It currently fails as expected because mix.exs requires Elixir 1.6.x.

@dumbbell
Copy link
Contributor Author

dumbbell commented Aug 3, 2018

With Elixir 1.7.1, I get a single failure in the testsuite:

  * test Auto-completes a command (18.6ms)

  1) test Auto-completes a command (AutoCompleteTest)
     test/core/auto_complete_test.exs:23
     ** (MatchError) no match of right hand side value: []
     code: ["canis_aureus"] = @subject.complete("rabbitmqctl", ["--node", "foo", "--quet", "canis_a"])
     stacktrace:
       test/core/auto_complete_test.exs:29: (test)

@dumbbell
Copy link
Contributor Author

dumbbell commented Aug 3, 2018

The failure is caused by a change of behavior in OptionParser. Perhaps related to the following deprecation in Elixir 1.7.0:

[OptionParser] Deprecate dynamic option parser mode that depended on atoms to be previously loaded and therefore behaved inconsistently

Passing allow_nonexistent_atoms: true to OptionParser restores the previous behavior. I'm testing the patch right now.

There is a change of behavior in OptionParser between Elixir 1.6.x and
1.7.x. It's probably the deprecation documented in Elixir 1.7.0 release
notes:

    [OptionParser] Deprecate dynamic option parser mode that depended on
    atoms to be previously loaded and therefore behaved inconsistently

Setting the `allow_nonexistent_atoms` to true allows to restore the
behavior from Elixir 1.6.x, thus giving a consistent parsing with both
versions of Elixir.

[#159500280]
@dumbbell dumbbell changed the title mix.exs: Require Elixir >= 1.6.6 and < 1.8.0 Require Elixir 1.6.6+, adding support for Elixir 1.7.x at the same time Aug 3, 2018
@dumbbell
Copy link
Contributor Author

dumbbell commented Aug 3, 2018

The patch was tested successfully with both Elixir 1.6.6 and 1.7.1.

@michaelklishin michaelklishin merged commit b7246db into master Aug 3, 2018
@michaelklishin michaelklishin deleted the require-elixir-1.6.6 branch August 3, 2018 13:38
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants