Kbase P124103: R-code compatibility rules on OpenEdge 10.x
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  6/29/2010 |
|
Status: Verified
GOAL:
What are the 64-Bit R-Code Portability Guidelines on 10.1x
GOAL:
Will 64-bit r-code run on a 32-bit platform?
GOAL:
Can 32-bit r-code run on a 64-bit platform?
GOAL:
On a 64-bit platform does 32-bit or 64-bit r-code perform better?
GOAL:
Will a 64-bit r-code file size larger than the 32-bit r-code ?
GOAL:
32-bit and 64-bit r-code considerations
GOAL:
r-code compatibility rules on OpenEdge 10.x
GOAL:
10.1B R-code compatibility
GOAL:
10.1x R-code compatibility
GOAL:
10.1C R-code compatibility
GOAL:
Is it necessary to recompile r-code when migrating to 10.1x?
GOAL:
Can 10.0X generated r-code be executed in 10.1B without recompiling?
GOAL:
Can 10.1B r-code be ran on 10.1A?
GOAL:
Can 10.1B r-code be ran on 10.0X?
GOAL:
10.2A r-code compatibility rules
FACT(s) (Environment):
OpenEdge 10.x
All Supported Operating Systems
FIX:
In 10.1A, Progress introduced 64-bit r-code, this means that the r-code would become native 64-bit boundary aligned. This 64-bit r-code implementation changed the r-code portability for performance reasons. Therefore, if you are on a 64-bit platform, you can run either 32-bit r-code with a 32-bit OpenEdge version, or 64-bit r-code with a 64-bit OpenEdge version. As of 10.1X you cannot run 32 bit r-code on a 64-bit ABL client. 64-bit r-code performs better on a 64-bit platform than 32-bit r-code on a 64 bit Operating System platform. Therefore you have to decide between r-code portability or maximum performance.
If on a 32-bit platform, you can only run 32-bit r-code. Also, there is no r-code portability between pre-10.1B 64-bit products and 10.1B 64-bit products; the pre-10.1B 64-bit r-code was not really "native".
The following table shows the cases where r-code generated in specific version must be or must not be recompiled.
R-code Compatibility
10.0A & 10.0B
10.1A/B/C
32
64
32
64
10.0A/B generated r-code
32
Ok
Ok
Ok
recompilation required
64
Ok
Ok
Ok
recompilation required
10.1A/B/C generated r-code
32
Ok
Ok
Ok
recompilation required
64
recompilation required
recompilation required
recompilation required
Ok
Therefore, the r-code compatibility rules are:
r-code compiled in 10.0A & 10.0B 32-BIT works with 10.1A/B/C 32-BIT
r-code compiled in 10.0A & 10.0B 32-BIT does not work with 10.1A/B/C 64-BIT
r-code compiled in 10.0A & 10.0B 64-BIT works with 10.1A/B/C 32-BIT
r-code compiled in 10.0A & 10.0B 64-BIT does not work with 10.1A/B/C 64-BIT
r-code compiled in 10.1A/B/C 32-BIT works with 10.0A & 10.0B 32-BIT
r-code compiled in 10.1A/B/C 32-BIT works with 10.0A & 10.0B 64-BIT
r-code compiled in 10.1A/B/C 64-BIT does not work with 10.0A & 10.0B 32-BIT
r-code compiled in 10.1A/B/C 64-BIT does not work with 10.0A & 10.0B 64-BIT
10.1B, 10.1C and 10.2A cannot execute r-code generated with version .8, 9 or earlier.
10.2B 32 bit platforms can execute r-code generated with 10.X
10.2B 64 bit platforms can execute r-code generated with 10.1X. You cannot execute 10.0X, version 9, version 8 or earlier.
10.X (X being < 2) may be able to execute r-code generated with 10.2B. The recommendation is to recompile.Also note that, 64-bit r-code file size will be larger than the 32-bit r-code. The estimated r-code file size growth is between 15 - 35%.
10.2B,10.2A, 10.1C and 10.1B code that contains certain functions must be compiled using the -noint64 parameter in order to run on a 10.1A, 10.0B and 10.0A configurations. For more information on -noint64 see, solution P133958, "How -noint64 works?".