| This is a port of Python 2.3 to OS/2 using the EMX development tools | 
 | ========================================================================= | 
 |  | 
 | What's new since the previous release | 
 | ------------------------------------- | 
 |  | 
 | This release of the port incorporates the following changes from the  | 
 | April 14, 2002 release of the Python 2.2.1 port: | 
 |  | 
 | - based on the Python v2.3 final release source. | 
 | - now setting higher number of file handles (250). | 
 | - defaults to building with PyMalloc enabled (Python 2.3 default). | 
 | - the port is now maintained in the Python CVS repository. | 
 |  | 
 | Python 2.3 incorporates several changes which have resolved the  | 
 | longstanding problems the EMX port has had with test_longexp (used  | 
 | to be "YOU HAVE BEEN WARNED" item 1). | 
 |    | 
 |  | 
 | Licenses and info about Python and EMX | 
 | -------------------------------------- | 
 |  | 
 | Please read the file README.Python-2.3 included in this package for  | 
 | information about Python 2.3.  This file is the README file from the  | 
 | Python 2.3 source distribution available via http://www.python.org/  | 
 | and its mirrors.  The file LICENCE.Python-2.3 is the text of the Licence  | 
 | from the Python 2.3 source distribution. | 
 |  | 
 | Note that the EMX package that this package depends on is released under  | 
 | the GNU General Public Licence.  Please refer to the documentation  | 
 | accompanying the EMX Runtime libraries for more information about the  | 
 | implications of this.  A copy of version 2 of the GPL is included as the  | 
 | file COPYING.gpl2. | 
 |  | 
 | Readline and GDBM are covered by the GNU General Public Licence.  I think  | 
 | Eberhard Mattes' porting changes to BSD DB v1.85 are also GPL'ed (BSD DB  | 
 | itself is BSD Licenced).  ncurses and expat appear to be covered by MIT  | 
 | style licences - please refer to the source distributions for more detail.   | 
 | zlib is distributable under a very free license.  GNU MP and GNU UFC are  | 
 | under the GNU LGPL (see file COPYING.lib). | 
 |  | 
 | My patches to the Python-2.x source distributions, and any other packages  | 
 | used in this port, are placed in the public domain. | 
 |  | 
 | This software is provided 'as-is', without any express or implied warranty. | 
 | In no event will the author be held liable for any damages arising from the  | 
 | use of the software. | 
 |  | 
 | I do hope however that it proves useful to someone. | 
 |  | 
 |  | 
 | Other ports | 
 | ----------- | 
 |  | 
 | There have been ports of previous versions of Python to OS/2. | 
 |  | 
 | The best known would be that by Jeff Rush, most recently of version  | 
 | 1.5.2.  Jeff used IBM's Visual Age C++ (v3) for his ports, and his  | 
 | patches have been included in the Python 2.3 source distribution. | 
 |  | 
 | Andrew Zabolotny implemented a port of Python v1.5.2 using the EMX  | 
 | development tools.  His patches against the Python v1.5.2 source  | 
 | distribution have become the core of this port, and without his efforts  | 
 | this port wouldn't exist.  Andrew's port also appears to have been  | 
 | compiled with his port of gcc 2.95.2 to EMX, which I have but have  | 
 | chosen not to use for the binary distribution of this port (see item 21  | 
 | of the "YOU HAVE BEEN WARNED" section below). | 
 |  | 
 | Previous Python port releases by me:- | 
 |  - v2.0 on March 31, 2001; | 
 |  - v2.0 on April 25, 2001 (cleanup release + Stackless variant); | 
 |  - v2.1 on June 17, 2001; | 
 |  - v2.0 (Stackless re-release) on June 18, 2001. | 
 |  - v2.1.1 on August 5, 2001; | 
 |  - v2.1.1 on August 12, 2001 (cleanup release); | 
 |  - v2.1.1 (updated DLL) on August 14, 2001; | 
 |  - v2.2b2 on December 8, 2001 (not uploaded to archive sites); | 
 |  - v2.2c1 on December 16, 2001 (not uploaded to archive sites); | 
 |  - v2.2 on December 24, 2001; | 
 |  - v2.2.1c2 on March 31, 2002 (not uploaded to archive sites); | 
 |  - v2.2.1 on April 14, 2002. | 
 |  | 
 | It is possible to have these earlier ports still usable after installing  | 
 | this port - see the README.os2emx.multiple_versions file, contributed by | 
 | Dr David Mertz, for a suggested approach to achieving this. | 
 |  | 
 |  | 
 | Software requirements | 
 | --------------------- | 
 |  | 
 | This package requires the EMX Runtime package, available from the  | 
 | Hobbes (http://hobbes.nmsu.edu/) and LEO (http://archiv.leo.org/)  | 
 | archives of OS/2 software.  I have used EMX version 0.9d fix04 in  | 
 | developing this port. | 
 |  | 
 | My development system is running OS/2 v4 with fixpack 12. | 
 |  | 
 | 3rd party software which has been linked into dynamically loaded modules: | 
 | - ncurses      (see http://dickey.his.com/ for more info, v5.2) | 
 | - GNU Readline (Kai Uwe Rommel's port available from Hobbes or LEO, v2.1) | 
 | - GNU GDBM     (Kai Uwe Rommel's port available from Hobbes or LEO, v1.7.3) | 
 | - zlib         (Hung-Chi Chu's port available from Hobbes or LEO, v1.1.3) | 
 | - expat        (distributed with Python, v1.95.2) | 
 | - GNU MP       (Peter Meerwald's port available from LEO, v2.0.2) | 
 | - GNU UFC      (Kai Uwe Rommel's port available from LEO, v2.0.4) | 
 |  | 
 | The zlib module requires the Z.DLL to be installed - see the Installation  | 
 | section and item 12 of the "YOU HAVE BEEN WARNED" section for more  | 
 | information. | 
 |  | 
 | About this port | 
 | --------------- | 
 |  | 
 | I have attempted to make this port as complete and functional as I can,  | 
 | notwithstanding the issues in the "YOU HAVE BEEN WARNED" section below. | 
 |  | 
 | Core components: | 
 |  | 
 | Python.exe is linked as an a.out executable, ie using EMX method E1  | 
 | to compile & link the executable.  This is so that fork() works (see  | 
 | "YOU HAVE BEEN WARNED" item 2). | 
 |  | 
 | Python23.dll is created as a normal OMF DLL, with an OMF import  | 
 | library and module definition file.  There is also an a.out (.a) import  | 
 | library to support linking the DLL to a.out executables.  The DLL  | 
 | requires the EMX runtime DLLs. | 
 |  | 
 | This port has been built with complete support for multithreading. | 
 |  | 
 | Modules: | 
 |  | 
 | As far as possible, extension modules have been made dynamically loadable  | 
 | when the module is intended to be built this way.  I haven't yet changed  | 
 | the building of Python's standard modules over to using the DistUtils. | 
 |  | 
 | See "YOU HAVE BEEN WARNED" item 5 for notes about the fcntl module, and  | 
 | "YOU HAVE BEEN WARNED" item 14 for notes about the pwd and grp modules. | 
 |  | 
 | Support for case sensitive module import semantics has been added to match  | 
 | the Windows release.  This can be deactivated by setting the PYTHONCASEOK  | 
 | environment variable (the value doesn't matter) - see "YOU HAVE BEEN WARNED"  | 
 | item 16. | 
 |  | 
 | Optional modules: | 
 |  | 
 | Where I've been able to locate the required 3rd party packages already  | 
 | ported to OS/2, I've built and included them. | 
 |  | 
 | These include ncurses (_curses, _curses_panel), BSD DB (bsddb),  | 
 | GNU GDBM (gdbm, dbm), zlib (zlib), GNU Readline (readline), expat  | 
 | (pyexpat), GNU MP (mpz) and GNU UFC (crypt). | 
 |  | 
 | I have built these modules statically linked against the 3rd party  | 
 | libraries, with the exception of zlib.  Unfortunately my attempts to use  | 
 | the dll version of GNU readline have been a dismal failure, in that when  | 
 | the dynamically linked readline module is active other modules  | 
 | immediately provoke a core dump when imported. | 
 |  | 
 | Only the BSD DB package (part of the BSD package distributed with EMX)  | 
 | needed source modifications to be used for this port, pertaining to use  | 
 | of errno with multithreading. | 
 |  | 
 | The other packages, except for ncurses and zlib, needed Makefile changes  | 
 | for multithreading support but no source changes. | 
 |  | 
 | The _curses_panel module is a potential problem - see "YOU HAVE BEEN  | 
 | WARNED" item 17. | 
 |  | 
 | Upstream source patches: | 
 |  | 
 | No updates to the Python 2.3 release have become available. | 
 |  | 
 | Eberhard Mattes' EMXFIX04 update to his EMX 0.9d tools suite includes  | 
 | bug fixes for the BSD DB library.  The bsddb module included in this  | 
 | port incorporates these fixes. | 
 |  | 
 | Library and other distributed Python code: | 
 |  | 
 | The Python standard library lives in the Lib directory.  All the standard  | 
 | library code included with the Python 2.3 source distribution is included  | 
 | in the binary archive, with the exception of the dos-8x3 and tkinter  | 
 | subdirectories which have been omitted to reduce the size of the binary  | 
 | archive - the dos-8x3 components are unnecessary duplicates and Tkinter  | 
 | is not supported by this port (yet).  All the plat-* subdirectories in the  | 
 | source distribution have also been omitted, and a plat-os2emx directory  | 
 | included. | 
 |  | 
 | The Tools and Demo directories contain a collection of Python scripts.   | 
 | To reduce the size of the binary archive, the Demo/sgi, Demo/Tix,  | 
 | Demo/tkinter, Tools/audiopy and Tools/IDLE subdirectories have been  | 
 | omitted as not being supported by this port.  The Misc directory has  | 
 | also been omitted. | 
 |  | 
 | All subdirectories omitted from the binary archive can be reconstituted  | 
 | from the Python 2.3 source distribution, if desired. | 
 |  | 
 | Support for building Python extensions: | 
 |  | 
 | The Config subdirectory contains the files describing the configuration  | 
 | of the interpreter and the Makefile, import libraries for the Python DLL,  | 
 | and the module definition file used to create the Python DLL.  The  | 
 | Include subdirectory contains all the standard Python header files  | 
 | needed for building extensions. | 
 |  | 
 | As I don't have the Visual Age C++ compiler, I've made no attempt to  | 
 | have this port support extensions built with that compiler. | 
 |  | 
 |  | 
 | Packaging | 
 | --------- | 
 |  | 
 | This port is packaged into several archives: | 
 | - python-2.3-os2emx-bin-02????.zip   (binaries, library modules) | 
 | - python-2.3-os2emx-src-03????.zip   (source patches and makefiles) | 
 |  | 
 | Documentation for the Python language, as well as the Python 2.3  | 
 | source distibution, can be obtained from the Python website  | 
 | (http://www.python.org/) or the Python project pages at Sourceforge  | 
 | (http://sf.net/projects/python/). | 
 |  | 
 |  | 
 | Installation | 
 | ------------ | 
 |  | 
 | Obtain and install, as per the included instructions, the EMX runtime  | 
 | package. | 
 |  | 
 | If you wish to use the zlib module, you will need to obtain and install  | 
 | the Z.DLL from Hung-Chi Chu's port of zlib v1.1.3 (zlib113.zip).  See also  | 
 | "YOU HAVE BEEN WARNED" item 12 below. | 
 |  | 
 | Unpack this archive, preserving the subdirectories, in the root directory  | 
 | of the drive where you want Python to live. | 
 |  | 
 | Add the Python directory (eg C:\Python23) to the PATH and LIBPATH  | 
 | variables in CONFIG.SYS. | 
 |  | 
 | You should then set the PYTHONHOME and PYTHONPATH environment variables  | 
 | in CONFIG.SYS. | 
 |  | 
 | PYTHONHOME should be set to Python's top level directory.  PYTHONPATH  | 
 | should be set to the semicolon separated list of principal Python library  | 
 | directories. | 
 | I use: | 
 |   SET PYTHONHOME=F:/Python23 | 
 |   SET PYTHONPATH=F:/Python23/Lib;F:/Python23/Lib/plat-os2emx; | 
 |                  F:/Python23/Lib/lib-dynload;F:/Python23/Lib/site-packages | 
 |  | 
 | NOTE!:  the PYTHONPATH setting above is linewrapped for this document - it  | 
 | should all be on one line in CONFIG.SYS! | 
 |  | 
 | If you wish to use the curses module, you should set the TERM and TERMINFO  | 
 | environment variables appropriately. | 
 |  | 
 | If you don't already have ncurses installed, I have included a copy of the  | 
 | EMX subset of the Terminfo database included with the ncurses-5.2 source  | 
 | distribution.  This can be used by setting the TERMINFO environment variable  | 
 | to the path of the Terminfo subdirectory below the Python home directory. | 
 | On my system this looks like: | 
 |   SET TERMINFO=F:/Python23/Terminfo | 
 |  | 
 | For the TERM environment variable, I would try one of the following: | 
 |   SET TERM=ansi | 
 |   SET TERM=os2 | 
 |   SET TERM=window | 
 |  | 
 | You will have to reboot your system for these changes to CONFIG.SYS to take  | 
 | effect. | 
 |  | 
 | If you wish to compile all the included Python library modules to bytecode,  | 
 | you can change into the Python home directory and run the COMPILEALL.CMD  | 
 | batch file. | 
 |  | 
 | You can execute the regression tests included with the Python 2.3 source  | 
 | distribution by changing to the Python 2.3 home directory and executing the  | 
 | REGRTEST.CMD batch file.  The following tests are known to fail at this  | 
 | time: | 
 | - test_longexp (see "YOU HAVE BEEN WARNED" item 1); | 
 | - test_mhlib (I don't know of any port of MH to OS/2); | 
 | - test_pwd (see "YOU HAVE BEEN WARNED" item 14, probably a bug in my code); | 
 | - test_grp (as per test_pwd); | 
 | - test_strftime (see "YOU HAVE BEEN WARNED" item 20); | 
 | - test_socketserver (fork() related, see "YOU HAVE BEEN WARNED" item 2). | 
 |  | 
 |  | 
 | YOU HAVE BEEN WARNED!! | 
 | ---------------------- | 
 |  | 
 | I know about a number of nasties in this port. | 
 |  | 
 | {1.  Issue resolved...} | 
 |  | 
 | 2.  Eberhard Mattes, author of EMX, writes in his documentation that fork()  | 
 | is very inefficient in the OS/2 environment.  It also requires that the  | 
 | executable be linked in a.out format rather than OMF.  Use the os.exec  | 
 | and/or the os.spawn family of functions where possible. | 
 |  | 
 | {3.  Issue resolved...} | 
 |  | 
 | 4.  In the absence of GNU Readline, terminating the interpreter requires a  | 
 | control-Z (^Z) followed by a carriage return.  Jeff Rush documented this  | 
 | problem in his Python 1.5.2 port.  With Readline, a control-D (^D) works  | 
 | as per the standard Unix environment. | 
 |  | 
 | 5.  EMX only has a partial implementation of fcntl().  The fcntl module  | 
 | in this port supports what EMX supports.  If fcntl is important to you,  | 
 | please review the EMX C Library Reference (included in .INF format in the  | 
 | EMXVIEW.ZIP archive as part of the complete EMX development tools suite). | 
 | Because of other side-effects I have modified the test_fcntl.py test  | 
 | script to deactivate the exercising of the missing functionality. | 
 |  | 
 | 6.  The BSD DB module is linked against DB v1.85.  This version is widely  | 
 | known to have bugs, although some patches have become available (and are  | 
 | incorporated into the included bsddb module).  Unless you have problems  | 
 | with software licenses which would rule out GDBM (and the dbm module  | 
 | because it is linked against the GDBM library) or need it for file format  | 
 | compatibility, you may be better off deleting it and relying on GDBM.  I  | 
 | haven't looked at porting the version of the module supporting the later  | 
 | SleepyCat releases of BSD DB, which would also require a port of the  | 
 | SleepyCat DB package. | 
 |  | 
 | 7.  The readline module has been linked against ncurses rather than the  | 
 | termcap library supplied with EMX. | 
 |  | 
 | {8.  Workaround implemented} | 
 |  | 
 | 9.  I have configured this port to use "/" as the preferred path separator  | 
 | character, rather than "\" ('\\'), in line with the convention supported  | 
 | by EMX.  Backslashes are still supported of course, and still appear in  | 
 | unexpected places due to outside sources that don't get normalised. | 
 |  | 
 | 10. While the DistUtils components are now functional, other  | 
 | packaging/binary handling tools and utilities such as those included in | 
 | the Demo and Tools directories - freeze in particular - are unlikely to  | 
 | work.  If you do get them going, I'd like to know about your success. | 
 |  | 
 | 11. I haven't set out to support the [BEGIN|END]LIBPATH functionality  | 
 | supported by one of the earlier ports (Rush's??).  If it works let me know. | 
 |  | 
 | 12. There appear to be several versions of Z.DLL floating around - the one  | 
 | I have is 45061 bytes and dated January 22, 1999.  I have a report that  | 
 | another version causes SYS3175s when the zlib module is imported. | 
 |  | 
 | 14. As a result of the limitations imposed by EMX's library routines, the  | 
 | standard extension module pwd only synthesises a simple passwd database,  | 
 | and the grp module cannot be supported at all. | 
 |  | 
 | I have written substitutes, in Python naturally, which can process real  | 
 | passwd and group files for those applications (such as MailMan) that  | 
 | require more than EMX emulates.  I have placed pwd.py and grp.py in  | 
 | Lib/plat-os2emx, which is usually before Lib/lib-dynload (which contains  | 
 | pwd.pyd) in the PYTHONPATH.  If you have become attached to what pwd.pyd  | 
 | supports, you can put Lib/lib-dynload before Lib/plat-os2emx in PYTHONPATH  | 
 | or delete/rename pwd.py & grp.py. | 
 |  | 
 | pwd.py & grp.py support locating their data files by looking in the  | 
 | environment for them in the following sequence: | 
 | pwd.py:  $ETC_PASSWD             (%ETC_PASSWD%) | 
 |          $ETC/passwd             (%ETC%/passwd) | 
 |          $PYTHONHOME/Etc/passwd  (%PYTHONHOME%/Etc/passwd) | 
 | grp.py:  $ETC_GROUP              (%ETC_GROUP%) | 
 |          $ETC/group              (%ETC%/group) | 
 |          $PYTHONHOME/Etc/group   (%PYTHONHOME%/Etc/group) | 
 |  | 
 | Both modules support using either the ":" character (Unix standard) or  | 
 | ";" (OS/2, DOS, Windows standard) field separator character, and pwd.py  | 
 | implements the following drive letter conversions for the home_directory and  | 
 | shell fields (for the ":" separator only): | 
 |          $x  ->  x: | 
 |          x;  ->  x: | 
 |  | 
 | Example versions of passwd and group are in the Etc subdirectory.  Note  | 
 | that as of this release, this code fails the regression test.  I'm looking  | 
 | into why, and hope to have this fixed. | 
 |  | 
 | 15. As of Python 2.1, termios support has mutated.  There is no longer a  | 
 | platform specific TERMIOS.py containing the symbolic constants - these  | 
 | now live in the termios module.  EMX's termios routines don't support all  | 
 | of the functionality now exposed by the termios module - refer to the EMX  | 
 | documentation to find out what is supported. | 
 |  | 
 | 16. The case sensitive import semantics introduced in Python 2.1 for other  | 
 | case insensitive but case preserving file/operating systems (Windows etc),  | 
 | have been incorporated into this port, and are active by default.  Setting  | 
 | the PYTHONCASEOK environment variable (to any value) reverts to the  | 
 | previous (case insensitive) semantics. | 
 |  | 
 | 17. Because I am statically linking ncurses, the _curses_panel  | 
 | module has potential problems arising from separate library data areas. | 
 | To avoid this, I have configured the _curses_.pyd (imported as  | 
 | "_curses_panel") to import the ncurses symbols it needs from _curses.pyd.  | 
 | As a result the _curses module must be imported before the _curses_panel  | 
 | module.  As far as I can tell, the modules in the curses package do this.  | 
 | If you have problems attempting to use the _curses_panel support please  | 
 | let me know, and I'll look into an alternative solution. | 
 |  | 
 | 18. I tried enabling the Python Object Allocator (PYMALLOC) code.  While  | 
 | the port built this way passes the regression test, the Numpy extension  | 
 | (I tested v19.0.0) as built with with the port's DistUtils code doesn't  | 
 | work.  Specifically, attempting to "import Numeric" provokes a core dump.   | 
 | Supposedly Numpy v20.1.0 contains a fix for this, but for reason outlined  | 
 | in item 1 above, PYMALLOC is not enabled in this release. | 
 |  | 
 | 19. sys.platform now reports "os2emx" instead of "os2".  os.name still  | 
 | reports "os2".  This change was to make it easier to distinguish between  | 
 | the VAC++ build (being maintained by Michael Muller) and the EMX build  | 
 | (this port), principally for DistUtils. | 
 |  | 
 | 20. it appears that the %W substitution in the EMX strftime() routine has  | 
 | an off-by-one bug.  strftime was listed as passing the regression tests  | 
 | in previous releases, but this fact appears to have been an oversight in  | 
 | the regression test suite.  To fix this really requires a portable  | 
 | strftime routine - I'm looking into using one from FreeBSD, but its not  | 
 | ready yet. | 
 |  | 
 | 21. previous releases of my Python ports have used the GCC optimisations  | 
 | "-O2 -fomit-frame-pointer".  After experimenting with various optimisation  | 
 | settings, including deactivating assert()ions, I have concluded that "-O2"  | 
 | appears the best compromise for GCC 2.8.1 on my hardware.  Curiously,  | 
 | deactivating assert() (via defining NDEBUG) _negatively_ impacts  | 
 | performance, allbeit only slightly, so I've chosen to leave the assert()s  | 
 | active. | 
 |  | 
 | I did try using Andrew Zabolotny's (p)gcc 2.95.2 compiler, and in  | 
 | general concluded that it produced larger objects that ran slower  | 
 | than Mattes' gcc 2.8.1 compiler. | 
 |  | 
 | Pystone ratings varied from just over 2000/s (no optimisation at all)  | 
 | to just under 3300/s (gcc 2.8.1, -O2) on my K6/2-300 system, for  | 
 | 100,000 iterations per run (rather than the default 10000). | 
 |  | 
 | As a result of the optimisation change, the Python DLL is about 10%  | 
 | smaller than in the 2.1 release, and many of the dynamically loadable  | 
 | modules are smaller too. | 
 |  | 
 | [2001/08/12] | 
 |  | 
 | 22.  As of this release, os.spawnv() and os.spawnve() now expose EMX's  | 
 | library routines rather than use the emulation in os.py. | 
 |  | 
 | In order to make use of some of the features this makes available in  | 
 | the OS/2 environment, you should peruse the relevant EMX documentation  | 
 | (EMXLIB.INF in the EMXVIEW.ZIP archive accompanying the EMX archives  | 
 | on Hobbes or LEO).  Be aware that I have exposed all the "mode" options  | 
 | supported by EMX, but there are combinations that either cannot be  | 
 | practically used by/in Python or have the potential to compromise your  | 
 | system's stability. | 
 |  | 
 | 23.  pythonpm.exe in previous releases was just python.exe with the  | 
 | WINDOWAPI linker option set in the pythonpm.def file.  In practice,  | 
 | this turns out to do nothing useful. | 
 |  | 
 | I have written a replacement which wraps the Python DLL in a genuine  | 
 | Presentation Manager application.  This version actually runs the  | 
 | Python interpreter in a separate thread from the PM shell, in order  | 
 | that PythonPM has a functioning message queue as good PM apps should. | 
 | In its current state, PythonPM's window is hidden.  It can be displayed,  | 
 | although it will have no content as nothing is ever written to the  | 
 | window.  Only the "hide" button is available.  Although the code  | 
 | has support for shutting PythonPM down when the Python interpreter is  | 
 | still busy (via the "control" menu), this is not well tested and given  | 
 | comments I've come across in EMX documentation suggesting that the  | 
 | thread killing operation has problems I would suggest caution in  | 
 | relying on this capability. | 
 |  | 
 | PythonPM processes commandline parameters normally.  The standard input,  | 
 | output and error streams are only useful if redirected, as PythonPM's  | 
 | window is not a console in any form and so cannot accept or display  | 
 | anything.  This means that the -i option is ineffective. | 
 |  | 
 | Because the Python thread doesn't create its own message queue, creating  | 
 | PM Windows and performing most PM operations is not possible from within  | 
 | this thread.  How this will affect supporting PM extensions (such as  | 
 | Tkinter using a PM port of Tcl/Tk, or wxPython using the PM port of  | 
 | WxWindows) is still being researched. | 
 |  | 
 | Note that os.fork() _DOES_NOT_WORK_ in PythonPM - SYS3175s are the result  | 
 | of trying.  os.spawnv() _does_ work.  PythonPM passes all regression tests  | 
 | that the standard Python interpreter (python.exe) passes, with the exception  | 
 | of test_fork1 and test_socket which both attempt to use os.fork(). | 
 |  | 
 | I very much want feedback on the performance, behaviour and utility of  | 
 | PythonPM.  I would like to add a PM console capability to it, but that  | 
 | will be a non-trivial effort.  I may be able to leverage the code in  | 
 | Illya Vaes' Tcl/Tk port, which would make it easier. | 
 |  | 
 | [2001/08/14] | 
 |  | 
 | 24.  os.chdir() now uses EMX's _chdir2(), which supports changing  | 
 | both drive and directory at once.  Similarly, os.getcwd() now uses  | 
 | EMX's _getcwd() which returns drive as well as path. | 
 |  | 
 | [2001/12/08] - 2.2 Beta 2 | 
 |  | 
 | 25.  pyconfig.h (previously known as config.h) is now located in the  | 
 | Include subdirectory with all other include files. | 
 |  | 
 | [2001/12/16] - 2.2 Release Candidate 1 | 
 |  | 
 | [2001/12/08] - 2.2 Final | 
 |  | 
 | [2002/03/31] - 2.2.1 Release Candidate 2 | 
 |  | 
 | [2002/04/14] - 2.2.1 Final | 
 |  | 
 | [2002/8/18] | 
 |  | 
 | 26.  now explicitly set the number of file handles available to a  | 
 | Python process to 250.  EMX default is 40, which is insufficient for the  | 
 | recently checked in security improvments to the tempfile regression  | 
 | test (test_tempfile) which tries to create 100 temporary files. | 
 |  | 
 | This setting can be overridden via the EMXOPT environment variable: | 
 |   set EMXOPT=-h250 | 
 | is equivalent to the setting currently used.  The emxbind utility (if you  | 
 | have it installed) can also be used to permanently change the setting in  | 
 | python.exe - please refer to the EMX documentation for more information. | 
 |  | 
 | ... probably other issues that I've not encountered, or don't remember :-( | 
 |  | 
 | If you encounter other difficulties with this port, which can be  | 
 | characterised as peculiar to this port rather than to the Python release, | 
 | I would like to hear about them.  However I cannot promise to be able to do  | 
 | anything to resolve such problems.  See the Contact section below... | 
 |  | 
 |  | 
 | To do... | 
 | -------- | 
 |  | 
 | In no particular order of apparent importance or likelihood... | 
 |  | 
 | - support Tkinter and/or alternative GUI (wxWindows??) | 
 |  | 
 |  | 
 | Credits | 
 | ------- | 
 |  | 
 | In addition to people identified above, I'd like to thank: | 
 | - the BDFL, Guido van Rossum, and crew for Python; | 
 | - Dr David Mertz, for trying out a pre-release of this port; | 
 | - the Python-list/comp.lang.python community; | 
 | - John Poltorak, for input about pwd/grp. | 
 |  | 
 | Contact | 
 | ------- | 
 |  | 
 | Constructive feedback, negative or positive, about this port is welcome  | 
 | and should be addressed to me at the e-mail addresses below. | 
 |  | 
 | I intend creating a private mailing list for announcements of fixes &  | 
 | updates to this port.  If you wish to receive such e-mail announcments,  | 
 | please send me an e-mail requesting that you be added to this list. | 
 |  | 
 | Andrew MacIntyre | 
 | E-mail: andymac@bullseye.apana.org.au, or andymac@pcug.org.au | 
 | Web:    http://www.andymac.org/ | 
 |  | 
 | 18 August, 2001. |