Live data from Hacker News

Elixir is still safe

paraxial.io

11–20 of 38 posts

Re: Elixir is still safe

#11
post #8

Without stepping on anyone’s toes, I think we can agree that “safety” could be broken down a bit. Memory safety, thread safety, fine… but there’s a whole forest past those trees. Is it a safety feature to type-check regular expressions using dependent types? Is Python a security vulnerability because the performance can be unpredictable? I don’t know. Rust, for that matter, doesn’t protect you from running out of mem…

> I just don’t see how it’s so flat.

Because people like making wild and provocative claims to motivate writing a paper for which the conclusion was already decided.

Anyone who has used, I dunno, any of programming languages that are being discussed has a more nuanced take, and isn't spending time trying to force all things into Box A or Box B.

Elixir/Erlang has a pleasant concurrency model. It does some things well, it does other things less well. It eliminates a big class of bugs, and yet you can still write bugs in Elixir.

These sorts of papers are a waste of space on the internet imo.

Re: Elixir is still safe

#12
post #11
post #8

Without stepping on anyone’s toes, I think we can agree that “safety” could be broken down a bit. Memory safety, thread safety, fine… but there’s a whole forest past those trees. Is it a safety feature to type-check regular expressions using dependent types? Is Python a security vulnerability because the performance can be unpredictable? I don’t know. Rust, for that matter, doesn’t protect you from running out of mem…

> I just don’t see how it’s so flat. Because people like making wild and provocative claims to motivate writing a paper for which the conclusion was already decided. Anyone who has used, I dunno, any of programming languages that are being discussed has a more nuanced take, and isn't spending time trying to force all things into Box A or Box B. Elixir/Erlang has a pleasant concurrency model. It does some things well,…

“What is sending a message to my process and making it crash?!”

“My synchronous reply timed out, so why I am I getting a message after the timeout?!”

“Why did deleting my build directory fix the compile error?!”

“How do I keep my app from crashing when my supervisor crashed too many times in a given timeframe?!”

So many adventures to be had.

Re: Elixir is still safe

#13
post #6

Earlier quoted context omitted.

The original article didn't disprove the existence of vulnerabilities though. Is "Concurrency is hard and I think this concurrency model is easier" "proof"? Did you read either article?

From the original "Elixir is Safe" article: > 3. “Shared nothing” concurrency > Item 3 is the killer one for safety. Like two people, two processes cannot share memory; they can only communicate by sending each other messages. This makes impossible an entire class of thread safety issues. "Elixir is Safer" might have been a better phrasing, but you're misrepresenting the contents of the article if you're claiming tha…

Is static typing "safe", and have I demonstrated that simply by publishing a blog about bugs in dynamically typed applications?

Re: Elixir is still safe

#14
post #6

Earlier quoted context omitted.

The original article didn't disprove the existence of vulnerabilities though. Is "Concurrency is hard and I think this concurrency model is easier" "proof"? Did you read either article?

From the original "Elixir is Safe" article: > 3. “Shared nothing” concurrency > Item 3 is the killer one for safety. Like two people, two processes cannot share memory; they can only communicate by sending each other messages. This makes impossible an entire class of thread safety issues. "Elixir is Safer" might have been a better phrasing, but you're misrepresenting the contents of the article if you're claiming tha…

I thought binaries (>= 64 bytes) are one of the exceptions to "share nothing" model? They are still immutable though.

Also, ETS, which shares data across processes, and may allow multiple writers. Granted, you have to explicitly opt-in for that.

And I am assuming we're not considering NIFs, though Rust NIFs makes a lot of sense here.

Re: Elixir is still safe

#15
post #11

Earlier quoted context omitted.

> I just don’t see how it’s so flat. Because people like making wild and provocative claims to motivate writing a paper for which the conclusion was already decided. Anyone who has used, I dunno, any of programming languages that are being discussed has a more nuanced take, and isn't spending time trying to force all things into Box A or Box B. Elixir/Erlang has a pleasant concurrency model. It does some things well,…

“What is sending a message to my process and making it crash?!” “My synchronous reply timed out, so why I am I getting a message after the timeout?!” “Why did deleting my build directory fix the compile error?!” “How do I keep my app from crashing when my supervisor crashed too many times in a given timeframe?!” So many adventures to be had.

Plenty. But I'd take those trivial issues over a blob of microservices any day of the week.

In any case, the answer continues to be "it depends". But people will continue to look for "one weird trick" solutions to every problem.

Re: Elixir is still safe

#16
post #15

Earlier quoted context omitted.

“What is sending a message to my process and making it crash?!” “My synchronous reply timed out, so why I am I getting a message after the timeout?!” “Why did deleting my build directory fix the compile error?!” “How do I keep my app from crashing when my supervisor crashed too many times in a given timeframe?!” So many adventures to be had.

Plenty. But I'd take those trivial issues over a blob of microservices any day of the week. In any case, the answer continues to be "it depends". But people will continue to look for "one weird trick" solutions to every problem.

It's fun an games until you have to debug an Erlang RPC call that is timing out w/o log messages in a blob of Elixir micro services.

Re: Elixir is still safe

#17
post #8

Without stepping on anyone’s toes, I think we can agree that “safety” could be broken down a bit. Memory safety, thread safety, fine… but there’s a whole forest past those trees. Is it a safety feature to type-check regular expressions using dependent types? Is Python a security vulnerability because the performance can be unpredictable? I don’t know. Rust, for that matter, doesn’t protect you from running out of mem…

[deleted]

Re: Elixir is still safe

#18
post #6

Earlier quoted context omitted.

The original article didn't disprove the existence of vulnerabilities though. Is "Concurrency is hard and I think this concurrency model is easier" "proof"? Did you read either article?

From the original "Elixir is Safe" article: > 3. “Shared nothing” concurrency > Item 3 is the killer one for safety. Like two people, two processes cannot share memory; they can only communicate by sending each other messages. This makes impossible an entire class of thread safety issues. "Elixir is Safer" might have been a better phrasing, but you're misrepresenting the contents of the article if you're claiming tha…

Like the students, I assume that the GP hasn't read the original article - which is very clear about what forms of safety it is discussing.

Re: Elixir is still safe

#19
post #8

Without stepping on anyone’s toes, I think we can agree that “safety” could be broken down a bit. Memory safety, thread safety, fine… but there’s a whole forest past those trees. Is it a safety feature to type-check regular expressions using dependent types? Is Python a security vulnerability because the performance can be unpredictable? I don’t know. Rust, for that matter, doesn’t protect you from running out of mem…

Safety means no undefined behavaior. It does not mean free of bugs, or security issues, or free from crashes. It simply means every operation has well specified semantics.

Re: Elixir is still safe

#20
post #19
post #8

Without stepping on anyone’s toes, I think we can agree that “safety” could be broken down a bit. Memory safety, thread safety, fine… but there’s a whole forest past those trees. Is it a safety feature to type-check regular expressions using dependent types? Is Python a security vulnerability because the performance can be unpredictable? I don’t know. Rust, for that matter, doesn’t protect you from running out of mem…

Safety means no undefined behavaior. It does not mean free of bugs, or security issues, or free from crashes. It simply means every operation has well specified semantics.

>It does not mean free of bugs

What if there is a bug in those well-specified semantics?

Post reply on HN