This roadmap describes features that we plan to add to the Cx language.

Better loops

In a nutshell, remove the implicit "fence" that is inserted at the beginning of "for" and "while" loops. Add a "do .. while" loop.

Better instantiation

We will extend the instantiation to allow specialization of bundles, so you can write generic designs all the way.

Structures

Support structures:
typedef struct {
  u6 opcode;
  u5 rd, rs1, rs2;
} instr_t;

void loop() {
  var inst = {rd: 18, rs1: 3, opcode: ADD, rs2: 4};
  u32 encoded = (u32) inst; // interpret as 32-bit unsigned int
}

Dependency injection

Support injection of an entity into another entity. The goal is to make reuse much easier and simple, without having to explicitly connect ports together. Instead, an entity would require an entity it depends on. It would be possible to override entities, so that for instance if a 'Configuration' entity require a 'bus', you could specify at instantiation time the type of bus you wish to use.

Automatic pipelining

Pretty self-explanatory, this would be useful for signal processing (loop-and-array) code. Pipelining would have to be explicitly requested in the properties:
properties {
  implementation: {
    pipeline: 5 // number of steps
  }
}