Elixir v1.15.0-rc.0 released

No, they aren’t. The only references grepped for certifi or castore are in cldr_utils and there are both optional: true.

A slightly simpler example is with the ex_cldr repo. Here’s the deps tree:

kip@Kips-MacBook-Pro cldr % mix deps.tree
ex_cldr
├── benchee ~> 1.0 (Hex package)
│   ├── deep_merge ~> 1.0 (Hex package)
│   └── statistex ~> 1.0 (Hex package)
├── cldr_utils ~> 2.21 (Hex package)
│   └── decimal ~> 1.9 or ~> 2.0 (Hex package)
├── decimal ~> 1.6 or ~> 2.0 (Hex package)
├── dialyxir ~> 1.0 (Hex package)
│   └── erlex >= 0.2.6 (Hex package)
├── ex_doc ~> 0.18 (Hex package)
│   ├── earmark_parser ~> 1.4.31 (Hex package)
│   ├── makeup_elixir ~> 0.14 (Hex package)
│   │   ├── makeup ~> 1.0 (Hex package)
│   │   │   └── nimble_parsec ~> 1.2.2 or ~> 1.3 (Hex package)
│   │   └── nimble_parsec ~> 1.2.3 or ~> 1.3 (Hex package)
│   └── makeup_erlang ~> 0.1 (Hex package)
│       └── makeup ~> 1.0 (Hex package)
├── gettext ~> 0.19 (Hex package)
│   └── expo ~> 0.4.0 (Hex package)
├── jason ~> 1.0 (Hex package)
│   └── decimal ~> 1.0 or ~> 2.0 (Hex package)
├── nimble_parsec ~> 0.5 or ~> 1.0 (Hex package)
├── stream_data ~> 0.4 (Hex package)
└── sweet_xml ~> 0.6 (Hex package)

There are no references to :certifi or :castore other than that they are optional dependencies in cldr_utils.

mix.lock

In mix.lock I see the following. There is not direct dependency on :certifi or :castore.

%{
  "benchee": {:hex, :benchee, "1.1.0", "f3a43817209a92a1fade36ef36b86e1052627fd8934a8b937ac9ab3a76c43062", [:mix], [{:deep_merge, "~> 1.0", [hex: :deep_merge, repo: "hexpm", optional: false]}, {:statistex, "~> 1.0", [hex: :statistex, repo: "hexpm", optional: false]}], "hexpm", "7da57d545003165a012b587077f6ba90b89210fd88074ce3c60ce239eb5e6d93"},
  "cldr_utils": {:hex, :cldr_utils, "2.24.0", "5b356769f2baf9dd25b166e9f1b2a5ce955d5b556bc07f56c959cfff1ec9543e", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:certifi, "~> 2.5", [hex: :certifi, repo: "hexpm", optional: true]}, {:decimal, "~> 1.9 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm", "3fde251e0bbbe473230561019dd6c2958d82a10c134bb5b8b4e21a694196cf85"},
  "decimal": {:hex, :decimal, "2.1.1", "5611dca5d4b2c3dd497dec8f68751f1f1a54755e8ed2a966c2633cf885973ad6", [:mix], [], "hexpm", "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc"},
 ...
}

Dialyzer run

And running rm -rf _build && mix dialyzer I see:

Generated ex_cldr app
Finding suitable PLTs
Checking PLT...
Error loading castore, dependency list may be incomplete.
 {~c"no such file or directory", ~c"castore.app"}
Error loading certifi, dependency list may be incomplete.
 {~c"no such file or directory", ~c"certifi.app"}
[:asn1, :castore, :certifi, :cldr_utils, :compiler, :crypto, :decimal, :earmark_parser, :eex, :elixir, :ex_doc, :ex_unit, :expo, :gettext, :inets, :jason, :kernel, :logger, :makeup, :makeup_elixir, :makeup_erlang, :mix, :nimble_parsec, :public_key, :ssl, :stdlib, :sweet_xml, :xmerl]
Looking up modules in dialyxir_erlang-26.0_elixir-1.15.0-rc.0_deps-dev.plt
Looking up modules in dialyxir_erlang-26.0_elixir-1.15.0-rc.0.plt
Finding applications for dialyxir_erlang-26.0_elixir-1.15.0-rc.0.plt
Finding modules for dialyxir_erlang-26.0_elixir-1.15.0-rc.0.plt
Checking 463 modules in dialyxir_erlang-26.0_elixir-1.15.0-rc.0.plt
Finding applications for dialyxir_erlang-26.0_elixir-1.15.0-rc.0_deps-dev.plt
Unknown application :castore
Unknown application :certifi
Finding modules for dialyxir_erlang-26.0_elixir-1.15.0-rc.0_deps-dev.plt
Copying dialyxir_erlang-26.0_elixir-1.15.0-rc.0.plt to dialyxir_erlang-26.0_elixir-1.15.0-rc.0_deps-dev.plt
Looking up modules in dialyxir_erlang-26.0_elixir-1.15.0-rc.0_deps-dev.plt
Checking 463 modules in dialyxir_erlang-26.0_elixir-1.15.0-rc.0_deps-dev.plt
Adding 626 modules to dialyxir_erlang-26.0_elixir-1.15.0-rc.0_deps-dev.plt
done in 0m24.86s
ignore_warnings: .dialyzer_ignore_warnings

Starting Dialyzer
[
  check_plt: false,
  init_plt: ~c"/Users/kip/Development/cldr/_build/dev/dialyxir_erlang-26.0_elixir-1.15.0-rc.0_deps-dev.plt",
  files: [~c"/Users/kip/Development/cldr/_build/dev/lib/ex_cldr/ebin/Elixir.Cldr.LanguageTag.Chars.Cldr.LanguageTag.U.beam",
   ~c"/Users/kip/Development/cldr/_build/dev/lib/ex_cldr/ebin/Elixir.Cldr.Normalize.CalendarEra.beam",
   ~c"/Users/kip/Development/cldr/_build/dev/lib/ex_cldr/ebin/Elixir.Cldr.NoParentError.beam",
   ~c"/Users/kip/Development/cldr/_build/dev/lib/ex_cldr/ebin/Elixir.Cldr.UnknownFormatError.beam",
   ~c"/Users/kip/Development/cldr/_build/dev/lib/ex_cldr/ebin/Elixir.Mix.Tasks.Cldr.Install.Locales.beam",
   ...],
  warnings: [:unknown]
]
Total errors: 0, Skipped: 0, Unnecessary Skips: 0
done in 0m14.19s
done (passed successfully)

ex_cldr.app

The relevant parts are:

{application,ex_cldr,
             [{compile_env,[{ecto,[json_library],error},
                            {ex_cldr,['Elixir.MyApp.Gettext'],
                                     {ok,[{default_locale,<<"en">>}]}},
                            {ex_cldr,[json_library],error},
                            {phoenix,[json_library],error}]},
              {optional_applications,[jason,nimble_parsec,gettext,sweet_xml]},
              {applications,[kernel,stdlib,elixir,logger,inets,ssl,eex,
                             ex_unit,cldr_utils,decimal,jason,ex_doc,
                             nimble_parsec,gettext,sweet_xml]},