This blog post is the beginning of a series that explores the use of FlowStorm, a Clojure omniscient and time travel debugger, to reason about Clojure systems. It provides an overview of FlowStorm and delves into the internals of the ClojureScript compiler. The post explains how the compiler takes a Clojure form as input, parses it into an abstract syntax tree (AST), and emits JavaScript code. FlowStorm is described as a tool for visualizing and understanding the execution of Clojure programs, with features that go beyond traditional debuggers. The post also provides instructions for setting up FlowStorm with the ClojureScript compiler. The author highlights the interactivity and immutability aspects of Clojure programming, which make it easier to understand and reason about systems. FlowStorm’s recording and visualization capabilities are also mentioned as valuable tools for understanding program execution. The post includes screenshots and step-by-step instructions for using FlowStorm to explore the different phases of the ClojureScript compilation process. Overall, the post provides a detailed introduction to FlowStorm and its capabilities for understanding and debugging Clojure systems.
https://jpmonettas.github.io/my-blog/public/compilers-with-flow-storm.html