## 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...