Person. Rachit Nigam
Papers
Parameterized Hardware Design with Latency-Abstract Interfaces nigam-2026-parameterized
Unifying Static and Dynamic Intermediate Languages for Accelerator Generators kim-2024-unifying
WatChat: Explaining perplexing programs by debugging mental models chandra-2024-watchat
Stepwise Debugging for Hardware Accelerators berlstein-2023-stepwise
Modular Hardware Design with Timeline Types nigam_amorim_sampson_2023
A compiler infrastructure for accelerator generators nigam-2021-a
Vectorization for digital signal processors via equality saturation vanhattum-2021-vectorization
Predictable accelerator design with time-sensitive affine types nigam-2020-predictable
A Synthesis-Aided Compiler for DSP Architectures (WiP Paper) vanhattum-2020-a
Putting in all the stops: execution control for JavaScript baxter-2018-putting
Fission: Secure Dynamic Code-Splitting for JavaScript guha-2017-fission
Traditional web programming involves the creation of two distinct programs: a client-side front-end, a server-side back-end, and a lot of communications boilerplate. An alternative approach is to use a tierless programming model, where a single program describes the behavior of both the client and the server, and the runtime system takes care of communication. Unfortunately, this usually entails adopting a new language and thus abandoning well-worn libraries and web programming tools.
In this paper, we present our ongoing work on Fission, a platform that uses dynamic tier-splitting and dynamic information flow control to transparently run a single JavaScript program across the client and server. Although static tier-splitting has been studied before, our focus on dynamic approaches presents several new challenges and opportunities. For example, Fission supports characteristic JavaScript features such as eval and sophisticated JavaScript libraries like React. Therefore, programmers can reason about the integrity and confidentiality of information while continuing to use common libraries and programming patterns. Moreover, by unifying the client and server into a single program, Fission allows language-based tools, like type systems and IDEs, to manipulate complete web applications. To illustrate, we use TypeScript to ensure that client-server communication does not go wrong.