Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ffcf899

Browse files
author
Andrew MacIntyre
committed
make port notes current
1 parent 4fffdff commit ffcf899

1 file changed

Lines changed: 36 additions & 48 deletions

File tree

PC/os2emx/README.os2emx

Lines changed: 36 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,16 @@ What's new since the previous release
55
-------------------------------------
66

77
This release of the port incorporates the following changes from the
8-
December 24, 2001 release of the Python 2.2 port:
8+
April 14, 2002 release of the Python 2.2.1 port:
99

1010
- based on the Python v2.3 final release source.
11+
- now setting higher number of file handles (250).
12+
- defaults to building with PyMalloc enabled (Python 2.3 default).
13+
- the port is now maintained in the Python CVS repository.
14+
15+
Python 2.3 incorporates several changes which have resolved the
16+
longstanding problems the EMX port has had with test_longexp (used
17+
to be "YOU HAVE BEEN WARNED" item 1).
1118

1219

1320
Licenses and info about Python and EMX
@@ -66,10 +73,12 @@ Previous Python port releases by me:-
6673
- v2.0 (Stackless re-release) on June 18, 2001.
6774
- v2.1.1 on August 5, 2001;
6875
- v2.1.1 on August 12, 2001 (cleanup release);
69-
- v2.1.1 (updated DLL) on August 14, 2001.
70-
- v2.2b2 on December 8, 2001 (not uploaded to archive sites)
71-
- v2.2c1 on December 16, 2001 (not uploaded to archive sites)
72-
- v2.2 on December 24, 2001
76+
- v2.1.1 (updated DLL) on August 14, 2001;
77+
- v2.2b2 on December 8, 2001 (not uploaded to archive sites);
78+
- v2.2c1 on December 16, 2001 (not uploaded to archive sites);
79+
- v2.2 on December 24, 2001;
80+
- v2.2.1c2 on March 31, 2002 (not uploaded to archive sites);
81+
- v2.2.1 on April 14, 2002.
7382

7483
It is possible to have these earlier ports still usable after installing
7584
this port - see the README.os2emx.multiple_versions file, contributed by
@@ -91,7 +100,7 @@ My development system is running OS/2 v4 with fixpack 12.
91100
- GNU Readline (Kai Uwe Rommel's port available from Hobbes or LEO, v2.1)
92101
- GNU GDBM (Kai Uwe Rommel's port available from Hobbes or LEO, v1.7.3)
93102
- zlib (Hung-Chi Chu's port available from Hobbes or LEO, v1.1.3)
94-
- expat (from ftp://ftp.jclark.com/pub/xml/, v1.2)
103+
- expat (distributed with Python, v1.95.2)
95104
- GNU MP (Peter Meerwald's port available from LEO, v2.0.2)
96105
- GNU UFC (Kai Uwe Rommel's port available from LEO, v2.0.4)
97106

@@ -113,7 +122,8 @@ to compile & link the executable. This is so that fork() works (see
113122

114123
Python23.dll is created as a normal OMF DLL, with an OMF import
115124
library and module definition file. There is also an a.out (.a) import
116-
library to support linking the DLL to a.out executables.
125+
library to support linking the DLL to a.out executables. The DLL
126+
requires the EMX runtime DLLs.
117127

118128
This port has been built with complete support for multithreading.
119129

@@ -278,46 +288,7 @@ YOU HAVE BEEN WARNED!!
278288

279289
I know about a number of nasties in this port.
280290

281-
1. EMX's malloc() and/or the underlying OS/2 VM system aren't particularly
282-
comfortable with Python's use of heap memory. The test_longexp regression
283-
test exhausts the available swap space on a machine with 64MB of RAM with
284-
150MB of available swap space.
285-
286-
Using a crudely instrumented wrapper around malloc()/realloc()/free(), the
287-
heap memory usage of the expression at the core of the test
288-
(eval('[' + '2,' * NUMREPS + ']')) is as follows (approximately):
289-
NUMREPS = 1 => 300k
290-
NUMREPS = 10000 => 22MB
291-
NUMREPS = 20500 => 59MB
292-
293-
I don't even have enough memory to try for NUMREPS = 25000 :-(, let alone
294-
the NUMREPS = 65580 in test_longexp! I do have a report that the test
295-
succeeds in the presence of sufficient memory (~200MB RAM).
296-
297-
During the course of running the test routine, the Python parser
298-
allocates lots of 21 byte memory chunks, each of which is actually
299-
a 64 byte allocation. There are a smaller number of 3 byte allocations
300-
which consume 12 bytes each. Consequently, more than 3 times as much
301-
memory is allocated than is actually used.
302-
303-
The Python Object Allocator code (PyMalloc) was introduced in Python 2.1
304-
for Python's core to be able to wrap the malloc() system to deal with
305-
problems with "unfriendly" malloc() behaviour, such as this. Unfortunately
306-
for the OS/2 port, it is only supported for the allocation of memory for
307-
objects, whereas my research into this problem indicates it is the parser
308-
which is source of this particular malloc() frenzy.
309-
310-
I have attempted using PyMalloc to manage all of Python's memory
311-
allocation. While this works fine (modulo the socket regression test
312-
failing in the absence of a socket.pyc), it is a significant performance
313-
hit - the time to run the regression test blows out from ~3.5 minutes to
314-
~5.75 minutes on my system.
315-
316-
I therefore don't plan to pursue this any further for the time being.
317-
318-
Be aware that certain types of expressions could well bring your system
319-
to its knees as a result of this issue. I have modified the longexp test
320-
to report failure to highlight this.
291+
{1. Issue resolved...}
321292

322293
2. Eberhard Mattes, author of EMX, writes in his documentation that fork()
323294
is very inefficient in the OS/2 environment. It also requires that the
@@ -528,6 +499,23 @@ Include subdirectory with all other include files.
528499

529500
[2001/12/08] - 2.2 Final
530501

502+
[2002/03/31] - 2.2.1 Release Candidate 2
503+
504+
[2002/04/14] - 2.2.1 Final
505+
506+
[2002/8/18]
507+
508+
26. now explicitly set the number of file handles available to a
509+
Python process to 250. EMX default is 40, which is insufficient for the
510+
recently checked in security improvments to the tempfile regression
511+
test (test_tempfile) which tries to create 100 temporary files.
512+
513+
This setting can be overridden via the EMXOPT environment variable:
514+
set EMXOPT=-h250
515+
is equivalent to the setting currently used. The emxbind utility (if you
516+
have it installed) can also be used to permanently change the setting in
517+
python.exe - please refer to the EMX documentation for more information.
518+
531519
... probably other issues that I've not encountered, or don't remember :-(
532520

533521
If you encounter other difficulties with this port, which can be
@@ -567,4 +555,4 @@ Andrew MacIntyre
567555
568556
Web: http://www.andymac.org/
569557

570-
24 December, 2001.
558+
18 August, 2001.

0 commit comments

Comments
 (0)