On Saturday, 20 December 2014 at 17:40:06 UTC, Martin Nowak wrote:
Just wondering what the general sentiment is.
I think the main problem is what is there already, which prevents
more sensible performance features from being added and also is
at odds with ensuring correctness.
By priority:
1. A well thought out ownership system to replace GC with
compiler protocols/mechanisms that makes good static analysis
possible and pointers alias free. It should be designed before
"scope" is added and a GC-free runtime should be available.
2. Redesign features and libraries to better support AVX
auto-vectorization as well as explicit AVX programming.
3. Streamlined syntax.
4. Fast compiler-generated allocators with pre-initialization for
class instancing (get rid off emplace). Profiling based.
5. Monotonic integers (get rid of modular arithmetics) with range
constraints.
6. Constraints/logic based programming for templates
7. Either explict virtual or de-virtualizing class functions
(whole program optimization).
8. Clean up the function signatures: ref, in, out, inout and get
rid of call-by-name lazy which has been known to be a bug
inducing feature since Algol60. There is a reason for why other
languages avoid it.
9. Local precise GC with explicit collection for catching cycles
in graph data-structures.
10. An alternative to try-catch exceptions that enforce
error-checking without a performance penalty. E.g. separate error
tracking on returns or "transaction style" exceptions (jump to
root and free all resources on failure).