On 7/9/2014 3:20 AM, Dicebot wrote:
Last time we talked about it during dconf you have mentioned doing necessary
escape analysis for borrowing semantics is too complicated to consider :) Ad if
you don't mean transitive, you shouldn't refer to Rust borrowing terminology as
any ownership type is normally transitive there.
Yes, I mean transitive, and understand what that implies.
5. Precise and Concurrent GC
There's been a lot of work on this, but I don't know where we stand on it.
I have started work on porting the CDGC to D2, have compilable version (that was
easy thanks to earlier Sean work) but updating implementation to match new
druntime and pass tests will take quite some time.
Is CDGC's Luca's earlier work on concurrent GC?
7. "D-Routines" - goroutines for D
Goroutines are the killer feature of Go for a number of sensible people. We
pretty much have this already with fibers, but what is lacking is a scheduler,
which will take some effort, and a "Channel" type, which should be easy.
I'd state it differently: "Marketing fuss about goroutines is the killer feature
of Go" :) It does not have any fundamental advantage over existing actor model
and I doubt it will matter _that_ much.
Much of the froth about Go is dismissed by serious developers, but they nailed
the goroutine thing. It's Go's killer feature.
8. NotNull!T type
For those that want a non-nullable reference type. This should be doable as a
library type.
I don't know where it comes from but non-nullable reference type has ZERO value
if it is not the default one.
Making it the default is impossible for D. However,
class _C { ... }
alias NotNull!_C C;
is entirely practical. It's not unlike the common C practice:
typedef struct S { ... } S;
to bring S out of the tag name space.