C standard proposal for extensions

The C language is now 45 years old. Yet, it's obvious that it will survive until it's 100 years or even older. This is why in the future, there will be standards C2X, C3X, C4X, etc.

Here are some proposals for C extensions for the standards

C2X Standard proposals:

Unification of current data type names:
Synonyms for "char" and "int8_t":
"int8"

Synonyms for "unsigned char" and "uint8_t":
"uint8" and "byte"

Synonyms for "short" and "int16_t"
"int16"

Synonyms for "unsigned short" and "uint16_t":
"uint16"

Synonyms for "int" and "int32_t":
"int32"

Synonyms for "unsigned int" and "uint32_t"
"uint32" and"dword"

Synonyms for "long long" and "uint64_t":
"uint64" and "qword"

Synonym for "float": float32
Synonym for "double": float64
Synonym for "long double": float80


Add new data types
When C was developed, it gave full support of processor data types but now, that isn't the case. Now we have 128 and 256 integers and we have multi-data vectors of size 128, 256, 512, 1024. They MUST be in a new iteration of C.


Add SIMD operations for vectors


Encapsulation of functions in structures (Exactly as in C++)


Protected data members in structures (Exactly as in C++)


Reference type (Exactly as in C++)


Windows management library
create window:
handle=winopen(parent, name, xleft, ytop, xsize, ysize, borderstyle)
winclose(handle)
setMessageProc(handle, MsgProgName);
MsgProgName(handle, msgtype, extrainfo)
winpixel(handle, x, y, r, g, b)
winline(handle, x1, y1, x2, y2, r, g, b)
wincircle(handle, x, y, radius, r, g, b)
winclean(handle, rectangle)
winbackground(handle, style, r, g, b)
winsetfont(handle, fontstruc)
wintext(handle, x, y, string)
winrectupdate(handle, rect)
wingethandle() - get handle of current window


Floating point types for 128 and 256 bit
float128
float256


Elliptic and inverse functions
u = ellintegral(fi, k)
fi = ellamplitude(u, k)
jacobi sin, cos, deltas:
y = jsn(x, k)
y = jcn(x, k)
y = jdn(x, k)


String data type
struchar or strnint8
strushort or strnint16

operatorop newstr(length)
substring selection [n:m]
string concatenation: str1+str2
string duplication: str^k
string comparison: ==, !=, >, <, >=, <=
length of the string: length(str)
Read/write strings:


Fraction data types and Operations
fraction32
fraction64
fraction128
fraction256
Operations:
+, -, *, /


Vector data types and operators
Here are integers and floating point data types:
Examples:
vector int8 v[100]
vector int32 v4[100]
vector float ff[200]
Declaration of vectors which use saturated arithmetics: use svector
Examples of operations:
v3 = v1+v2;
v3 =v1*v2;
v3 = v1/v2;
For integers:
v3 = v1 % v2
Scalar multiplication: **


Matrix data types and operators
Here are integers and floating point data types:
Examples:
matrix int8 m[100][200]
matrix int32 m4[100][200]
matrix float fm[200][200]
Declaration of matrices which use saturated arithmetics: use smatrix
Matrix multiplication: **
Matrix division: \\
Notation for eigenvalue calculations? Notation for eigenvector calculations?


And more to come...

C3X possible ideas:

In development...