In my opinion, repudiating structural subtyping was one of the best design decisions of Ceylon. That refactoring is guaranteed to work is a beautiful thing.
This would kind of go against the common belief that you can only have safe, truly parallel code by using 100% immutability or locks.I am pretty sure the common belief is still true. Pony has actors, and I am not familiar with an implementation of actor mailboxes that does not involve locks. I'll guess it still has locks, it just wraps them to make them harder to break. Of course, it is easy to emulate locks (and deadlocks) with actors, unless their actors are really different from what I am used to.
and the fact that it integrates seamlessly with CIt seems that every language made in the last fifteen years runs on either the JVM or the LLVM.
In my opinion, repudiating structural subtyping was one of the best design decisions of Ceylon. That refactoring is guaranteed to work is a beautiful thing.
Having BOTH is the main thing here. I can definitely see how I would like some types, sometimes, to be treated uniformly without changing them.
This would kind of go against the common belief that you can only have safe, truly parallel code by using 100% immutability or locks.I am pretty sure the common belief is still true. Pony has actors, and I am not familiar with an implementation of actor mailboxes that does not involve locks. I'll guess it still has locks, it just wraps them to make them harder to break. Of course, it is easy to emulate locks (and deadlocks) with actors, unless their actors are really different from what I am used to.
Pony actors are really very different to what you and I are used to. I am disappointed you felt appropriate to comment without looking into it first (you claim yourself "I'll guess it still has locks" and that's wrong). I had already linked to the docs, and from there you could get to the paper that describes the model in detail.
and the fact that it integrates seamlessly with CIt seems that every language made in the last fifteen years runs on either the JVM or the LLVM.
On Saturday, May 9, 2015 at 2:49:56 AM UTC-4, Renato Athaydes wrote:In my opinion, repudiating structural subtyping was one of the best design decisions of Ceylon. That refactoring is guaranteed to work is a beautiful thing.
Having BOTH is the main thing here. I can definitely see how I would like some types, sometimes, to be treated uniformly without changing them.
Unfortunately, we cannot have both what you want and what I want, because by having both, refactoring can no longer be guaranteed.
I read that docs paper in totality. This line is pretty suggestive of a locking mechanism in the implementation: "Note that if you have a variable referring to an actor then you can send messages to that actor regardless of what capability that variable is."
From julialang.org: "Julia’s LLVM-based just-in-time (JIT) compiler combined with the language’s design allow it to approach and often match the performance of C. "From Rust on Wikiedia: "The self-hosted compiler uses LLVM as its backend."
You are correct that Nim appears to compile to C++ first.
Specifically, I was intrigued by "guarantees", which seem to allow Pony to guarantee deadlock-, race-condition-free code, and allows safe, if limited, sharing of mutable state in parallel code (sounds fantastic? Please read the paper and try to disprove their claims!).This would kind of go against the common belief that you can only have safe, truly parallel code by using 100% immutability or locks. It's a big deal, in my view.