Which version of elixir-otp-erlang can we use with dialyzer?











up vote
-1
down vote

favorite












Background



The newest version of Elixir (1.7.X) has a bug that prevents the usage of dialyzer 16.



Now, I am aware that some previous versions were free from this problem, but I don’t know which ones.



What I tried



I have tested the following builds:



1.7.2-otp-21
1.7.3-otp-21
1.7.4-otp-21


All failed to work properly.



The bug can be reproduced with the MWE:




  • https://github.com/Fl4m3Ph03n1x/dialyxir-problem


Question



What is the latest version of elixir-otp-erlang that is not affected by this bug?










share|improve this question


























    up vote
    -1
    down vote

    favorite












    Background



    The newest version of Elixir (1.7.X) has a bug that prevents the usage of dialyzer 16.



    Now, I am aware that some previous versions were free from this problem, but I don’t know which ones.



    What I tried



    I have tested the following builds:



    1.7.2-otp-21
    1.7.3-otp-21
    1.7.4-otp-21


    All failed to work properly.



    The bug can be reproduced with the MWE:




    • https://github.com/Fl4m3Ph03n1x/dialyxir-problem


    Question



    What is the latest version of elixir-otp-erlang that is not affected by this bug?










    share|improve this question
























      up vote
      -1
      down vote

      favorite









      up vote
      -1
      down vote

      favorite











      Background



      The newest version of Elixir (1.7.X) has a bug that prevents the usage of dialyzer 16.



      Now, I am aware that some previous versions were free from this problem, but I don’t know which ones.



      What I tried



      I have tested the following builds:



      1.7.2-otp-21
      1.7.3-otp-21
      1.7.4-otp-21


      All failed to work properly.



      The bug can be reproduced with the MWE:




      • https://github.com/Fl4m3Ph03n1x/dialyxir-problem


      Question



      What is the latest version of elixir-otp-erlang that is not affected by this bug?










      share|improve this question













      Background



      The newest version of Elixir (1.7.X) has a bug that prevents the usage of dialyzer 16.



      Now, I am aware that some previous versions were free from this problem, but I don’t know which ones.



      What I tried



      I have tested the following builds:



      1.7.2-otp-21
      1.7.3-otp-21
      1.7.4-otp-21


      All failed to work properly.



      The bug can be reproduced with the MWE:




      • https://github.com/Fl4m3Ph03n1x/dialyxir-problem


      Question



      What is the latest version of elixir-otp-erlang that is not affected by this bug?







      elixir otp dialyzer






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 22 at 9:39









      Flame_Phoenix

      5,7881572157




      5,7881572157
























          2 Answers
          2






          active

          oldest

          votes

















          up vote
          2
          down vote



          accepted










          I wrote a script (using official docker images) to test against all 1.7 versions and all of them failed.



          The lasted version that works seems to be 1.6.6.



          root@0697cad23f07:/data# mix dialyzer
          Finding suitable PLTs
          Checking PLT...
          [:accept, :compiler, :crypto, :elixir, :kernel, :logger, :mime, :plug, :plug_crypto, :prometheus, :prometheus_ex, :prometheus_plugs, :stdlib]
          PLT is up to date!
          Starting Dialyzer
          [
          check_plt: false,
          init_plt: '/data/_build/dev/dialyxir_erlang-20.3.8.14_elixir-1.6.6_deps-dev.plt',
          files_rec: ['/data/_build/dev/lib/myapp/ebin'],
          warnings: [:unknown]
          ]
          Total errors: 0, Skipped: 0
          done in 0m2.83s
          done (passed successfully)





          share|improve this answer





















          • How interesting. Which erlang version did you compiled with? 1.6.6-otp-20 or 1.6.6-otp-21?
            – Flame_Phoenix
            Nov 22 at 14:28










          • Elixir 1.6.6 (compiled with OTP 20) using this: github.com/c0b/docker-elixir/blob/…
            – Marcos Tapajós
            Nov 22 at 15:16


















          up vote
          0
          down vote













          I'm not sure what is your other setup, but as I mentioned before, for me it works with the following:



          $ mix dialyzer
          Finding suitable PLTs
          Checking PLT...
          [:asn1, :bamboo, :bcrypt_elixir, :cache_server, :certifi, :compiler, :connection, :core, :cors_plug, :cowboy, :cowlib, :crypto, :database, :db_connection, :decimal, :ecto, :eex, :elixir, :elixir_make, :gettext, :hackney, :idna, :jason, :kernel, :logger, :metrics, :mime, :mimerl, :parse_trans, :phoenix, :phoenix_html, :phoenix_pubsub, :plug, :poison, :poolboy, :postgrex, :public_key, :ranch, :runtime_tools, :ssl, :ssl_verify_fun, :stdlib, :unicode_util_compat]
          PLT is up to date!
          Starting Dialyzer
          [
          check_plt: false,
          init_plt: '/______/code/aetherwars_umbrella/_build/dev/dialyxir_erlang-21.0_elixir-1.7.2_deps-dev.plt',
          files_rec: ['/______/code/aetherwars_umbrella/_build/dev/lib/web/ebin',
          '/______/code/aetherwars_umbrella/_build/dev/lib/cache_server/ebin',
          '/______/code/aetherwars_umbrella/_build/dev/lib/database/ebin',
          '/______/code/aetherwars_umbrella/_build/dev/lib/core/ebin'],
          warnings: [:unknown]
          ]
          Total errors: 70, Skipped: 0
          done in 2m2.05s


          Umbrella mix.exs:



          # ...
          def project do
          [
          apps_path: "apps",
          start_permanent: Mix.env() == :prod,
          deps: deps(),
          dialyzer: [plt_add_deps: :transitive],
          aliases: aliases()
          ]
          end

          #....

          defp deps do
          [
          {:dialyxir, "~> 1.0.0-rc.3", only: [:dev], runtime: false},
          {:benchee, "~> 0.11", only: :dev}
          ]
          end





          share|improve this answer





















            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53427886%2fwhich-version-of-elixir-otp-erlang-can-we-use-with-dialyzer%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            2
            down vote



            accepted










            I wrote a script (using official docker images) to test against all 1.7 versions and all of them failed.



            The lasted version that works seems to be 1.6.6.



            root@0697cad23f07:/data# mix dialyzer
            Finding suitable PLTs
            Checking PLT...
            [:accept, :compiler, :crypto, :elixir, :kernel, :logger, :mime, :plug, :plug_crypto, :prometheus, :prometheus_ex, :prometheus_plugs, :stdlib]
            PLT is up to date!
            Starting Dialyzer
            [
            check_plt: false,
            init_plt: '/data/_build/dev/dialyxir_erlang-20.3.8.14_elixir-1.6.6_deps-dev.plt',
            files_rec: ['/data/_build/dev/lib/myapp/ebin'],
            warnings: [:unknown]
            ]
            Total errors: 0, Skipped: 0
            done in 0m2.83s
            done (passed successfully)





            share|improve this answer





















            • How interesting. Which erlang version did you compiled with? 1.6.6-otp-20 or 1.6.6-otp-21?
              – Flame_Phoenix
              Nov 22 at 14:28










            • Elixir 1.6.6 (compiled with OTP 20) using this: github.com/c0b/docker-elixir/blob/…
              – Marcos Tapajós
              Nov 22 at 15:16















            up vote
            2
            down vote



            accepted










            I wrote a script (using official docker images) to test against all 1.7 versions and all of them failed.



            The lasted version that works seems to be 1.6.6.



            root@0697cad23f07:/data# mix dialyzer
            Finding suitable PLTs
            Checking PLT...
            [:accept, :compiler, :crypto, :elixir, :kernel, :logger, :mime, :plug, :plug_crypto, :prometheus, :prometheus_ex, :prometheus_plugs, :stdlib]
            PLT is up to date!
            Starting Dialyzer
            [
            check_plt: false,
            init_plt: '/data/_build/dev/dialyxir_erlang-20.3.8.14_elixir-1.6.6_deps-dev.plt',
            files_rec: ['/data/_build/dev/lib/myapp/ebin'],
            warnings: [:unknown]
            ]
            Total errors: 0, Skipped: 0
            done in 0m2.83s
            done (passed successfully)





            share|improve this answer





















            • How interesting. Which erlang version did you compiled with? 1.6.6-otp-20 or 1.6.6-otp-21?
              – Flame_Phoenix
              Nov 22 at 14:28










            • Elixir 1.6.6 (compiled with OTP 20) using this: github.com/c0b/docker-elixir/blob/…
              – Marcos Tapajós
              Nov 22 at 15:16













            up vote
            2
            down vote



            accepted







            up vote
            2
            down vote



            accepted






            I wrote a script (using official docker images) to test against all 1.7 versions and all of them failed.



            The lasted version that works seems to be 1.6.6.



            root@0697cad23f07:/data# mix dialyzer
            Finding suitable PLTs
            Checking PLT...
            [:accept, :compiler, :crypto, :elixir, :kernel, :logger, :mime, :plug, :plug_crypto, :prometheus, :prometheus_ex, :prometheus_plugs, :stdlib]
            PLT is up to date!
            Starting Dialyzer
            [
            check_plt: false,
            init_plt: '/data/_build/dev/dialyxir_erlang-20.3.8.14_elixir-1.6.6_deps-dev.plt',
            files_rec: ['/data/_build/dev/lib/myapp/ebin'],
            warnings: [:unknown]
            ]
            Total errors: 0, Skipped: 0
            done in 0m2.83s
            done (passed successfully)





            share|improve this answer












            I wrote a script (using official docker images) to test against all 1.7 versions and all of them failed.



            The lasted version that works seems to be 1.6.6.



            root@0697cad23f07:/data# mix dialyzer
            Finding suitable PLTs
            Checking PLT...
            [:accept, :compiler, :crypto, :elixir, :kernel, :logger, :mime, :plug, :plug_crypto, :prometheus, :prometheus_ex, :prometheus_plugs, :stdlib]
            PLT is up to date!
            Starting Dialyzer
            [
            check_plt: false,
            init_plt: '/data/_build/dev/dialyxir_erlang-20.3.8.14_elixir-1.6.6_deps-dev.plt',
            files_rec: ['/data/_build/dev/lib/myapp/ebin'],
            warnings: [:unknown]
            ]
            Total errors: 0, Skipped: 0
            done in 0m2.83s
            done (passed successfully)






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Nov 22 at 12:09









            Marcos Tapajós

            1615




            1615












            • How interesting. Which erlang version did you compiled with? 1.6.6-otp-20 or 1.6.6-otp-21?
              – Flame_Phoenix
              Nov 22 at 14:28










            • Elixir 1.6.6 (compiled with OTP 20) using this: github.com/c0b/docker-elixir/blob/…
              – Marcos Tapajós
              Nov 22 at 15:16


















            • How interesting. Which erlang version did you compiled with? 1.6.6-otp-20 or 1.6.6-otp-21?
              – Flame_Phoenix
              Nov 22 at 14:28










            • Elixir 1.6.6 (compiled with OTP 20) using this: github.com/c0b/docker-elixir/blob/…
              – Marcos Tapajós
              Nov 22 at 15:16
















            How interesting. Which erlang version did you compiled with? 1.6.6-otp-20 or 1.6.6-otp-21?
            – Flame_Phoenix
            Nov 22 at 14:28




            How interesting. Which erlang version did you compiled with? 1.6.6-otp-20 or 1.6.6-otp-21?
            – Flame_Phoenix
            Nov 22 at 14:28












            Elixir 1.6.6 (compiled with OTP 20) using this: github.com/c0b/docker-elixir/blob/…
            – Marcos Tapajós
            Nov 22 at 15:16




            Elixir 1.6.6 (compiled with OTP 20) using this: github.com/c0b/docker-elixir/blob/…
            – Marcos Tapajós
            Nov 22 at 15:16












            up vote
            0
            down vote













            I'm not sure what is your other setup, but as I mentioned before, for me it works with the following:



            $ mix dialyzer
            Finding suitable PLTs
            Checking PLT...
            [:asn1, :bamboo, :bcrypt_elixir, :cache_server, :certifi, :compiler, :connection, :core, :cors_plug, :cowboy, :cowlib, :crypto, :database, :db_connection, :decimal, :ecto, :eex, :elixir, :elixir_make, :gettext, :hackney, :idna, :jason, :kernel, :logger, :metrics, :mime, :mimerl, :parse_trans, :phoenix, :phoenix_html, :phoenix_pubsub, :plug, :poison, :poolboy, :postgrex, :public_key, :ranch, :runtime_tools, :ssl, :ssl_verify_fun, :stdlib, :unicode_util_compat]
            PLT is up to date!
            Starting Dialyzer
            [
            check_plt: false,
            init_plt: '/______/code/aetherwars_umbrella/_build/dev/dialyxir_erlang-21.0_elixir-1.7.2_deps-dev.plt',
            files_rec: ['/______/code/aetherwars_umbrella/_build/dev/lib/web/ebin',
            '/______/code/aetherwars_umbrella/_build/dev/lib/cache_server/ebin',
            '/______/code/aetherwars_umbrella/_build/dev/lib/database/ebin',
            '/______/code/aetherwars_umbrella/_build/dev/lib/core/ebin'],
            warnings: [:unknown]
            ]
            Total errors: 70, Skipped: 0
            done in 2m2.05s


            Umbrella mix.exs:



            # ...
            def project do
            [
            apps_path: "apps",
            start_permanent: Mix.env() == :prod,
            deps: deps(),
            dialyzer: [plt_add_deps: :transitive],
            aliases: aliases()
            ]
            end

            #....

            defp deps do
            [
            {:dialyxir, "~> 1.0.0-rc.3", only: [:dev], runtime: false},
            {:benchee, "~> 0.11", only: :dev}
            ]
            end





            share|improve this answer

























              up vote
              0
              down vote













              I'm not sure what is your other setup, but as I mentioned before, for me it works with the following:



              $ mix dialyzer
              Finding suitable PLTs
              Checking PLT...
              [:asn1, :bamboo, :bcrypt_elixir, :cache_server, :certifi, :compiler, :connection, :core, :cors_plug, :cowboy, :cowlib, :crypto, :database, :db_connection, :decimal, :ecto, :eex, :elixir, :elixir_make, :gettext, :hackney, :idna, :jason, :kernel, :logger, :metrics, :mime, :mimerl, :parse_trans, :phoenix, :phoenix_html, :phoenix_pubsub, :plug, :poison, :poolboy, :postgrex, :public_key, :ranch, :runtime_tools, :ssl, :ssl_verify_fun, :stdlib, :unicode_util_compat]
              PLT is up to date!
              Starting Dialyzer
              [
              check_plt: false,
              init_plt: '/______/code/aetherwars_umbrella/_build/dev/dialyxir_erlang-21.0_elixir-1.7.2_deps-dev.plt',
              files_rec: ['/______/code/aetherwars_umbrella/_build/dev/lib/web/ebin',
              '/______/code/aetherwars_umbrella/_build/dev/lib/cache_server/ebin',
              '/______/code/aetherwars_umbrella/_build/dev/lib/database/ebin',
              '/______/code/aetherwars_umbrella/_build/dev/lib/core/ebin'],
              warnings: [:unknown]
              ]
              Total errors: 70, Skipped: 0
              done in 2m2.05s


              Umbrella mix.exs:



              # ...
              def project do
              [
              apps_path: "apps",
              start_permanent: Mix.env() == :prod,
              deps: deps(),
              dialyzer: [plt_add_deps: :transitive],
              aliases: aliases()
              ]
              end

              #....

              defp deps do
              [
              {:dialyxir, "~> 1.0.0-rc.3", only: [:dev], runtime: false},
              {:benchee, "~> 0.11", only: :dev}
              ]
              end





              share|improve this answer























                up vote
                0
                down vote










                up vote
                0
                down vote









                I'm not sure what is your other setup, but as I mentioned before, for me it works with the following:



                $ mix dialyzer
                Finding suitable PLTs
                Checking PLT...
                [:asn1, :bamboo, :bcrypt_elixir, :cache_server, :certifi, :compiler, :connection, :core, :cors_plug, :cowboy, :cowlib, :crypto, :database, :db_connection, :decimal, :ecto, :eex, :elixir, :elixir_make, :gettext, :hackney, :idna, :jason, :kernel, :logger, :metrics, :mime, :mimerl, :parse_trans, :phoenix, :phoenix_html, :phoenix_pubsub, :plug, :poison, :poolboy, :postgrex, :public_key, :ranch, :runtime_tools, :ssl, :ssl_verify_fun, :stdlib, :unicode_util_compat]
                PLT is up to date!
                Starting Dialyzer
                [
                check_plt: false,
                init_plt: '/______/code/aetherwars_umbrella/_build/dev/dialyxir_erlang-21.0_elixir-1.7.2_deps-dev.plt',
                files_rec: ['/______/code/aetherwars_umbrella/_build/dev/lib/web/ebin',
                '/______/code/aetherwars_umbrella/_build/dev/lib/cache_server/ebin',
                '/______/code/aetherwars_umbrella/_build/dev/lib/database/ebin',
                '/______/code/aetherwars_umbrella/_build/dev/lib/core/ebin'],
                warnings: [:unknown]
                ]
                Total errors: 70, Skipped: 0
                done in 2m2.05s


                Umbrella mix.exs:



                # ...
                def project do
                [
                apps_path: "apps",
                start_permanent: Mix.env() == :prod,
                deps: deps(),
                dialyzer: [plt_add_deps: :transitive],
                aliases: aliases()
                ]
                end

                #....

                defp deps do
                [
                {:dialyxir, "~> 1.0.0-rc.3", only: [:dev], runtime: false},
                {:benchee, "~> 0.11", only: :dev}
                ]
                end





                share|improve this answer












                I'm not sure what is your other setup, but as I mentioned before, for me it works with the following:



                $ mix dialyzer
                Finding suitable PLTs
                Checking PLT...
                [:asn1, :bamboo, :bcrypt_elixir, :cache_server, :certifi, :compiler, :connection, :core, :cors_plug, :cowboy, :cowlib, :crypto, :database, :db_connection, :decimal, :ecto, :eex, :elixir, :elixir_make, :gettext, :hackney, :idna, :jason, :kernel, :logger, :metrics, :mime, :mimerl, :parse_trans, :phoenix, :phoenix_html, :phoenix_pubsub, :plug, :poison, :poolboy, :postgrex, :public_key, :ranch, :runtime_tools, :ssl, :ssl_verify_fun, :stdlib, :unicode_util_compat]
                PLT is up to date!
                Starting Dialyzer
                [
                check_plt: false,
                init_plt: '/______/code/aetherwars_umbrella/_build/dev/dialyxir_erlang-21.0_elixir-1.7.2_deps-dev.plt',
                files_rec: ['/______/code/aetherwars_umbrella/_build/dev/lib/web/ebin',
                '/______/code/aetherwars_umbrella/_build/dev/lib/cache_server/ebin',
                '/______/code/aetherwars_umbrella/_build/dev/lib/database/ebin',
                '/______/code/aetherwars_umbrella/_build/dev/lib/core/ebin'],
                warnings: [:unknown]
                ]
                Total errors: 70, Skipped: 0
                done in 2m2.05s


                Umbrella mix.exs:



                # ...
                def project do
                [
                apps_path: "apps",
                start_permanent: Mix.env() == :prod,
                deps: deps(),
                dialyzer: [plt_add_deps: :transitive],
                aliases: aliases()
                ]
                end

                #....

                defp deps do
                [
                {:dialyxir, "~> 1.0.0-rc.3", only: [:dev], runtime: false},
                {:benchee, "~> 0.11", only: :dev}
                ]
                end






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 22 at 17:18









                m3characters

                1,5142815




                1,5142815






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.





                    Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                    Please pay close attention to the following guidance:


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53427886%2fwhich-version-of-elixir-otp-erlang-can-we-use-with-dialyzer%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    What visual should I use to simply compare current year value vs last year in Power BI desktop

                    Alexandru Averescu

                    Trompette piccolo