[HN Gopher] Erlang/OTP 26.1 Released
___________________________________________________________________
Erlang/OTP 26.1 Released
Author : amalinovic
Score : 210 points
Date : 2023-09-21 07:56 UTC (15 hours ago)
(HTM) web link (erlangforums.com)
(TXT) w3m dump (erlangforums.com)
| alberth wrote:
| What's the major thing that Erlang/OTP (or Elixir) needs for
| greater adoption?
| dlachausse wrote:
| Honestly, I think a lot of Erlang's issues are superficial
| (some people find its syntax to be ugly and a bit warty). The
| other thing it seems to suffer from is the chicken and the egg
| of it's not popular because it's not popular. It is also a poor
| fit for certain domains, such as mobile apps.
| rockwotj wrote:
| If you don't like the syntax highly recommend giving
| https://gleam.run a try
| dlachausse wrote:
| Other than the different line endings I love Erlang's
| syntax, but I think the Prolog inspired syntax can be a
| turn off to people used to more mainstream languages.
| thibaut_barrere wrote:
| Being taught, or at least mentioned, in schools with
| programming courses.
|
| Resources that target young people or beginner (we already have
| some, but more, and more widespread).
|
| Advertising outside the Elixir circle (Chris McCord asked the
| other day what podcasts would be a good fit for that).
|
| Python has a major edge in France, being defined as the
| reference language (teached at high school and engineering
| schools), and as such it sets the frame.
|
| For now, when I mention Elixir around me, although there is
| interest, the feedback is that it seems like a great language
| for connoisseurs and people with special needs (e.g. very high
| concurrency), which most people have no need for.
|
| I personally think it's a great language overall, including
| from a maintenance point of view, and I try to advertise it as
| such.
|
| Source: a dad with a 15-yo son who is totally into programming,
| and quickly saw that Python is everywhere together with
| Javascript (from a YouTube / blog posts / discord point of
| view). He doesn't understand why I "bother" with Elixir :-)
| melx wrote:
| Yyyy... Erlang has great adoption - examples:
|
| - Ericsson (they designed Erlang) is using it for its mobile
| products/networks. Approx 40% of all mobile traffic _worldwide_
| goes through Ericsson 's infra.
|
| - WhatsApp used/uses Erlang - again millions (billions?) of
| users
|
| - Bet365 / Klarna use Erlang - millions of users
|
| - from OSS, RabbitMQ, is written in Erlang
|
| I could go on... Erlang has great adoption, but it's probably
| smaller than, e.g. Python, due to Erlang's specific
| applications.
| yakubin wrote:
| I thought Armstrong wrote that Ericsson replaced Erlang with
| C++ or some such thing, because they didn't want to maintain
| a language and wanted something more off-the-shelf.
| macintux wrote:
| They tried to drop it in favor of C++ but eventually
| realized their mistake, IIRC.
| tguvot wrote:
| you should finish reading. they failed with replacement and
| went back to erlang. though it's not 100% pure erlang
| whalesalad wrote:
| lots of users using a tool built on erlang != lots of users
| using erlang.
|
| in the programming community as a whole erlang/elixir are not
| very common.
|
| it's important to ack this distinction becuase we still have
| a hill to climb with spreading awareness for OTP.
| roblh wrote:
| I'm fairly new to elixir, but the two things I liked the least
| were having to use asdf to get a working version of it that
| didn't fight with the language server, and really the language
| server not being particularly smart or fleshed out. It's not
| catastrophic, but there are many other languages that are much
| smoother. Particularly the auto-formatting leaves a lot to be
| desired. Thankfully these really aren't existential problems
| because the language itself is so pleasant to use.
| ekidd wrote:
| As someone who's enough of an early adopter to have been
| running Rust in production since ~2016, and who takes a good
| look at Elixir every few years, there are two major things
| holding me back:
|
| 1. Lack of strong typing. Dynamic typing is great on 10,000
| line projects with two developers. Once you reach 50,000 lines
| and have a little developer turnover, it stops being fun. And
| dynamic typing also usually means far less IDE support. I'm
| spoiled; I want auto-complete.
|
| 2. Elixir is amazing for UIs like Discord, where your users
| interact in real time. If each of your users lives in their own
| little world, Elixir's greatest strengths have less chance to
| shine.
|
| Right now, TypeScript is a no-brainer, because React is the
| dominant choice for UIs, and using the same language on both
| client and server is a win. And frankly, TypeScript's lovely,
| even if the ecosystem is a constantly-churning trash fire. So
| for a variety of commercial projects, TypeScript is a
| responsible choice. Typed Python, C#, Java, Kotlin, Swift or
| Rust all have compelling use cases, too.
|
| But given stronger typing and an project that needed Elixir's
| strong support for distributed systems, I'd definitely consider
| Elixir.
| jswny wrote:
| Static typing is in active development: https://elixir-
| lang.org/blog/2023/06/22/type-system-updates-...
| alberth wrote:
| Official Elixir blog post on this exact topic from just
| 2-days ago.
|
| https://elixir-lang.org/blog/2023/09/20/strong-arrows-
| gradua...
| _trapexit wrote:
| Strong typing would not be an unwelcome addition to the
| Erlang space but compared to most dynamically typed languages
| I find Erlang/Elixer to be infinitely more usable. If you
| aren't using guards and specific type pattern matching you
| arguably are doing it wrong. And those things give you much
| of the type info you need while developing. No compile time
| help but it's a lot better than most other dynamic languages.
| I've built very large projects in Erlang and didn't find
| typing a real issue.
| ekidd wrote:
| > _I 've built very large projects in Erlang and didn't
| find typing a real issue._
|
| So I want to put on my consultant/lead engineer hat for
| this discussion. :-) I've worked for years in Ruby, Lisp,
| Scheme and other untyped languages, and shipped some fairly
| large projects.
|
| Any project where you can rightfully say "I've built it" is
| small enough that dynamic typing can be a pretty pleasant
| strategy. (I'd miss good auto-completion, though.)
|
| But when I walk onto a project with 5-20 engineers and 5
| years of code, dynamic typing typically makes everything
| slow and painful. "We need to update _two_ major Rails
| versions and deal with 40 supporting libraries. What 's the
| plan for making sure everything still works? We have OK
| test coverage, but can we pull half the team for 2 weeks to
| work through the breakage?"
|
| Or perhaps you reach a scale where you need to onboard a
| bunch of junior developers or data scientists. Here, static
| typing helps people get up to speed, it encourages them to
| refactor aggressively, and it limits breakage caused by
| miscommunication.
|
| 50,000 to 250,000 lines of statically-typed code maintained
| by a 5 person team with normal turnover can make for a very
| pleasant project. But in that size range, I really don't
| enjoy dynamic typing. It's doable, but I can really feel
| the difference.
|
| I am extremely optimistic that Elixir could support
| excellent static types. And if it does, I'd definitely
| consider it for a wider range of projects.
| plumeria wrote:
| Gleam [0] is typed and runs on BEAM.
|
| [0] https://gleam.run/
| irq-1 wrote:
| For anyone who hasn't seen it: https://gleam.run/
|
| > The power of a type system, the expressiveness of
| functional programming, and the reliability of the highly
| concurrent, fault tolerant Erlang runtime, with a familiar
| and modern syntax.
|
| Haven't used it, but I'd like to hear about others
| experience.
| adius wrote:
| For me: Proper type system. But they are apparently working on
| it, so there is hope: https://elixir-
| lang.org/blog/2023/06/22/type-system-updates-...
| rockwotj wrote:
| You should check out https://gleam.run
| orangepurple wrote:
| Gleam is great but it suffers from massive key person risk
| right now.
| xvilka wrote:
| There's already an update on the progress: https://elixir-
| lang.org/blog/2023/09/20/strong-arrows-gradua...
| xvilka wrote:
| But I am doubtful of how actually useful it will be given
| how typing isn't very popular with real world code in
| TypeScript or Python. Too many people prefer to cut corners
| if they can. It should be either strict typing or none of
| it.
| fastball wrote:
| Typescript is how it is because it is a strict superset
| of javascript and because they needed a type system which
| would describe all the existing Web APIs, which are a
| nightmare.
| bcardarella wrote:
| Here is the list of things that I feel are still holding Elixir
| back from wider adoption:
|
| 1. Not enough companies sharing their experience - most
| companies want to lead and not follow. There has been a lot of
| success with Elixir but too often I've heard companies not
| wanting to indicate they're using Elixir out of concern that it
| will tip off their competition (I've heard this from two
| companies now, big ones) or they just don't have a culture of
| sharing. The most impactful case study on Elixir was one of the
| first, the Bleacher Report case study https://www.erlang-
| solutions.com/case-studies/bleacher-repor.... They did an
| excellent job of articulating the direct business value of
| transitioning from Rails to Phoenix. We need more of these
| stories shared
|
| 2. Lack of talent - this is a chicken or egg problem but one
| thing that comes up quite often. If there were more companies
| actively hiring in Elixir there would be more devs learning
| Elixir but companies are reluctant to hire for Elixir because
| there aren't enough devs. Most of the courses/guides are aimed
| at transitioning Senior level talent. At DockYard through our
| Academy https://academy.dockyard.com/ we decided to tackle this
| from the opposite end and commit to producing high quality
| junior Elixir engineers.
|
| 3. Higher price point for talent - the recent Stack Overflow
| surveys regularly rank Elixir at the top for cost. Personally I
| think this stat is being influenced by the fact that Elixir has
| a higher % of more Senior level talent so the average salary
| will be skewed higher. But that nuance doesn't come through in
| the cost rankings. If true then as the ecosystem's talent pool
| starts to normalize we should see this cost average out.
|
| 4. Lack of off-the-shelf solutions - Objectively Elixir is
| faster to build and less costly to maintain than nearly every
| other tech stack I've ever used. However, because it is so easy
| to build something we have developed a culture of "just make it
| from scratch" too often. When newbies ask "how do I do X"
| questions like auth or something else in another tech stack
| that they can simply add a node module or a Ruby gem in Elixir
| most times we lack those pre-built solutions. So the _actual_
| build cost is higher because we can 't simply drop that
| solution in and accelerate the dev process.
|
| I've been selling Elixir services for almost a decade at this
| point and I'm still very bullish on Elixir. We, along with many
| others, have been trying to close these gaps. It's happening
| but the most impact anyone reading this can make that is using
| Elixir is to _share your experiences_. Write blog posts.
| Publish case studies. Indicate the reduction in cost, faster
| times to market, etc... these are the data points that are
| going to be most compelling and important in the coming decade.
| arrowsmith wrote:
| Re: your first point - I don't get it. Why would companies
| not want to "tip off their competition" that they're using
| Elixir? What are they scared of?
| bcardarella wrote:
| I don't get it either. But this is the response that I've
| been given. I think they view Elixir as a competitive
| advantage. TBH it's a dumb look.
| nesarkvechnep wrote:
| It's been hard to find part-time Elixir jobs to supplement my
| main income. I can make their services fly but nobody wants
| to listen.
| rdtsc wrote:
| It's a minor version release, mostly with bug fixes. But I also
| liked these improvements:
|
| * In Erlang/OTP 27 we're getting triple-quoted strings, so this
| patch adds a warning for "accidental" triple-quoted strings.
|
| * In Erlang/OTP 27 exact comparison of 0.0 and -0.0 will change
| so there is a warning for that as well to help detect issues
| earlier.
|
| * FIPS support in crypto module for OpenSSL 3.x
| dlachausse wrote:
| I'm really looking forward to triple quoted strings! I
| definitely could have used them in my last project.
| rdtsc wrote:
| Me too! I think of it every time I have to escape quotes when
| handling json documents. It will be very nice not to have to
| do it.
| daitangio wrote:
| The heart of Elixir :)
| jacquesm wrote:
| Elixir: a relatively thin layer around Erlang that you
| eventually have to learn anyway.
|
| Elixir is sort of a gateway drug to Erlang, sooner or later you
| want the real thing.
| di4na wrote:
| I maintain erlang libraries. I contributed to OTP. I am from
| Elixir.
|
| I cannot agree. Erlang is a pita to with. From the lackluster
| test libraries, the lack of module aliasing, the atrocious UX
| of parse transform, and so much more.
|
| Erlang bring nearly nothing that Elixir cannot do and the UX
| of elixir is by far better.
|
| And I am not talking of syntax here.
| jacquesm wrote:
| I think what you're seeing here is a difference in age and
| general approach to programming. I learned how to program
| in the 70's and early 80's. Back then _anything_ that didn
| 't require punch cards and line editors was considered an
| amazing luxury. I never really grokked IDE's (though:
| TurboC and TurboC++ got pretty close on Windows) and I tend
| to remember the bits of a language and eco-system that I
| need.
|
| Erlang was made by and for that generation, with the tools
| that were there at the time and so it 'speaks to me' in a
| way that I'm familiar with. Going on the assumption that
| you've learned to program a little later, by the time that
| eco systems were more fully featured, IDEs were commonplace
| and things like test libraries and namespaces were common I
| can totally understand why something like Erlang would
| leave you frustrated.
|
| But to me it is a luxury and always will be. So long term,
| Elixir probably has the future, but that battle hardened
| foundation that it builds on stems from a different era,
| where reading the documentation was a prerequisite for
| doing anything with a system and all systems had their
| little quirks. Erlang's roots in turn are partially in
| Prolog, which is another one of those beasts of times long
| gone, it too is quirky and some of that shows through in
| Erlang and the way it approaches things.
|
| In my experience it pays off to embrace such things rather
| than to fight them, then you can spend your time and energy
| far more productive rather than to let it be in the front
| of your focus while you're trying to get some work done. In
| the end it is all tools, and just like in the trades there
| are no bad tools.
| davidw wrote:
| I've been using Erlang for something like 20 years, and
| Elixir has some genuine improvements over it, like using
| "binaries" for strings instead of the linked list/array
| things.
| jacquesm wrote:
| Yes, strings are a real pain point. And I absolutely
| believe that if Erlang were to be created from scratch
| today it would be much closer to Elixir than to the
| Erlang that is there with all of the historical baggage.
| But what surprises me is how well it is geared to the
| problems of the modern web, almost no other platform
| seems to be so tailor made for web scale event and
| request processing.
| davidw wrote:
| Out of curiosity, what have you built that really took
| advantage of what BEAM does well?
| jacquesm wrote:
| A message switch.
| depr wrote:
| If there are no bad tools, why use Erlang at all instead
| of for example, Java, C, C++ or Python which all have a
| larger ecosystem and user base?
| jacquesm wrote:
| Because tool quality is only one dimension to a choice.
| There are no bad tools: but there are tools that are more
| suitable to a particular purpose. For instance because of
| interop, existing infrastructure, team experience, access
| to specialists, natural fit between tool and problem,
| availability of existing libraries and so on.
| wink wrote:
| We'd been using erlang and it was perfectly fine. Then we
| needed a REST API and I looked at how much work it would
| need to make it nice and chose Phoenix. For some reasons
| I still wrote a lib that I'm calling in erlang and
| because of different string handling it's a bit of a
| pain.
|
| So for me at least, both have their strength but I
| wouldn't say you need Erlang, Elixir can work fine on its
| own.
| sodapopcan wrote:
| So TL;DR: "Elixir is a gateway drug to Erlang, unless you
| were born after 1979" ;)
| rz2k wrote:
| Add at least twenty years. In fact, I don't think many
| good programmers in their 70s and 80s would agree with
| the sentiments either. The creators of Erlang also seem
| to think that Elixir adds significantly, according to
| public statements and interviews.
| jacquesm wrote:
| The Elixir programmers that I know describe it as 'biting
| the bullet', going from their familiar environment into
| something that is pretty alien to them. Instead of all
| the luxury you are used to suddenly you have to get into
| the mindset of programmers that didn't have access to all
| of these fancy tools (and sometimes _very_ useful tools).
| For example, debuggers are to me a luxury, I am used to
| reason about what my code does before writing it. If your
| first reflex upon reaching an issue with your code is to
| reach for a debugger to see what it does instead of what
| you meant then you will probably never really train that
| reasoning ability. This also tends to be a dividing line
| between 'gluing APIs together to get something that
| works' versus building something from the foundational
| pieces offered by the language and then integrating that
| into a larger whole.
|
| OTP is a fantastic example of this sort of thing: it is
| arcane, fairly complex but _surprisingly_ well built and
| the quality of the architecture is something most modern
| frameworks can only dream of. The only reason it is still
| around is for the same reason that crocodiles are still
| around: it is extremely well adapted to the niches where
| it is present, all the other stuff has died out. You can
| re-invent all (or usually part) of OTP in any language
| and there have been many attempts at doing just that. But
| why would you? It already exists and it is far more
| battle hardened and time tested than anything new likely
| will ever be. Ok, you 'll have to bite that bullet...
| sodapopcan wrote:
| I was mainly making a joke :P
|
| I think many _web developers_ do just fine without ever
| having to touch Erlang, which is one of the nice things I
| like about Elixir: it 's making a platform that is almost
| tailor made to web development really accessible to web
| developers. There is an idea outside the ecosystem that
| Elixir is "overkill" for simple apps but that's just not
| true!
|
| For those that find themselves needing to dive into
| Erlang, I too have seen several people describe it as
| "Biting the bullet," and I'm a bit in that camp myself.
| For me it's not Erlang the language that's a problem,
| it's the documentation. This speaks to what you said
| about being from another era. I just do not find it
| enjoyable to read.
|
| You otherwise seem to be saying that modern tooling is
| bad because it doesn't force you to be as diligent a
| programmer. I neither agree nor disagree with this but
| it's a whole other convo.
| di4na wrote:
| So... this is so funny because it feels like you totally
| missed my point.
|
| I did not talk of reading documentation because i am
| literally one of the person you should come to if you
| need something in the doc. I learned how to write elixir
| and erlang by reading their doc.
|
| I also do not use an IDE and am really relucant of them
| because i don't find them useful.
|
| And I am a big defender of prolog. And i am not denying
| the strong architecture and infrastructure of erlang. I
| literally contribute to it.
|
| But what you have not addressed is ... all I mentioned.
| The broken testing libraries. The inability to do the
| right thing nicely because the parse transform are a
| pita. The fact that modules names cannot be aliased,
| generating painful to navigate file structure and names.
| Etc etc.
|
| And look. It can be made better. We have worked on
| documentation and there is more coming. We are getting
| multiline strings. Rebar3 mostly work. Hex can be used
| for erlang projects.
|
| But in order to do things better we need to acknowledge
| the problems. Not just say that the kids don't
| understand. Especially when the person you say that to
| _is actually understanding it pretty well thank you_.
| jacquesm wrote:
| I'm not addressing those things because we are in
| agreement there.
| enraged_camel wrote:
| As a third person reading the conversation, your original
| post came across as dismissive in the sense that you
| referred to Elixir as merely a "gateway drug" and Erlang
| as "the real thing", an opinion that you provided zero
| support for. When someone pointed out some of Erlang's
| significant shortcomings and pain points relative to its
| modern counterpart, your reply came across as somewhat
| condescending, in a "oh yeah? well, back in my day..."
| sort of way, which is how a lot of old people talk down
| to younger people.
| jacquesm wrote:
| It was a response to the top level comment which did the
| same thing in reverse.
|
| Anyway, I'm kind of done with the personal attacks so
| have a nice day.
| enraged_camel wrote:
| No need to play the victim, because I didn't attack you
| personally, merely pointed out why your tone was off-
| putting. /shrug
| pmontra wrote:
| I'm a bit younger than you but not much. I looked at
| Erlang when I learned Elixir because it's handy to be
| able to read the source code of some modules or
| understand some examples. There is usually a 1:1
| transposition between the two languages. That is, they
| are the same language with different syntax and a very
| simple way to translate between them.
|
| That said, Elixir is nicer to read but I was spoiled by
| Ruby. Erlang is nicer than most of the stuff of the 80s
| though.
|
| However I wish the Elixir team had more courage and did
| without all the boilerplate of those handle casts and
| calls in servers. They used macros to do all sort of
| things, so I guess they could use them to bury that
| complexity into the depths of the language and let us use
| real function names to call servers. It would start to
| open a gap between Elixir and Erlang but it would be
| worth it.
| anonyfox wrote:
| While I agree with the sentiment, there are two superpowers
| in the mix for me (pun intended):
|
| 1. Erlang / BEAM itself as the runtim with lots of powerful
| capabilities (what you probably are talking about) - you need
| to know this stuff at some point to fully leverage the
| technology
|
| 2. Elixir the language (+ excellent modern tooling) ontop,
| which really helps to significantly speed up
| productivity/average code quality - I don't like to over-
| reductionist approach here, DX is also an important thing to
| consider instead of the raw foundation
| toolz wrote:
| I've been writing elixir for 8 years. I've never once wanted
| to write erlang, nor have I ever written erlang programs.
| cpursley wrote:
| Same. I've had to call a handful of Erlang functions from
| Elixir over the years but never had to dive deeper than
| that.
| lazysloth wrote:
| Elixir brings so much to the BEAM ecosystem with the improved
| UX from the tooling and libraries. If you want a better
| language on the BEAM go with LFE in my opinion.
| KingMob wrote:
| I'm very curious, what's the LFE experience like?
|
| Are you in the REPL all day? Any major interop issues?
| srik wrote:
| Maintenance patch apparently, good work team. Looks like they
| fixed a few shell issues as well but afaict `ctrl-d` to end
| session hasn't made the cut again uff.
| sph wrote:
| This is a good place as any to ask: I'm an experienced Elixir dev
| so I know my way around Supervisors, GenServers, Registries, etc.
| but I feel there is more to OTP, the myriad of erlang modules for
| fault tolerance, which are not immediately visible unless you
| spend a lot of time reading the erlang docs.
|
| Is there a good book that is focused on advanced OTP? On the
| internals of the BEAM and the hairier parts of the Erlang
| ecosystem? I can only find basic to intermediate introductory
| material. Perhaps I should just spend time reading the erlang
| website back-to-front...
|
| ---
|
| 1: I'm taking a small break from writing a parallel, distributed
| website crawler with homegrown HTTP client. Quite fun, very fast,
| to replace my first, rough prototype written in Rust. The hard
| part is accepting that most HTTP servers on the open Internet are
| hopelessly broken in a million ways.
| abrookewood wrote:
| It would be interesting to hear about a comparison between the
| two - though it sounds like you aren't as skilled in Rust?
| KMag wrote:
| > most HTTP servers on the open Internet are hopelessly broken
| in a million ways.
|
| 20 years ago, picking up OCaml, as an initial project I decided
| to write a password cracker to run against my WiFi router. The
| webserver on my WRT-54G was sending back errors, but Yahoo's
| webserver (more popular than Google at the time) was perfectly
| happy replying correctly to my HTTP client's requests.
|
| I had to break out Ethereal (since renamed Wireshark) to debug
| why Yahoo was fine with my HTTP client but my WRT-54G wasn't.
| It turns out I didn't realize that OCaml character escapes that
| began with zero were still decimal, not octal (unlike C). So, I
| was sending a line terminator of vertical-tab shift-in instead
| of carriage-return line-feed. I guess kudos to whomever wrote
| Yahoo's webserver to make proper sense of such wonky requests,
| though I think it was far too liberal in what it accepted.
| toast0 wrote:
| > I guess kudos to whomever wrote Yahoo's webserver to make
| proper sense of such wonky requests, though I think it was
| far too liberal in what it accepted.
|
| Depending on exactly when, you may have been hitting Yahoo's
| custom http server originally written by David Filo or
| yapache, a patched version of Apache 1.3.
| bosky101 wrote:
| try the second half of https://learnyousomeerlang.com/content
| _susanoo wrote:
| Designing for Scalability with Erlang/OTP by Francesco Cesarini
| and Steve Vinoski
| knewter wrote:
| This one
| rramadass wrote:
| In addition to the other recommendation;
|
| 1) The BEAM book - https://blog.stenmans.org/theBeamBook/
|
| 2) Erlang and OTP in Action by Merritt, Logan and Carlson
| di4na wrote:
| Erlang in Anger https://www.erlang-in-anger.com/
___________________________________________________________________
(page generated 2023-09-21 23:03 UTC)