Crates in the flow project

The flow project is split into a number of different crates for a number of reasons:

  • proc macros need to be in their own crate
  • sharing of structures and code across compiler and runner crates
  • desire to separate core functionality in libraries from CLI binaries and enable UI applications using only the libraries
  • provide CLI versions of compiler and runner
  • avoid cyclic dependencies between parts
  • allow to compile optionally without some features, not using code in a crate
  • separate library implementation from compiler and runner

The following sections provide a brief description of the crates in the project.