1. Version Feature.
- Posted by Lucius Hilley <lhilley at CDC.NET> Jan 28, 1999
- 436 views
Version feature. Maybe I am wrong, But I don't think the Euphoria interpreter allows the program to know which version of the interpreter is being used. This is rather important considering some of the most recent advances that have been made. Examples: 1) x += 1 2) The built-in constand of PI Because of this our program should be able to realize if it is attempting to be run with an old interpreter without breaking the old interpreters. Simple example: if EU_VERSION <= 2.1 then puts(1, "Requires euphoria version 2.1 or better\n") abort(0) end if The only problem I see here is that it needs to be implemented in such a way that it won't break existing code. The above example would fail because EU_VERSION is never declared. Also, in versions like maybe 2.2 where EU_VERSION did exist an attempt to declare EU_VERSION as a constant would cause that code to fail. The problem I see is that I don't see how to make it backwards compatible. Anyone have any clues? Maybe Rob can tell us how to snoop the version. Maybe we can attempt detection by the size of the interpreter that is being run? I still don't see how this will allow us to make programs that can be supported better under the newer copies of EU yet still be well supported under older copies. IE: My intent here isn't in making a program for 2.0 and then making it backwards compatible for 1.5. The intent is in making a program in 2.0 and using it to its best ability and then when 2.1 and 3.0 and so on are released I can update to support these to their better abilities yet still maintain the ability to run under 2.0 if 3.0 isn't being used on that system. It could also be helpful in debugging. IE: user248 says he is having a problem with your upgrade but everyone else seems to be doing fine with it. WHY? The returned debug code. ex.err would metion that he had run it with 2.0 and you KNOW that your upgrades require 2.1 Then you would be able to tell that person that they either need to use the old copy or they should upgrade their copy of euphoria to 2.1 I guess the simpliest method for handling forward and backwards compatibility might be Rob having a built-in function named version() if version() < 2.0 then put(1, "You need at least version 2.0") abort(0) end if Again I see old code as crashing out because version() isn't defined. I wish I could think of a solution for this. Lucius L. Hilley III --Help !!!, I feel lost.
2. Re: Version Feature.
- Posted by "Carl R. White" <C.R.White at SCM.BRAD.AC.UK> Jan 28, 1999
- 432 views
On Thu, 28 Jan 1999, Lucius Hilley wrote: ] Version feature. ] Maybe I am wrong, But I don't think the Euphoria interpreter allows the ] program to know which version of the interpreter is being used. ] This is rather important considering some of the most recent advances that ] have been made. ] Examples: ] 1) x += 1 ] 2) The built-in constand of PI Couldn't crash_message() be used in this situation? Just use: crash_message( "This program requires Euphoria v2.1\n"& "However the problem may simply be a bug.\n"& "Please check with the author.\n"& {}) -- Maybe insert a contact address here... HTU, Carl Disclaimer: I'm not well today. May be 'flu. Hence I may be talking rubbish... -- Carl R White -- Final Year Computer Science at the University of Bradford E-mail........: cyrek- at -bigfoot.com -- Remove hyphens. Ta :) URL...........: http://www.bigfoot.com/~cyrek/ Uncrackable...: "19.6A.23.38.52.73.45 25.31.1C 3C.53.44.39.58"
3. Re: Version Feature.
- Posted by Colin Taylor <cetaylor at COMPUSERVE.COM> Jan 28, 1999
- 425 views
Another (related) feature which would be very useful is a conditional "compile". (I know Euphoria isn't really compiled - but I can't think of = a better way to say it). example: If platform() =3D DOS32 then include graphics.e else include graphics.ew end if This feature would complement the version feature suggested by LLHIII. Colin Taylor
4. Re: Version Feature.
- Posted by Rolf Schroeder <schroeder at DESY.DE> Jan 28, 1999
- 427 views
Colin Taylor wrote: > > Another (related) feature which would be very useful is a conditional > "compile". (I know Euphoria isn't really compiled - but I can't think of a > better way to say it). > > example: > > If platform() = DOS32 then > include graphics.e > else > include graphics.ew > end if > > This feature would complement the version feature suggested by LLHIII. > > Colin Taylor The feature exists since EU ver. 2.0 I think. Have a nice night, Rolf
5. Re: Version Feature.
- Posted by Rolf Schroeder <schroeder at DESY.DE> Jan 28, 1999
- 439 views
Rolf Schroeder wrote: > > The feature exists since EU ver. 2.0 I think. I got the point now: platform() exists, but 'include' inside executable statements is forbidden. Sorry, Rolf
6. Re: Version Feature.
- Posted by Colin Taylor <cetaylor at COMPUSERVE.COM> Jan 28, 1999
- 435 views
Message text written by Rolf Schroeder: >The feature exists since EU ver. 2.0 I think.< Yes, platform() exists, but you missed the point. Try putting an include= statement inside an "if" statement. It doesn't work. Colin Taylor
7. Re: Version Feature.
- Posted by Lucius Hilley III <lhilley at CDC.NET> Jan 28, 1999
- 463 views
On Thu, 28 Jan 1999 16:02:26 +0100, Rolf Schroeder <schroeder at DESY.DE> wrote: >Colin Taylor wrote: >> >> Another (related) feature which would be very useful is a conditional >> "compile". (I know Euphoria isn't really compiled - but I can't think of a >> better way to say it). >> >> example: >> >> If platform() = DOS32 then >> include graphics.e >> else >> include graphics.ew >> end if >> >> This feature would complement the version feature suggested by LLHIII. >> >> Colin Taylor >The feature exists since EU ver. 2.0 I think. >Have a nice night, Rolf Umm, No this feature doesn't exist. Yes the routined platform() exists but you can't include one library or another instead depending on the platform used. I agree that platform and version conditionals coding should be possible. IE: if version() < 2.0 then include special.e end if Yes you can write your code to be platform() specific BUT, It has to be through out your code not an include this or include that. IE: We want this BUT. if platform() = DOS32 then include dos.e--dos stuff else include windows.ew--windows stuff. end if The routine names in could be identical but designed for that platform allowing the code to be platform specific. A call to input_number() would be a fully featured routine in DOS where as input_number() could easily be a simple API call in Windows. IE: We have this. sequence s if platform() = DOS32 then if graphics_mode(261) then abort(0) end if -- "Using DOS. Must use DOS graphics." else -- "Using Windows. May use Windows graphical libraries." end if if platform() = DOS32 then pixel(4, {1, 1}) else --Use something similiar in windows. end if if platform() = DOS32 then puts(1, "input a # between 1 and 10") s = gets(0) else -- Use a windows API call. Looks prettier and -- can easily be used to only allow numbers entered. end if -- poke4() and peek4() weren't in 1.4 and I don't -- recall if they were in 1.5. If this was possible then a person COULD -- include patch code so as to allow the program to run on old versions. Before poke4() and peek4() were built-in someone built some routines to handle these cases. Obviously if the built-in is available you wouldn't want to use the Euphoria coded routines, because the built-in's are much faster. Lucius L. Hilley III I hope all this is as clear as mud.