POV-Ray : Newsgroups : povray.programming : POV-Ray Patch Identification Proposal : POV-Ray Patch Identification Proposal Server Time
24 Apr 2024 19:03:26 EDT (-0400)
  POV-Ray Patch Identification Proposal  
From: clipka
Date: 19 Jul 2013 14:34:17
Message: <51e986a9@news.povray.org>
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 FLOAT;
     #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:

     patch(STRING)

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 
"megapov-bar").

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 
(e.g. "megapov").

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.

Comments, anyone?

(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

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.