5 ms·
The surprising thing is Elixir has better tooling than many lang. funded by the tech giants.
by qaq 8y ago
The surprising thing is Elixir has better tooling than many lang. funded by the tech giants.
- amorphid 8y agoI quite like mix and hex. Now all we need is sane, Elixir-y dialyzer errors!
- jeremyjh 8y agoDisclaimer: I'm a maintainer but the next Dialyxir release makes a major improvement on this, thanks to contributions from Andrew Summers. He wrote a parser for the Erlangified term strings and uses the Elixir (1.6) pretty printer to print all the terms the way Elixir would. We're still fine-tuning the error messages and explanations but there is an RC on hex[0] - give it a spin if you haven't yet. [0] https://hex.pm/packages/dialyxir/1.0.0-rc.3 https://hex.pm/packages/dialyxir/1.0.0-rc.3
- qaq 8y agoWow nice. The rate of progress is amazing.
- dnautics 8y agothanks, the current state of dialyxir is quite good! I use it in my toolchain.
- _asummers 8y agoHi Jeremy! If anyone has any questions about this work, I'm willing to answer them!
- amorphid 8y agoI'll check it out tonight!
- mmartinson 8y agoAwesome. Thanks
- bostonvaulter2 8y agoYou should try Dialyxir 1.0.0-rc3! The error reporting is vastly improved by a GSoC student. Now you can get errors like this: ________________________________________________________________________________ apps/activity_feed/lib/activity_feed/push_notification_listener.ex:10:callback_type_mismatch Callback mismatch for @callback push/2 in ActivityFeed.ListenerBehaviour behaviour. Expected type: {:error, _} | {:ok, _} Actual type: :ok ________________________________________________________________________________ apps/activity_feed/lib/activity_feed/push_notification_listener.ex:24:pattern_match The pattern _ = {:error, _} can never match the type :error | :ok
- _asummers 8y agoNot quite -- that was me =). The GSOC student (Gabriel Gatu) is incorporating that work along with the incremental Dialyzer from the Elixir-ls project, and taking some of the new Dialyxir errors and morphing them a bit into a task that can be eventually merged back upstream into a more mainline mix task. You can track his progress here [0]. The lion's share of the work is now extracted into Erlex [1] which can be incorporated into other tools as needed. [0] https://github.com/gabrielgatu/mix-dialyzer https://github.com/gabrielgatu/mix-dialyzer [1] https://hex.pm/packages/erlex https://hex.pm/packages/erlex
- bostonvaulter2 8y agoOoops! Sorry for getting that mixed up! erlex sounds like a neat project! I hope you make an Elixir Forum post about it so that more people are aware of it, I think it probably has quite a few good uses.
- _asummers 8y agoNo trouble! I had unfortunate (or perhaps fortunate for Gabriel!) timing with its completion. Making a forum post is a good call! I need to throw some more docs in there, but I'll make one after that's in decent shape.
- brentjanderson 8y agoI believe much of this is due to the Erlang/BEAM foundations Elixir is built on. Ericsson has invested considerably in Erlang for decades, giving Elixir a boost in the tooling department.
- qaq 8y agoI think the runtime side absolutely, but package mngmnt, unit testing general dev. productivity things major kudos to Elixir team
- sjtgraham 8y agoNo. Elixir has contributed a lot on its own, aside from what it inherits from Erlang. Mix, Hex, iex, Docs/doctests, ExUnit, etc.
- tyurok 8y agoiex runs smoothly because of erlang's console and ExUnit runs in parallel leveraging BEAM, so it's considerable. The foundation was pretty much there from the beginning.
- pejrich 8y agoWhile it's true that Elixir certainly wasn't built from the ground up, and it has benefited heavily from the work of Ericsson on Erlang, Elixir is more than Erlang with different syntax. A lot of stuff in Elixir was rewritten so that people can read the source in Elixir, and not have to know too much about Erlang.
- noncoml 8y agoI don’t think so. Earlang tooling, rebar3 and erlang.mk, is not really the best out there.
- mononcqc 8y agoI'd love to get your feedback on rebar3; I've heard that opinion repeated often, but not really often have I heard specifics that we could address directly.
- nathan_long 8y agoI don't think it's surprising if you consider Elixir's nature. Languages like Go, Rust, and Haskell have to start from scratch. Getting to the point where they work at all is a huge achievement (though of course they do more than that). Languages like Clojure run on an existing virtual machine, but want a very different programming model, so they have to invent a lot. By contrast, Elixir runs on the BEAM and gets 99% of its features from Erlang: you still use processes, supervisors, pattern matching, etc. So in a sense, the only reason for Elixir to exist is to provide a great developer experience for the BEAM. If it doesn't do that, you might as well use Erlang.
- qaq 8y agoVery valid point