This project is a library to use as a superset of the C language.
-Exceptions handling (try catch finally)
try {
...
} catch(TypeName, VarName) {
...
} finally {
...
}
-Classes, interfaces with Java like inheritance
class(Name, BaseClass, Interfaces...)
{
};
virtual(Name)
{
};
end_class(Name, OtherNames...);
-Introspection
Object tmp = new(String, ctorS, "Hello") as(Object); // as only needed when casting from object to interface pointer
isInstanceOf(String, tmp) // => true
dynamic_cast(String, tmp)
const char *method(toString) = getMethod(tmp, "toString");
invoke(void, tmp, "toString");
-Python Yield (co-routine, generators)
yields(int) range(int begin, int end)
{
for (int i = begin; i < end; i++)
yield(i);
yield_break(int);
}
int main()
{
for_yield(i, range(0, 5)) {
printf("%d\n", i);
}
return 0;
}
-C++ life-cycle (RAII)
-C++ rvalue reference
-C#-like syntax for { get; set } (axors)
-private member and public methods
-foreach() keyword using coroutines (yield)
-override of methods
-etc...
-Python's format for strings
-A wrapper for gcc to add extra features and simplify syntax and improve error debuging
-A true ref counting system without loosing RAII
-scope(...) principle from Dlang
-A custom ABI for methods described as follow : type name_'number_of_arguments'(...)
Disclamer: this project relies heavily gcc's extensions to the C language. Most of thoses exist in clang under a different name but not all. Therefore, for now, clang support is not a priority. Once we feel confident in tagging the project in 1.0 then things may change. The main prority is to improve the language and implement the above features.
Thanks.