Feedback
Did this article resolve your question/issue?

   

Article

How to compile 64-bit r-code ?

Information

 
TitleHow to compile 64-bit r-code ?
URL NameP113045
Article Number000142278
EnvironmentProduct: OpenEdge
Version: 10.1x, 10.2x
OS: All supported platforms
Other: 64-bit
Question/Problem Description
How to compile 64-bit r-code ?
Is it possible to compile 64-bit r-code on a 32-bit OpenEdge license ?
Is it possible to compile 32-bit r-code on a 64-bit OpenEdge license ?
Steps to Reproduce
Clarifying Information
Error Message
Defect Number
Enhancement Number
Cause
Resolution
Starting with OpenEdge 10.1A, r-code is no longer portable between 32-bit and 64-bit platforms. 64-bit platforms will now run on 64-bit native r-code, as opposed to using the 32-bit r-code format.
This decision was made for performance reasons; the byte-alignment issues inherent to running 32-bit code on a 64-bit platform were slowing the client down to the point where little to no gain was seen. In extreme cases, the 64-bit client would actually perform worse that the 32-bit one.
The new 64-bit r-code on a 64-bit client provides (on average) a 15% better performance than the 32-bit r-code on a 32-bit client.

While database and  network communications are still portable between 64-bit and 32-bit versions, there are some additional considerations to using 64-bit r-code:

1. R-code size will increase, and frame segment limit is easier reached
Since the 64-bit r-code uses 8 byte structures instead of 4 bytes, the generated r-code files will be larger.
Also, the frame segment of the r-code files is still limited to 32K. Using the 8 byte offsets means this limit will be hit sooner.

2. Portability and backwards compatibility issues
- The 10.1A 64-bit clients (including AppServer and WebSpeed agents) can not run 32-bit r-code.
- The 10.1A 32-bit clients can not run 64-bit r-code.
- The 10.0x clients can not run the 64-bit r-code generated with 10.1A and must use 32-bit r-code. (in this case it is assumed that no new 10.1A features are used).

These points should be taken into account when planning migrations and/or new ports deployed on OpenEdge 10.1A.

3. A 64-bit OpenEdge is required to compile 64-bit r-code
The 10.1A 64-bit clients can not compile 32-bit r-code and vice-versa.

To compile the application code in 64-bit r-code it is advised to set up an inexpensive 64-bit Linux machine and install the appropriate Development Server license on this.

4. A 32-bit OpenEdge is required to compile 32-bit r-code

To compile the application code in 32-bit r-code it is advised to install the 32-bit  Development  license on a machine and use that installation to compile for 32-bit deployments.

5. A 64-bit version for Windows is available on Windows 64-bit Beginning in 10.2A
However it is only available for the character client:  _progres.exe


All OpenEdge 11.0 r-code is portable across all platforms, (regardless of OS platform, Bit Architecture, Little or Big Endian architecture), as long as:
- the code is written for the same user interface, (character mode versus graphical mode), and
- the code does not contain references to Operating System specific commands that are not available on the target platform.

6. Beginning in OpenEdge 11.5 it is possible to install both 32-bit and 64-bit OpenEdge using the same version on the same system (so long as the operating system is 64-bit).
Workaround
Notes
References to Other Documentation:

OpenEdge 10 Platform & Product Availability Guide
OpenEdge Getting Started: New and Revised Features, Chapter 1 "64-bit r-code: Performance versus portability"
OpenEdge Deployment: Managing 4GL Applications, Chapter 11 "Deployment Topics and Tasks"  (XCODE utility)
OpenEdge 10.1A Release Notes, RN#: 101A-00355 "Incompatibility issue between 32 bit r code and 64-bit r-code"


Progress Article(s):
"Frame segment exceeded when compiling after moving to OpenEdge 10"
"Error 2888 after building r-code using Progress 32-BIT but running on 64-BIT"
"OpenEdge 10.x and 11.x R-CODE bit compatibility rules"
"How to compile and deploy application code developed in 32 bit, to 64 bit servers in OpenEdge 10"
 Can the same version of 32-bit and 64-bit products be installed on the same Windows machine?


 
Last Modified Date11/20/2020 7:36 AM
Attachment 
Files
Disclaimer The origins of the information on this site may be internal or external to Progress Software Corporation (“Progress”). Progress Software Corporation makes all reasonable efforts to verify this information. However, the information provided is for your information only. Progress Software Corporation makes no explicit or implied claims to the validity of this information.

Any sample code provided on this site is not supported under any Progress support program or service. The sample code is provided on an "AS IS" basis. Progress makes no warranties, express or implied, and disclaims all implied warranties including, without limitation, the implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample code is borne by the user. In no event shall Progress, its employees, or anyone else involved in the creation, production, or delivery of the code be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample code, even if Progress has been advised of the possibility of such damages.