Processing can be performed asynchronously and in parallel - execution can fork into several paths and then several execution paths can merge or be joined.
AmurJS features flexible license management, which enables fine-grained value exchange between users and extension providers.
AmurJS has a concise graphical notation with 6 vertex and 4 edge types. Each notation element can be specialized by assigning an implementation_type, which provides unlimited extensibility opportunities.
Model elements and implementation types are configured by setting properties.
Each notation element is translated into a runtime component. The hierarchy of generated components is wrapped into a factory function, which takes a facade and configuration objects as arguments and returns a promise fulfilled upon the start of all components with the facade object with injected functions and properties. The factory function can be exposed to module loaders such as RequireJS using a skeleton file.