Experimental features

Karuta has some experimental and premature features to see their feasibility and implementation difficulty. This section describes such features.

They might be remove without notice, probably due to low convenience against high maintenance burden.

Data flow

@DataFlowEntry()
func f(x int) {
}
@ExtFlowStub(name="e")
func f(x int) (int) {
}

Thread member declaration

Threads can be declared as a member object instead of @ThreadEntry().

func f() {
}
thread Kernel.thr1 = f()
run()

External SRAM operations

Memory object represents an address space and can be accessed by read/write method. This assumes 32bit address/data for now.

Memory.read(addr)
Memory.write(addr, data)

Multi dimensional arrays

Multi dimensional array is just an additional view of a normal 1 dimensional array.

shared a int[4][4]

func main() {
  x[1][2]
}