Thread overview
Feature request: global versions
Mar 16, 2005
Vathix
Mar 16, 2005
xs0
Mar 16, 2005
Vathix
Mar 16, 2005
Thomas Kuehne
Mar 16, 2005
pragma
Mar 16, 2005
pragma
March 16, 2005
It would be nice to be able to add global versions via pragma, like:
   pragma(version, "my_global_version");
I understand the reasons behind the current version system, but sometimes it's very handy for a library to have a single version to turn on a bunch of others.

Perhaps if the version is only set after the pragma (not forward referenced) it will still be easy for tools to use.

Example:

version(WINNT_5_1)
{
   pragma(version, "supports_opacity");
   pragma(version, "supports_mouse_tracking");
   pragma(version, "supports_visual_styles");
   // ...
}

It could go on and on for different versions and features. Do we really want to put all those versions on the command line?

The version numbers like version=5 could work here, but it just doesn't cut it; I think those version numbers should be left to the end application, not libraries.
March 16, 2005
Hmm, I think you can do

version(WINNT_5_1)
{
   version=supports_opacity;
   version=supports_mouse_tracking;
   // etc
}


xs0

Vathix wrote:
> It would be nice to be able to add global versions via pragma, like:
>    pragma(version, "my_global_version");
> I understand the reasons behind the current version system, but sometimes  it's very handy for a library to have a single version to turn on a bunch  of others.
> 
> Perhaps if the version is only set after the pragma (not forward  referenced) it will still be easy for tools to use.
> 
> Example:
> 
> version(WINNT_5_1)
> {
>    pragma(version, "supports_opacity");
>    pragma(version, "supports_mouse_tracking");
>    pragma(version, "supports_visual_styles");
>    // ...
> }
> 
> It could go on and on for different versions and features. Do we really  want to put all those versions on the command line?
> 
> The version numbers like version=5 could work here, but it just doesn't  cut it; I think those version numbers should be left to the end  application, not libraries.
March 16, 2005
On Wed, 16 Mar 2005 17:37:02 +0100, xs0 <xs0@xs0.com> wrote:

> Hmm, I think you can do
>
> version(WINNT_5_1)
> {
>     version=supports_opacity;
>     version=supports_mouse_tracking;
>     // etc
> }
>

But they're not global, they will only be set in that module.
March 16, 2005
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Vathix schrieb am Wed, 16 Mar 2005 11:28:56 -0500:
> It would be nice to be able to add global versions via pragma, like:
>     pragma(version, "my_global_version");
> I understand the reasons behind the current version system, but sometimes
> it's very handy for a library to have a single version to turn on a bunch
> of others.
>
> Perhaps if the version is only set after the pragma (not forward referenced) it will still be easy for tools to use.
>
> Example:
>
> version(WINNT_5_1)
> {
>     pragma(version, "supports_opacity");
>     pragma(version, "supports_mouse_tracking");
>     pragma(version, "supports_visual_styles");
>     // ...
> }
>
> It could go on and on for different versions and features. Do we really want to put all those versions on the command line?

Setting/changing trans-file parsing properties like version inside of your source code raises a big issue.

Either the parsing depends on the order those files are parsed or
all currently parsed files have to be reparsed
(risking circular - read: endless - reparsing).

Thomas


-----BEGIN PGP SIGNATURE-----

iD8DBQFCOGdk3w+/yD4P9tIRAjkhAKCxDoaJ8/Y2sSnHpMUBRkanJWfOfgCcCjLn
CjzxSwMJ4DCq2yYe1Bn3tak=
=8zDH
-----END PGP SIGNATURE-----
March 16, 2005
In article <opsnqn2irtkcck4r@24-49-100-147.kntnny.adelphia.net>, Vathix says...
>
>It would be nice to be able to add global versions via pragma, like:
>    pragma(version, "my_global_version");
>I understand the reasons behind the current version system, but sometimes it's very handy for a library to have a single version to turn on a bunch of others.
>
>Perhaps if the version is only set after the pragma (not forward referenced) it will still be easy for tools to use.

No need to use a pragma.  We already use public/private for import, so why not for version and debug too?

> public version = foo;
> public debug = bar;

..as the default use of version is already 'private' in a sense.  Also, it makes the behavior *very* explicit (which I think is why they're 'private' now).

- EricAnderton at yahoo
March 16, 2005
In article <4k5mg2-cvj.ln1@lnews.kuehne.cn>, Thomas Kuehne says...
>
>Setting/changing trans-file parsing properties like version inside of your source code raises a big issue.
>
>Either the parsing depends on the order those files are parsed or
>all currently parsed files have to be reparsed
>(risking circular - read: endless - reparsing).
>

Ahh.. gotcha.  Just ignore my previous response then.  I didn't even think about the compilation-order dependency that this would generate.

- EricAnderton at yahoo