Cilia

C++ with CamelCase Style
I’d like to have the standard library roughly in the style of Qt. In addition to being my personal favourite, this could also attract many developers currently using Java, JavaScript/TypeScript, Kotlin, Swift.

C++ with Simplified Syntax
Many of C++’s shortcomings stem from the fact that it inherited from C or that backwards compatibility with existing code must be guaranteed. Cilia can call into C++ (and vice versa), but is a separate language, so its syntax does not need to be backwards compatible with C++.

By Example

Cilia is, in my opinion, a collection of quite obvious ideas (and mostly taken from other programming languages, of course):

Introduction

C++ Compatibility / Interoperability

CamelCase Style

Roughly in the style of Qt, Java, JavaScript, TypeScript, Kotlin, Swift.

No Trailing Semicolons

For better readability.
When we are at it, after a quick look at Python, Kotlin, Swift, JavaScript, Julia.

Basic / Arithmetic Types

Variable Declaration

Int i as variable declaration, very much as in C/C++, plus some simplifications/restrictions.

Classes

Functions

func multiplyAdd(Int x, y, Float z) -> Float {
    return x * y  +  z
}

Operators

Branches & Loops

No braces around the condition clause.

Aliasing

Create an alias with using, for:

Type Extension

To add “member like” types, functions/methods, constants (and maybe static variables) to “third party” classes/types.
In case on conflicts, in-class definitions (inside the class) have priority (and a warning is issued).

(Smart) Pointers

Templates

The basic new idea is, to define templates (classes and functions) mostly the same as they are used.

Arrays & ArrayViews

Signed Size

Int (i.e. signed) as type for *.size()

Associative Arrays

Function/Loop Parameter Passing

The basic idea is to have the most efficient/appropriate parameter passing mode as the default, and to give more the intent than the technical realization.
Taken from Cpp2 / Herb Sutter (who extended/generalized the out parameters of C#).

Literals

Comments

Better Readable Keywords

C++ has a “tradition” of complicated names, keywords or reuse of keywords, simply as to avoid compatibility problems with old code, which may have used one of the new keywords as name (of a variable, function, class, or namespace). Cilia can call into C++ (and vice versa), but is a separate language, so its syntax does not need to be backwards compatible.

Safety and Security

is, as, Casting

cilia Standard Library

Standard library in namespace cilia (instead of std to avoid naming conflicts and to allow easy parallel use).

String, Char & CodePoint

Misc