🎉 Welcome to our new website! We’re working on improvements, but let us know what you think.

Ion Fusion is a programmable programming language for working with JSON and Amazon Ion data. Its goal is to simplify data processing by eliminating impedance mismatch and enabling domain-specific custom syntax. Among its interesting characteristics:

  • Fusion source code is Ion data, and the Fusion type system is a superset of the Ion data model. This reduces glue code such as object binding, and eliminates lossy type conversions.
  • While Fusion facilitates general-purpose use, you can use syntactic abstractions to create custom syntax forms and Domain-Specific Languages, even those that are not as general as the core.

Linguistically, Fusion is a dialect of Racket, adapted to the Ion notation. Here’s a quick sample:

// Read each Ion value from stdin into local var `value`
(for [(value (in_port))]
  // ...and write its marketplace_id field to stdout
  (writeln (. value "marketplace_id")))

To try out the language, check out the fusion CLI tutorial. The CLI enables running scripts and pipelining data, and has an interactive console for experimentation. You can use the fusion-java library to embed the runtime into Java applications and services, with support for sandboxing untrusted code.

Ion Fusion has empowered production services inside Amazon for over a decade, driving numerous data processing, workflow management, and analytics systems. It is now an independent Apache-licensed project led by current and former Amazonians.

⚠️ This project is under active development, preparing for a 1.0 open source release. The language itself is largely stable, but expect significant changes to Java APIs and packaging as we renovate everything for public development and use.

Featured Posts

Welcome, Fusioneers!

1 minute read

Greetings! Whether you’re a long-time Fusioneer or a curious guest, we’re excited that you’re visiting the freshly-minted Ion Fusion website.

First Contact

less than 1 minute read

We’d love to hear your thoughts on how we can improve our public content.