(Why We Need) Large Code Base Change Ripple Management in C++
Niall Douglas
Contents:
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
What I am pitching: a low-level embedded graph database for Boost
The proposed embedded graph database
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
The proposed embedded graph database
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
The proposed embedded graph database
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
It is really more of a “generic data persistence library”
Want more detail?
There is a 25,000 word accompanying position white paper on ArXiv at http://arxiv.org/abs/1405.3323:
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
What does any of this have to do with the price of fish?
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
Let the contention begin!
I am now going to articulate a (motivating) vision for a long term future goal of C++ and Boost which explains why we might absolutely need one of these databases soon
I will then make a series of supporting claims most of which will be contentious (and hence I place them last!)
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
What is this (motivating) vision of the future of C++ and Boost?
A post-C++ 17 goal:
I’d like to see a world where we can write C++ as if everything in the solution (including Python, Lua, PHP etc, including C++ in closely related processes) is header only, no matter the size of the program
(It is a natural result of a complete ABI management solution)
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
Example:
class Foo { virtual void boo(int a); };
A rule in the graph database says that when this type is changed, it should be reflected via std::reflect into a Python binding:
class Foo:
@accepts(int)
@returns(None)
def boo(self, a)
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
Example:
Let’s break Foo’s ABI:
class Foo { virtual void boo(double); };
When you hit compile in C++ for each use of Foo::boo() in Python code you get:
TypeWarning: 'boo' method accepts (float), but was given (int)
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
To clarify:
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
Consequences:
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
Consequences:
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
Why???
Claims (to which I shall return):
Therefore:
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
Why this instead of including more code per-compiland?
Where hardware is going soon
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
Where hardware is going soon
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
My best speculations on effects:
I therefore claim these likely outcomes in the future:
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
My best speculations on effects:
Also:
(Mass production of Graphene or Phosphorine transistors won’t be ready by 2020 at present rates of R&D)
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
Will C++ be that majority choice of systems language?
The present structural revolution
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
Claim:
C++ has been in relative decline for a decade
(with a pause 2009-2011)
The present structural revolution
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
The present structural revolution
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
Possible reasons why C++ is in relative decline
And why should we care?
Why C++ is in relative decline?
Note that C is good at all of the above too, and still remains more popular in open source than C++ for new code
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
Why C++ is in relative decline?
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
Why should we care?
If:
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
Why should we care?
Then, assuming the previous claims are true, a reasonable prediction of the future is:
Is that what we want?
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
Claim:
Since 2011 Boost is in both an absolute & relative decline
The Decline of Boost
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
The Decline of Boost
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
The Decline of Boost
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
Possible reasons why Boost is in decline
And why should we care?
Why Boost is in decline?
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
Why Boost is in decline?
To quote a highly respected engineer from this very conference who said a few days ago:
“Boost used to be about all the stuff you really wanted in the standard. Now Boost looks like all the stuff that wasn’t good enough to get into the standard”
- somebody well known (not me)
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
Why Boost is in decline?
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
Why Boost is in decline?
I personally find that very scary
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
Why Boost is in decline?
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
Why should we care?
Simple answer:
How many of the changes to C++ 11/14 standard over C++ 98/03 originated in Boost?
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
Assertion:
C++ ought to return to trying to become a better systems programming language
Assertion:�We want Boost to continue to lead out the future of C++
(and therefore all systems programming)
So what?
What if one or all of the earlier assertions is false?
What if none of the issues described is a real problem?
What if all this is merely hand wavy nonsense?
An embedded graph database is still extremely useful:
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323
Want more detail?
There is a 25,000 word accompanying position white paper on ArXiv at http://arxiv.org/abs/1405.3323:
Large Code Base Change Ripple Management Niall Douglas Paper: http://arxiv.org/abs/1405.3323