C++Now! 2012 slides

Dmitry Olshansky dmitry.olsh at gmail.com
Thu Jun 7 13:46:37 PDT 2012

On 07.06.2012 20:04, bearophile wrote:
> The slide packs of the conference C++Now! 2012 are available:
> https://github.com/boostcon/cppnow_presentations_2012

Thanks, nice stuff for my brain to chew on.

For one thing the ustring caught my eye. It goes in the right direction 
... for C++.

My first observations on the matter:

1) We all know COW strings are not good... because in C++ you have 
damned shared by default, folks!
That implies using atomic refcounting to be on the safe side, yet in D 
we have thread local by default, and ref-counting/COW is perfectly fine.
(for non-shared types).

2) Immutable strings have performance cost ... like tracking ownership 
and reference counting - unless you have GC by your side, in which case 
it's cheap and legal :)

3) Embeddable strings are not so hard to get in D, since there are 
char[...] arrays (that are even correctly value types!).

4) Small string optimization is kind of cool... for mutable strings 
mostly or as long as your GC sucks. (Small strings kind of prevent 
pooling, you know)

All that being said I could envision FlexString type in D, that does the 
- easily integrates with string
- small string optimization (yay!)
- (maybe) allow any known encoding including legacy (and the list is 
extendable), convert on demand
- has plugable allocator (Andrei where was that nice design ? ;) )
- thus it could live on stack

Unlike c++ folks, we don't need:
- find and etc. to be members of string
- I personally against legacy encoding, let's stick with utf-8/utf-16
- customizable grow rates? (strange problem as I think preallocation is 
your beast friend where it may matter)

As far as small string goes I'd say a lot of containers would benefit of 
such packing, could be nice to generalize the concept.

The end of wish list:

Rope class would be cool, like... real cool. I guess std.container has 
to be package though :)

Dmitry Olshansky

More information about the Digitalmars-d mailing list