I don't yet know how to efficiently answer questions about the Swift language, so forgive if the answer is obvious.
Erlang/Elixir have a fault-intolerance library built on top of their version of actors. https://en.wikipedia.org/wiki/Open_Telecom_Platform It involves "supervision trees”, where supervisors control the lifespans of actors they supervise, react to unexpected failures, etc.
It is incredibly tempting to interpret and implement ActivityPubs concept of an Actor as an Elixir GenServer/actor. Mailboxes and message passing.
If I was building it out as an in-memory system this could be fun but for typical needs it is conflating runtime characteristics with the outward protocol.
Lining those up would make the system simple to reason about in particular ways. I might do the experiment.
TIL that in #Erlang, _ can be used in type specifications and has the same meaning as term() or any(). I love this kind of discovery because it makes total sense and is consistent with pattern matching. Erlang is one of these rare sane languages.
@nixCraft I got a call yesterday asking for help on a system I had deployed on a TV operator 11 years ago. It was a hardware glitch. Unfortunately they rebooted the operating system: 3588 days of uptime. The software in question had been restarted in 2015.
I'm a software developer working in the #video streaming space. Specifically, I've been working on Media over QUIC (MoQ), #WebRTC, and other "ultra low latency" technologies. I write #PureScript, #Erlang, and #Rust at work these days.
I'm still living the #RemoteLife and now work for a distributed London-based company from the woods of #Michigan.
In my free time I enjoy #hiking and playing games with my family, and playing with radio waves.
If #Erlang wasn't dying out, I'd want to learn more and seek work. The world's largest telephony over ATM network ran on Erlang and had 9 nines (!) of availability. That's 31 milliseconds of downtime per year.
Part of why it was so reliable is that it's a language which basically makes you write #microservices for all functionality, but with much of the infrastructure support built in. What an amazing technology.
Hacked some initial #Erlang mode for the #Lem editor yesterday evening.
I have an Erlang shell but did not manage to connect to LSP/ELP, it hangs while initializing. Language server support is also still somewhat minimal in Lem.
@frescosecco tangential, but wasn't there a project long ago to make an Emacs clone in Erlang? SWI-Prolog has a barebones Emacs clone! An Erlang Emacs makes a lot of sense when considering that Emacs became more usable after it got async support. If parantheses matter, there are multiple Lisps on the BEAM.
Previous Re-post on mailbox typing: Really interesting. Akka actors, as an example, can have typed mailboxes and even custom mailboxes.
But I'm not sure that's relevant here; the research goal is to explore mailbox typing as an approach to find concurrency errors. Somewhere in the middle between Dialyzer (no concurrency) and Concuerror (concurrency errors only).
What is the use case for #elixir / #erlang I have been reading more into functional programming languages, and one that pops up a lot is Elixir.
As far as I understand, the great thing about these is that they run on the Erlang BEAM VM, which seems to be very suitable to distributed computations right? Does this mean that the BEAM VM could run on multiple machines? If I understand correctly, Elixir/Erlang would not be that great if I just want to write simple CLI tools, but would excel if I was writing for example a Data streaming platform or the backend for some app right?
How lightweight are #swift actors compared to #erlang processes? For Erlang/Elixir, a few hundred thousand simultaneous processes is just another day at the office. My memory is that, say, Clojure actors are rather more expensive.
Various thoughts on too many programming languages, for no discernible reason.
I have been interested in Go since it's very initial release, but their dependence on Google is uncharming to say the least. I still haven't made up my mind on its GC, but its definitely better than most.
I used to do some ML work in .NET and if it wasn't dependent on Microsoft it would be a heavy contender for a great language, but it has far too many Microsoft-isms to ever really go much farther.
Rust is great, I enjoy beating my head against a brick wall battling with the compiler, and their safety is great, but overly complicated and feature-creep is a real problem on that entire project. I do a lot of work these days in Rust, for better (mostly) or worse (mostly-ish).
C is my bread-and-butter, as is Javascript for quick prototyping.
Elixir is great, but Erlang is unwieldy, the community is growing, but not fast enough - and I just can't get my mind to enjoy the syntax no matter how nice it is.
D is a lot of fun, but their GC can be slow at times, and the community is very small and packages are often broken and unmaintained.
Python was my first true love, but I really can't stand the whitespace, again love the language, hate the syntax.
Zig is fun, but just that. Fast, nimble, but early days, a bit confusing, could replace my insistence on C for core projects, but again, early days. I love to use them as a compiler for C, much faster than the defaults on any of the others.
Odin is one I love to keep an eye on, I wish I could get behind using it for more things. When I first took notice ~4 years ago the documentation was a bit scattered, but it looks much better now. The developer behind it is incredibly cool, could be seen as the next Dennis Ritchie imo. Runes are dope. The syntax is by far my favourite.
Julia, I love Julia, but performance last I tested was a bit of a miss, and by miss, it required a decent chunk of compute for basics, but when you gave it the system to throttle, it would be insanely productive to write in. Javascript is something that I prototype even syscalls in, but Julia is just the same but much better and more productive (and less strange) in many regards. I am really hoping this takes over in the ML/Data world and just eats Python alive. I've heard there has been major work in the perf department, but I haven't had reason to try it out lately.
Ada, memory safety before Rust! Great language, especially for critical applications, decades of baggage (or wisdom), slow moving language, insanely stable, compilers are all mostly proprietary, job market is small, but well paid, great for robotics, defense, and space industry types, but the syntax is... rough. Someone should make a meta-language on top of Ada like Zig/Nim/Odin do for C, or Elixir does for Erlang.
The others: Carbon, haven't tried; Nim, prefer when they were "Nimrod" (cue Green Day), decent but not my style; Crystal, seems cool, but not for me; Scala, great FP language, but JVM; Haskell, I'm not a mathematician, but my mathematician friends love it. I see why, but not my thing as much as I love functional languages. I'll try it again, eventually. I did not learn Haskell a great good.
I tend to jump from language to language, trying everything out, it's fun and a total timesuck.
@marcuse1w@macleod If you like #haskell, #purescript is an option. With #purerl there is also a stable erlang backend. Or #gleamlang I find very exciting in the erlang world (erlang and Javascript backend). Otherwise you might also like #roclang (native and wasm backend) if you are generally into ML languages. I also think #erlang is an extremely nice language. I've never understood what many people have against the syntax. I find it extremely simple and beautiful. Well, I also like #prolog 😉