On Monday, 11 May 2015 at 10:54:10 UTC, Jonathan M Davis wrote:
doing the allocation, but I don't see how we can get rid of the
possibility of an object being allocated on one thread and
deallocated on another without making major changes to shared -
and std.concurrency isn't going to work very well if we can't
cast to and from shared or immutable to pass objects across
threads - not unless we add some way to indicate in the type
system that a variable is being passed across threads.
Behavioural typing is an active research field so if you are to
statically prove that a specific program configuration at runtime
causes a type to be unshared/immutable you are outside the
language design comfort zone. Which I am very much in favour of
;-).
More on behavioural typing:
http://forum.dlang.org/thread/ovoarcbexpvrrceys...@forum.dlang.org
Of course, the sensible thing to do is to have "behavioural
typing light". E.g. to allow passage through gateways (with
rather limiting constraints which allows static verification).