I just wanted to put in writing a decision that I just made about how to
accept changes to the puppet grammar and interpreter. This was prompted by
two pull requests by Erik Dalen to bring the puppet parser in compliance
with the language reference on the Puppet Labs website (
https://github.com/puppetlabs/puppet/pull/1573 and
https://github.com/puppetlabs/puppet/pull/1574).

The language reference is meant to be a guide for how to write puppet
manifests. It does not act as a complete language specification and as such
my at times prescribe that things are not allowed which the puppet parser
will actually accept. At the moment there is no external specification of
the puppet language beyond the implementation that lives in puppet.

We can accept changes to the language implementation that are:

  a) backwards compatible - anything that would have parsed before the
change will parse in the same manner after the change, same with semantics
  b) fix parse errors

Beyond that we probably cannot accept changes in the language.

How do we move forward?

The new parser that has been written for the prototype to add iteration to
the language could act as a starting point to have an external
specification of the language. It would take great pains for it to be bug
for bug compatible with the existing grammar, and it probably would not be
worth it. We will need to start working towards having an external and
versioned language specification that the new parser implements. The new
specification should try to stay mostly (say > 90%) compatible with the
existing language, but we should consider trying to clean up the edges like
what Erik was doing. The language reference was written in a manner that
should provide some good guidance as to what might be good to keep in the
specified language.

-- 
Andrew Parker
[email protected]
Freenode: zaphod42
Twitter: @aparker42
Software Developer

*Join us at PuppetConf 2013, August 22-23 in San Francisco - *
http://bit.ly/pupconf13*
**The first 150 tickets sold will be available at a 35% discount - register
now!*

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/puppet-dev?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to