Pulsar is a hobby PL, which, for fun, I am implementing both software and hardware backends. Currently, I am working toward implementing such a hardware backend via the calyx infrastructure.
The WIP syntax is a very blatant clone of Swift's with some modifications.
func increment(x: Int) -> Int {
return x + 1
}
func main() {
let input = [1, 2, 3, 4]
let output = map<1>(increment, input)
}
The calyx backend is tested e2e via verilator, a hardware simulation tool.
pulsar-lang
: Compiler driverpulsar-utils
: Utilities for thepulsar-*
cratespulsar-frontend
: Parser/AST and type checkingpulsar-ir
: Structured and unstructured IRpulsar-backend
: Target emission, e.g., Verilog (via calyx)