On Tuesday, 6 March 2018 at 10:02:10 UTC, Radu wrote:
On Monday, 5 March 2018 at 10:57:35 UTC, Jonathan M Davis wrote:
Here's something I wrote up on const:
http://jmdavisprog.com/articles/why-const-sucks.html
I suppose that it's not exactly the most positive article, but
I feel that it's accurate.
- Jonathan M Davis
Spot on article, and touches some of my pain points when
working with const/immutable structs.
Recently I tried to create a ref-counted immutable struct, oh
boi...
This later use case is of tremendous value for safe concurrent
code that's @nogc. Unfortunately I couldn't find a way to make
it work efficiently and in the same time not look like a
disgusting hack.
I suspect a possible solution is to allow immutable(const)
postblit overloads as well as immutable dtors that will act as
an escape hatch for unsafe work and in the same time provide
hints that you are operating on an immutable(const) this.
AFAIK this is a solved problem. Dicebot (not sure if he's still
around) had initially proposed it: store the reference count just
before the immutable piece of memory.
| ref count | object/struct |
In fact, Andrei added a new allocator to
std.experimental.allocator to support this:
https://dlang.org/library/std/experimental/allocator/building_blocks/affix_allocator/affix_allocator.prefix.html