As history has shown, features implemented in one unofficial POV-Ray
branch may wind up in oners, or even in later versions of POV-Ray
proper; this may make it difficult for scene authors to have their
scenes automatically detect whether it will render ok on a given
unofficial POV-Ray version.
I hereby suggest the following POV-Ray language extension to be adopted
by future unofficial POV-Ray versions:
(1) The #version directive:
Branches adhering to this proposal shall accept either of the following
#version directive formats:
#version unofficial patch FLOAT;
where in both cases the FLOAT specifies the official POV-Ray version the
branch is based upon, rather than the version of the branch itself.
(2) The version variable:
Branches adhering to this proposal shall default the version variable to
the official POV-Ray version the branch is based upon, rather than the
version of the branch itself.
(3) The #patch directive:
Branches adhering to this proposal shall support the following directive:
#patch STRING FLOAT;
where STRING is the name of a patch required by the scene file, and
FLOAT is the minimal version of the patch required. A parse error shall
be generated if the branch does not implement the specified patch at the
specified or a higher version, and a parse warning shall be generated if
the branch implements the specified patch at a higher major version
(integer part of the version number).
The STRING parameter is optional; if omitted, the directive shall apply
to the version of this proposal itself.
(4) The patch() function:
Branches adhering to this proposal shall support the following function:
where STRING is the name of a patch; the function shall return the
version number of the specified patch as implemented by the branch.
Again, the STRING parameter is optional, and if omitted the function
shall apply to the version of this proposal itself.
(5) Versioning of this proposal:
This proposal in its current form shall be considered version 1.00,
provided it finds general acceptance without change.
The authority to define new revisions of this proposal shall lie wih the
POV-Ray development team; the intention is to define such revisions
based on discussions among the community of people developing unofficial
extensions to POV-Ray.
(6) Naming of patches:
To avoid naming conflicts of similar but incompatible patches, all patch
names shall include a prefix identifying either the author, or the
branch as part of which it is maintained (e.g. "clipka-foo" or
If a patch is modified by a third party, it shall be reported as a
different patch, while the original patch should also be reported as
supported provided that backward compatibility is given.
To allow for identifying a particular branch and its version, it is
suggested that a branch defines a patch named after the branch itself
Patch names shall be case-insensitive.
I'm currently working on a 3.7 branch which will implement the above
(among a lot of other fancy stuff of course, but it double-features as a
prototype for a generic "branching framework"); adapting the approach to
other branches should be easy enough.
(Note that this proposal isn't intended to be a catch-all, but rather a
solid foundation on which future revisions might add more sophisticated
patch management features as required.)
Post a reply to this message