Imba is primarily developed for web development, although it can be used to write general purpose NodeJS programs. This is enabled by the following two features:
- First-class tags - declarative syntax for creating and updating DOM nodes similar to web components.
- Memoized DOM - a built-in high-performance DOM reconciler.
The language itself also offers interesting features that makes programming a lot more fun:
- Block expressions -
forloops are expressions that can be assigned and passed as arguments.
- Implicit return - last expression in a method is its return value.
- Significant whitespace - using whitespace to delimit blocks reduces the amount of punctuation and improves readability.
- Multi-line strings and regexps - improves code readability by not requiring programmers to do crazy things just to do something as obvious as this.
Short history of the project¶
Imba was created around 2010 by Sindre Aarsaether (@somebee) as a private project to port Ruby to browsers. As time progressed, the project morphed into an effort to create an optimal platform for end-to-end end web development.
Even though the speed was not one of the original goals, the implementation of the Imba's DOM reconciler, also known as 'Memoized DOM', has stood the test of time, and is, to date, one of the fastest DOM reconciler designs on the market. Many of today's high-performance designs use the same or similar techniques.
About the name¶
The name Imba comes from the term 'imba' commonly used in the gaming world to point to a character or an item that is overpowered and therefore causes the gameplay to become imbalanced.
console.log, and so on).
You can read more about the differences in by reading the Cheats heading in each section.