How Vuo uses LLVM and other open source projects

Hi! I'm Jaymie Strecker, one of Vuo's developers. Last week, Steve Mokris and I had the privilege of presenting a poster about Vuo at the LLVM Developers' Meeting.

At the meeting, we got to chat with the LLVM folks about the LLVM compiler infrastructure and how it's used in Vuo. The people who crowded around our poster had some great questions, such as: "What makes Vuo different from other visual programming languages?" (For starters, all compositions can run as native executables... thanks to LLVM.) "Does Vuo scale for very large compositions?" (LLVM's optimization passes help with that. Plus you'll be able to split compositions into parts small enough for you (and Vuo) to manage.) Thanks so much to the people who gave feedback on Vuo and taught us more about LLVM.

If you'd like a behind-the-scenes peek at how Vuo is implemented, I can tell you about a few more open-source projects that help Vuo do its job:

  • Qt, a cross-platform GUI framework, is the basis for Vuo's editor. It also underlies Vuo's automated tests.
  • ØMQ helps Vuo's editor communicate with a running composition. The editor can send commands to the composition ("Pause!" "Stop!"), and the composition can send debugging information to the editor ("The Recur node just emitted an event!").
  • libdispatch helps Vuo run compositions as fast as possible by using multithreading. When Vuo sees that two or more nodes can be run at the same time (because they don't depend on each other), Vuo uses libdispatch to run them concurrently.
  • Graphviz is a tool for drawing diagrams with nodes and edges (like Vuo compositions). Vuo uses the Graphviz file format, with a few additions, to store compositions. Graphviz helps Vuo lay out your nodes and cables neatly on the canvas.

As we're learning how to use these open-source projects, we've been asking questions, reporting bugs, and sharing our experience. (You can see some of that experience on our developers' blog at fdiv.net. My latest post, "LLVM generates code that generates code", praises a feature of LLVM that has accelerated the development of Vuo.)

As you're learning how to use Vuo in a few months, we hope you'll similarly share your questions, experiences (and, yes, bug reports) with us and the Vuo community.

– Jaymie