Consultor Eletrônico



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?".