pulsar-ir 0.0.1

A high-level programming language for building hardware accelerators
Documentation
# pulsar

![CI](https://github.com/ethanuppal/pulsar/actions/workflows/ci.yaml/badge.svg)
[![CodeFactor](https://www.codefactor.io/repository/github/ethanuppal/pulsar/badge)](https://www.codefactor.io/repository/github/ethanuppal/pulsar)

Pulsar is a high-level programming language for building hardware accelerators.
Currently, I am working toward implementing a [calyx] backend.
It is currently a very vanilla language because I have not yet determined how it should specialize (but all ADLs in practice are DSLs).

The syntax is a very blatant clone of Swift's with some modifications, and it's also very much a WIP.
```swift
func increment(x: Int) -> Int {
    return x + 1
}
func main() {
    let input = [1, 2, 3, 4]
    let output = map<1>(increment, input)
}
```

The compiler is tested e2e via [verilator], a hardware simulation tool.

## Crates

- [`pulsar-lang`]https://crates.io/crates/pulsar-lang: Compiler driver
- [`pulsar-utils`]https://crates.io/crates/pulsar-utils: Utilities for the `pulsar-*` crates
- [`pulsar-frontend`]https://crates.io/crates/pulsar-frontend: Parser/AST and type checking
- [`pulsar-ir`]https://crates.io/crates/pulsar-ir: Structured and unstructured IR
- [`pulsar-backend`]https://crates.io/crates/pulsar-backend: Target emission, e.g., Verilog (via [calyx])

[calyx]: http://calyxir.org
[verilator]: https://www.veripool.org/verilator/