-
Notifications
You must be signed in to change notification settings - Fork 2
/
Ü-Sprache todo list.txt
142 lines (130 loc) · 7.02 KB
/
Ü-Sprache todo list.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
Here are some language features for future development of the language itself and its
compiler. Features are (sometimes) grouped and sorted by priority inside each group.
Delete the features from the list as soon as they are implemented.
General:
*) build-in "for" for array types.
*) Disassembly operator - declare variables with initializer as members of value of composite type.
*) More float types ( 16 bit, 128 bit )
*) More integer types ( 256 bit, 512 bit )
*) Constructor initializer for constexpr structs
*) Custom field/class attributes, accessible via typeinfo (for metaprogramming)
*) More advanced macros - more context, elements, string manipulations
*) switch-style operator for expression context
*) thread-local variables
*) A way to construct temporary variable with sequence initializer or other initializer kinds,
(in expression context)
*) "nodiscard" for types and/or functions
*) Function to function pointer assignment with multiple possible functions
*) Provide calling convention in typeinfo for function types
*) Calling convention as arbitrary constant expression (possibility to generate it in compilation time)
*) Multidimensional [] operator - for accessing elements of multidimensional arrays or as overloaded operator
*) Allow unsafe code and raw pointers in constexpr functions and perform additional safety checks during constexpr
execution in order to check no UB or non-determinism is possible, like uninitialized memory usage, pointer
comparison across allocation boundaries, etc.
*) Allow "auto-constexpr" for any function/method with body known
References:
*) Separate reference checking for array elements while accessing via constexpr index
*) Support reference fields of types with references inside
Templates:
*) Default template arguments for short type template form
*) enable_if for type templates
*) Allow template value arguments of some struct types
*) Variable templates
Lambdas:
*) Coroutine lambdas (async, generators)
*) Lambas (or something similar) which create a coroutine object (async function, generator) directly
*) Conversion of lambdas with zero captures into function pointers
Standart library:
*) Improve/fix unordered_map
*) Support types with references inside in some containers (variant, result, unordered_map)
*) Make clear separation between standard library and some intrinsics built-in into the compiler
*) switch-like macro for variant
*) Associative containers - map, set, string_map
*) More algorithms
*) More iterator class methods - like "enumerate" and others
*) Vector drain iterator
*) Reverse iterators for random_access_range, unordered_map, etc.
*) shared_ptr - store single pointer for non-polymorph types
*) Time library - get time functions, timers
*) File library
*) Console input/output library
*) String formatting library
*) Executor for async functions, possible multithreaded
*) More type traits
*) More math functions
*) "result"-like container for reference results
*) Try to optimize random_access_range - use start + end pointers instead of start + size.
This may improve iteration efficiency.
*) Reference-counting immutable string class
*) Small string optimization
*) Support recursive types with usage of "vector" without need to use additional indirection (via "box")
*) String/vector-like containers with limited number of elements (32-bit or 16-bit sizes)
*) Compact vector-like container - with size/capacity stored in allocated memory block
*) Priority heap support
*) Binary search routines
Compiler:
*) Fix possible overflows in numeric literals
*) Investigate optimization possibility - avoid mangling private functions
*) Add option to define some constants in prelude (like preprocessor defenitions in C++).
*) Speed-up references graph code
*) Avoid recursion in VariantLinkedList destructor - it causes stack overflow for long lists
*) Find a way to detect recursive mixins in blocks, type names, expressions
*) Imporve TBAA - use struct path-based TBAA.
*) Pass/return by-value composite values containing more than one scalar inside.
Use some approach, dependent on target architecture, to determine, if type is suitable for passing in registers,
or it would be better to pass it in memory.
*) Add possibility to execute internal LLD directly, bypassing compiler logic itself
*) More options for internal linker
*) More internal linkers spupport - MinGW, MachO, wasm
*) Faster calling convention for non-cross-language functions.
*) Fix possible UB in float->int conversion.
*) Virtual call for final function optimization
*) Do not crash in some cases of code with errors
*) Prevent execution of constexpr functions with errors
*) Inline assembly/module level assembly support
*) Precompiled modules
*) More calling conventions (including platform-dependent)
*) Generate errors about unused function templates
*) Built-in compiler optimization hints ("assume", "likely", "unlikely", etc.)
*) Alloca declaration - allow to specify heap fallback size limit -
even zero (always use heap) or infinity (always use stack)
Interpreter:
*) Support entry point with args and add possibility to provide such args (argc, argv?)
*) Add possibility to optimize code
*) Support math functions
Compiler1:
*) Support 128-bit types in switch operator
QtCreator plugin:
*) Language server features support
Language server:
*) Fix crashes occuring sometimes during editing (possible because of broken code)
*) Reduce memory usage - avoid building unnecessary code, clear unused internal data structures, make mangled names shorter, etc.
*) Occurences search improvement - search not only in document and its imports, but in other opened and non-opened documents
*) Go to definition - pick definition of function, defined in other document (that is not imported directly)
*) Declarations search
*) Document symbols - provide proper ranges (for namespaces, classes, etc), provide exact selection ranges
*) A way to provide configuration (import directories, other compilation options)
*) SignatureHelp - filter suggested functions based on already provided arguments
*) SignatureHelp - return ranges of arguments and active range
*) Improve "go to definition" for templates - fix some cases where templates processing doesn't work
*) Go to definition for non-value names - loop labels, reference tags, etc.
*) Go to definition for macros
*) Complete file names in "import"
*) Backup completion for non-compiled documents
*) Filter-out some symbol kinds in completion, depending on context
*) Sort completed items using some kind of prioroty
*) Links between errors for template/macro errors
*) More unit-tests
*) Create TargetMachine to obtain proper data layout
CPP Header converter:
*) White list of converted symbols
*) Black list of converted symbols
*) Ignore some headers or split result into several files
*) Avoid creating too large files (more than 65535 lines)
*) Support negative constants in defines
*) Add more satisfying defines conversion - where defined value is a constant expression
*) Handle some subset of C++ headers
Documentation:
*) Other languages (not only russian and english)
*) Describe more language details
*) Describe undefined behavior