1. version() function

I'm now wishing there was some obvious way of telling at runtime
which version of Euphoria I'm running with.

Currently I'm doing this, but I'm open to suggestions...


include machine.e
global function eu_version()
if routine_id("crash_routine") = -1 then
  return 2.4
else
  return 2.5
end if
end function

-- 
Derek Parnell
Melbourne, Australia

new topic     » topic index » view message » categorize

2. Re: version() function

Derek Parnell wrote:

> I'm now wishing there was some obvious way of telling at runtime
> which version of Euphoria I'm running with.

Me too.

> Currently I'm doing this, but I'm open to suggestions...
>
>
> include machine.e
> global function eu_version()
> if routine_id("crash_routine") = -1 then
>   return 2.4
> else
>   return 2.5
> end if
> end function

It would be useful if the function could also tell about alpha, beta and
official version. For instance, my "bit.e" library requires the Euphoria
2.4 Official Release or later, and someone couldn't run it, because he
used Eu 2.4 alpha or beta.

Internally, we could use e.g.:
   2.4 alpha    --> 2.40
   2.4 beta     --> 2.41
   2.4 official --> 2.42

In "bit.e", I would then add some lines such as:
if eu_version() < 2.42 then
   puts(1, "Sorry, Euphoria 2.4 Official Release or later required.")
   abort(1)
end if
}}}
<eucode>

My first idea was to look at some particular bytes in the EXE file (1st command-line argument), in order to detect the version. This would also work for older Euphoria versions. Currently I think that this would be too complicated, because it must take the different interpreters and compilers into account. getlost

Regards, Juergen

Have you read a good program lately? }}}

new topic     » goto parent     » topic index » view message » categorize

3. Re: version() function

On Thu, 18 Nov 2004 17:30:46 -0800, Derek Parnell
<guest at RapidEuphoria.com> wrote:

>I'm now wishing there was some obvious way of telling at runtime
>which version of Euphoria I'm running with.
>
>Currently I'm doing this, but I'm open to suggestions...
>
>
>include machine.e
>global function eu_version()
>if routine_id("crash_routine") = -1 then
>  return 2.4
>else
>  return 2.5
>end if
>end function

Looks good to me. I might also suggest misc.e:
pretty_print (2.4)
(couldn't find anything for 2.3)
sleep (2.2)
reverse (2.1)
misc.e was introduced in 2.0

Unfortunately, I can't suggest a check for 2.6!

Maybe, if Rob does not think a version() routine is warranted, he
could at least reserve say 65 as an opcode for machine_func.

On a personal note, Derek, if you do wander off, I hope you find what
you're looking for and remember to stop by once in a while. I can't in
all honesty ask you to stay since it is clearly making you unhappy.
I wouldn't be here without your efforts on win32lib. You'll certainly
be missed.

All the best,
Pete

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu