Skip to content
A visualizer for transformations of code in Static Single Assignment form based on the Furnace library.
CoffeeScript Ruby
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Furnace X-Ray

Furnace X-Ray is a visualizer for transformations performed on Static Single Assignment form in the Furnace framework.


$ gem install furnace-xray


First, you need to enable instrumentation for the functions you want to observe. Here is a sample snippet:

mod =

fun ='my-function')

# It is important to enable instrumentation before doing anything else
# with the function. Otherwise, the collected data will be invalid.
fun.instrumentaiton =
mod.add fun

# Optionally, notify the instrumentation engine that you have started
# a transformation.
fun.instrumentation.transform_start "Set return type"

# Now, do whatever you want with the function.
fun.return_type = SSA.void_type

# After you have finished transforming functions, fetch the instrumentation
# data and dump it as JSON.
File.write("data.json", JSON.dump(mod.instrumentation))

To view collected data, just point furnace-xray to it:

$ furnace-xray data.json
[2013-01-27 20:05:13] INFO  WEBrick 1.3.1
[2013-01-27 20:05:13] INFO  ruby 1.9.3 (2012-04-20) [x86_64-linux]
== Sinatra/1.3.3 has taken the stage on 4567 for development with backup from WEBrick
[2013-01-27 20:05:13] INFO  WEBrick::HTTPServer#start: pid=28695 port=4567

Now, open your browser Chrome or Chromium and point it to http://localhost:4567.


  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request



Something went wrong with that request. Please try again.