The new puppet language implementation that was started with the egrammar needs to be completed to a point where users can use it and we have taken steps toward a faster, cleaner, more maintainable system.
In order to make the most of the new egrammar, we also need to create a new evaluator for the language. This will provide the opportunity to get:
- Better error messages
- Cleaner structure
The evaluator needs to implement the current semantics as much as feasible, although some changes may be made as we learn what some of the semantics truly are.
Done criteria for the new language implementation:
- > 90% of existing modules MUST maintain the same behavior without change
- Portable between MRI 1.8.7, 1.9.3, 2.0.0 and JRuby (latest)
- At least 50% faster in the JRuby implementation that the current evaluator on MRI 1.9.3
- At least the same performance as the the current evaluator on MRI 1.9.3
- Use less than 50% of the memory as the current evaluator (we need to be using less heap in order to scale better on single machine)