The #version Directive

### 6.2.5 The #version Directive

As POV-Ray has evolved from version 1.0 through 3.5 we have made every effort to maintain some amount of backwards compatibility with earlier versions. Some old or obsolete features can be handled directly without any special consideration by the user. Some old or obsolete features can no longer be handled at all. However some old features can still be used if you warn POV-Ray that this is an older scene. The `#version` directive can be used to switch version compatibility to different setting several times throughout a scene file. The syntax is:

    VERSION_DIRECTIVE:
        #version FLOAT;

Note: there should be a semi-colon after the float expression in a `#version` directive. This semi-colon is introduced in POV-Ray version 3.1. If omitted, it generates a warning and some macros may not work properly.

Additionally you may use the `Version=`n.n option or the `+MV`n.n switch to establish the initial setting. See "Language Version" for details. For example one feature introduced in 2.0 that was incompatible with any 1.0 scene files is the parsing of float expressions. Using `#version 1.0` turns off expression parsing as well as many warning messages so that nearly all 1.0 files will still work. Naturally the default setting for this option is `#version 3.5`.

Note: Some obsolete or re-designed features are totally unavailable in POV-Ray 3.5 REGARDLES OF THE VERSION SETTING. Details on these features are noted throughout this documentation.

The built-in float identifier `version` contains the current setting of the version compatibility option. See "Built-in Float Identifiers". Together with the built-in `version` identifier the `#version` directive allows you to save and restore the previous values of this compatibility setting. The new `#local` identifier option is especially useful here. For example suppose `mystuff.inc` is in version 1 format. At the top of the file you could put:

     #local Temp_Vers = version;  // Save previous value
     #version 1.0;         // Change to 1.0 mode
     ... // Version 1.0 stuff goes here...
     #version Temp_Vers;      // Restore previous version

Future versions of POV-Ray may not continue to maintain full backward compatibility even with the `#version` directive. We strongly encourage you to phase in 3.5 syntax as much as possible.