Introducing Cx

We've renamed our language to Cx! We've talked about it on the forum, we've just updated our website, and we'll be updating repositories soon.

Why rename your language?

Because the previous name (C~) was quite bad for search engines, because they all ignore the '~' tilde operator; searching for 'C~' was exactly like searching for 'C' alone. We could have renamed it to 'C' 'tilde' (we discussed it), but we didn't like how it sounded. Another thing is that we had defined the pronunciation of C~ as 'C' 'flow' (to resemble Synflow ^^), but again this was not a very good idea given existing search results for either 'C flow' or 'Cflow'.

What about Cx?

Cx could mean C extended, or C + extra, and in fact it suits well what we're doing. Cx is a language for hardware design, and as such, even if it is C-based (or C-like), it is much more than C. Where C is still stuck with #include (even though there are ongoing efforts to design a true module system), Cx has Java-like packages and imports. VHDL/SystemVerilog have a special kind of modules with constants and functions declarations, this is supported in Cx using 'bundles'.

Another extension over C is the possibility to describe networks and inner tasks in Cx (added in late 2013). I'm now working on supporting a more powerful instantiation model, where we'll be able to parameterize bundles and compile specialized versions of tasks/networks. And we'd like to add dependency injection: the idea is that a task could request a specific task to be injected into it, and all connections between the two would be made automatically.


If you like the new name, and even if you don't, come on our community forum to tell us what you think and discuss!