1 This is a port of Python 2.3.4 to OS/2 using the EMX development tools
2 =========================================================================
4 What's new since the previous release
5 -------------------------------------
7 - AF_UNIX (Unix domain, or local IPC) sockets now supported.
8 - a core-dump causing bug associated with file buffers has been
10 - added support for os.spawnvp(), os.spawnvpe(), os.spawnlp()
14 Licenses and info about Python and EMX
15 --------------------------------------
17 Please read the file README.Python-2.3.3 included in this package for
18 information about Python 2.3.3. This file is the README file from the
19 Python 2.3.3 source distribution available via http://www.python.org/
20 and its mirrors. The file LICENCE.Python-2.3.3 is the text of the Licence
21 from the Python 2.3.3 source distribution.
23 Note that the EMX package that this package depends on is released under
24 the GNU General Public Licence. Please refer to the documentation
25 accompanying the EMX Runtime libraries for more information about the
26 implications of this. A copy of version 2 of the GPL is included as the
29 Readline and GDBM are covered by the GNU General Public Licence. I think
30 Eberhard Mattes' porting changes to BSD DB v1.85 are also GPL'ed (BSD DB
31 itself is BSD Licenced). ncurses and expat appear to be covered by MIT
32 style licences - please refer to the source distributions for more detail.
33 zlib is distributable under a very free license. GNU MP and GNU UFC are
34 under the GNU LGPL (see file COPYING.lib).
36 My patches to the Python-2.x source distributions, and any other packages
37 used in this port, are placed in the public domain.
39 This software is provided 'as-is', without any express or implied warranty.
40 In no event will the author be held liable for any damages arising from the
43 I do hope however that it proves useful to someone.
49 There have been ports of previous versions of Python to OS/2.
51 The best known would be that by Jeff Rush, most recently of version
52 1.5.2. Jeff used IBM's Visual Age C++ (v3) for his ports, and his
53 patches have been included in the Python 2.3.3 source distribution.
55 Andy Zabolotny implemented a port of Python v1.5.2 using the EMX
56 development tools. His patches against the Python v1.5.2 source
57 distribution have become the core of this port, and without his efforts
58 this port wouldn't exist. Andy's port also appears to have been
59 compiled with his port of gcc 2.95.2 to EMX, which I have but have
60 chosen not to use for the binary distribution of this port (see item 16
61 of the "YOU HAVE BEEN WARNED" section below).
63 It is possible to have these earlier ports still usable after installing
64 this port - see the README.os2emx.multiple_versions file, contributed by
65 Dr David Mertz, for a suggested approach to achieving this.
71 This package requires the EMX Runtime package, available from the
72 Hobbes (http://hobbes.nmsu.edu/) and LEO (http://archiv.leo.org/)
73 archives of OS/2 software. I have used EMX version 0.9d fix04 in
76 My development system is running OS/2 v4 with fixpack 12.
78 3rd party software which has been linked into dynamically loaded modules:
79 - ncurses (see http://dickey.his.com/ for more info, v5.2)
80 - GNU Readline (Kai Uwe Rommel's port available from Hobbes or LEO, v2.1)
81 - GNU GDBM (Kai Uwe Rommel's port available from Hobbes or LEO, v1.7.3)
82 - zlib (derived from Hung-Chi Chu's port of v1.1.3, v1.1.4)
83 - expat (distributed with Python, v1.95.6)
84 - GNU MP (Peter Meerwald's port available from LEO, v2.0.2)
85 - GNU UFC (Kai Uwe Rommel's port available from LEO, v2.0.4)
91 I have attempted to make this port as complete and functional as I can,
92 notwithstanding the issues in the "YOU HAVE BEEN WARNED" section below.
96 Python.exe is linked as an a.out executable, ie using EMX method E1
97 to compile & link the executable. This is so that fork() works (see
98 "YOU HAVE BEEN WARNED" item 1).
100 Python23.dll is created as a normal OMF DLL, with an OMF import
101 library and module definition file. There is also an a.out (.a) import
102 library to support linking the DLL to a.out executables. The DLL
103 requires the EMX runtime DLLs.
105 This port has been built with complete support for multithreading.
109 With the exception of modules that have a significant code size, or are
110 not recommended or desired for normal use, the standard modules are now
111 built into the core DLL rather than configured as dynamically loadable
112 modules. This is for both reasons of performance (startup time) and
113 memory use (lots of small DLLs fragment the address space).
115 I haven't yet changed the building of Python's dynamically loadable
116 modules over to using the DistUtils.
118 See "YOU HAVE BEEN WARNED" item 3 for notes about the fcntl module, and
119 "YOU HAVE BEEN WARNED" item 10 for notes about the pwd and grp modules.
121 This port supports case sensitive module import semantics, matching
122 the Windows release. This can be deactivated by setting the PYTHONCASEOK
123 environment variable (the value doesn't matter) - see "YOU HAVE BEEN WARNED"
128 Where I've been able to locate the required 3rd party packages already
129 ported to OS/2, I've built and included them.
131 These include ncurses (_curses, _curses_panel), BSD DB (bsddb185),
132 GNU GDBM (gdbm, dbm), zlib (zlib), GNU Readline (readline), GNU MP (mpz)
135 Expat is now included in the Python release sourceball, and the pyexpat
136 module is always built.
138 I have built these modules statically linked against the 3rd party
139 libraries. Unfortunately my attempts to use the dll version of GNU
140 readline have been a dismal failure, in that when the dynamically
141 linked readline module is active other modules immediately provoke a
142 core dump when imported.
144 Only the BSD DB package (part of the BSD package distributed with EMX)
145 needs source modifications to be used for this port, pertaining to use
146 of errno with multithreading.
148 The other packages, except for ncurses and zlib, needed Makefile changes
149 for multithreading support but no source changes.
151 The _curses_panel module is a potential problem - see "YOU HAVE BEEN
154 Upstream source patches:
156 No updates to the Python 2.3.3 release have become available.
158 Eberhard Mattes' EMXFIX04 update to his EMX 0.9d tools suite includes
159 bug fixes for the BSD DB library. The bsddb module included in this
160 port incorporates these fixes.
162 Library and other distributed Python code:
164 The Python standard library lives in the Lib directory. All the standard
165 library code included with the Python 2.3.3 source distribution is included
166 in the binary archive, with the exception of the dos-8x3 and tkinter
167 subdirectories which have been omitted to reduce the size of the binary
168 archive - the dos-8x3 components are unnecessary duplicates and Tkinter
169 is not supported by this port (yet). All the plat-* subdirectories in the
170 source distribution have also been omitted, except for the plat-os2emx
173 The Tools and Demo directories contain a collection of Python scripts.
174 To reduce the size of the binary archive, the Demo/sgi, Demo/Tix,
175 Demo/tkinter, Tools/audiopy and Tools/IDLE subdirectories have been
176 omitted as not being supported by this port. The Misc directory has
179 All subdirectories omitted from the binary archive can be reconstituted
180 from the Python 2.3.3 source distribution, if desired.
182 Support for building Python extensions:
184 The Config subdirectory contains the files describing the configuration
185 of the interpreter and the Makefile, import libraries for the Python DLL,
186 and the module definition file used to create the Python DLL. The
187 Include subdirectory contains all the standard Python header files
188 needed for building extensions.
190 As I don't have the Visual Age C++ compiler, I've made no attempt to
191 have this port support extensions built with that compiler.
197 This port is packaged as follows:
198 - python-2.3.3-os2emx-bin-03????.zip (binaries, library modules)
199 - python-2.3.3-os2emx-src-03???? (patches+makefiles for non-Python code)
201 As all the Python specific patches for the port are now part of the
202 Python release tarball, only the patches and makefiles involved in
203 building external libraries for optional extensions are included in
206 Documentation for the Python language, as well as the Python 2.3.3
207 source distibution, can be obtained from the Python website
208 (http://www.python.org/) or the Python project pages at Sourceforge
209 (http://sf.net/projects/python/).
215 Obtain and install, as per the included instructions, the EMX runtime
218 Unpack this archive, preserving the subdirectories, in the root directory
219 of the drive where you want Python to live.
221 Add the Python directory (eg C:\Python23) to the PATH and LIBPATH
222 variables in CONFIG.SYS.
224 You should then set the PYTHONHOME and PYTHONPATH environment variables
227 PYTHONHOME should be set to Python's top level directory. PYTHONPATH
228 should be set to the semicolon separated list of principal Python library
231 SET PYTHONHOME=F:/Python23
232 SET PYTHONPATH=F:/Python23/Lib;F:/Python23/Lib/plat-os2emx;
233 F:/Python23/Lib/lib-dynload;F:/Python23/Lib/site-packages
235 NOTE!: the PYTHONPATH setting above is linewrapped for this document - it
236 should all be on one line in CONFIG.SYS!
238 If you wish to use the curses module, you should set the TERM and TERMINFO
239 environment variables appropriately.
241 If you don't already have ncurses installed, I have included a copy of the
242 EMX subset of the Terminfo database included with the ncurses-5.2 source
243 distribution. This can be used by setting the TERMINFO environment variable
244 to the path of the Terminfo subdirectory below the Python home directory.
245 On my system this looks like:
246 SET TERMINFO=F:/Python23/Terminfo
248 For the TERM environment variable, I would try one of the following:
253 You will have to reboot your system for these changes to CONFIG.SYS to take
256 If you wish to compile all the included Python library modules to bytecode,
257 you can change into the Python home directory and run the COMPILEALL.CMD
260 You can execute the regression tests included with the Python 2.3.3 source
261 distribution by changing to the Python 2.3.3 home directory and executing the
262 REGRTEST.CMD batch file. The following tests are known to fail at this
264 - test_mhlib (I don't know of any port of MH to OS/2);
265 - test_strptime (see "YOU HAVE BEEN WARNED" item 22);
266 - test_time (see "YOU HAVE BEEN WARNED" item 22);
267 - test_posixpath (see "YOU HAVE BEEN WARNED" item 23).
269 Note that some of the network related tests expect the loopback interface
270 (interface "lo", with IP address 127.0.0.1) to be enabled, which from my
271 experience is not the default configuration. Additionally, test_popen2
272 expects the "cat" utility (such as found in ports of the GNU tools) to
279 With the EMX port now checked into Python's CVS repository, the build
280 infrastructure is part of the Python release sourceball.
284 First and foremost, you need an operational EMX development installation -
285 EMX v0.9d with fix04 (the latest at time of writing) & the gcc 2.8.1
286 compiler released by Eberhard Mattes is the recommended setup.
288 If you have a different version of gcc installed, see "YOU HAVE BEEN
291 Other items of software required:-
293 - GNU make (I'm using v3.76.1)
294 - rm, cp, mkdir from the GNU file utilities package
300 0. all changes mentioned apply to files in the PC/os2emx subdirectory
301 of the Python release source tree. make is also executed from this
302 directory, so change into this directory before proceeding.
304 1. decide if you need to change the location of the Python installation.
305 If you wish to do this, set the value of the Makefile variable LIB_DIR
306 to the directory you wish to use for PYTHONHOME
307 (eg /usr/local/lib/python2.3.3).
309 If you want Python to find its library without the PYTHONHOME
310 environment variable set, set the value of the Makefile variable
311 FIXED_PYHOME to "yes" (uncomment the appropriate line).
313 2. If you wish the Python executables (python.exe, pythonpm.exe & pgen.exe)
314 to be installed in a directory other than the PYTHONHOME directory, set
315 the value of the Makefile variable EXE_DIR to the appropriate directory.
317 3. If you wish the Python core DLL (python23.dll) to be installed in a
318 directory other than the directory in which the Python executables are
319 installed (by default, the PYTHONHOME directory), set the value of the
320 Makefile variable DLL_DIR to the appropriate directory. This DLL must
321 be placed in a directory on the system's LIBPATH, or that gets set
322 with BEGINLIBPATH or ENDLIBPATH.
324 4. If you have installed any of the libraries that can be used to build
325 optional Python modules, set the value of the relevant HAVE_<package>
326 Makefile variable to "yes". The Makefile currently supports:
328 library Makefile variable
329 ........................................
330 zlib (1.1.4) HAVE_ZLIB
331 GNU UltraFast Crypt HAVE_UFC
332 Tcl/Tk HAVE_TCLTK (not known to work)
334 GNU Readline HAVE_GREADLINE
335 BSD DB (v1.85) HAVE_BSDDB
340 Please note that you need to check that what you have installed
341 is compatible with Python's build options. In particular, the
342 BSD DB v1.85 library needs to be rebuilt with a source patch for
343 multithread support (doesn't change the library's reentrant status
344 but allows it to be linked to Python which is multithreaded).
345 Widely available binary packages of other librarys & DLLs are
346 not built/linked with multithread support. Beware!
348 Also note that the Makefile currently expects any libraries to be
349 found with the default library search path. You may need to add
350 -L switches to the LDFLAGS Makefile variable if you have installed
351 libraries in directories not in the default search path (which can
352 be controlled by the LIBRARY_PATH environment variable used by EMX).
356 It is usually a good idea to redirect the stdout and stderr streams
357 of the make process to log files, so that you can review any messages.
361 This runs the Python regression tests, and completion is a sign of
362 a usable build. You should check the list of skipped modules to
363 ensure that any optional modules you selected have been built;
364 checking the list of failures against the list of known failures
365 elsewhere in this document is also prudent.
368 >>>>>> NOT YET COMPLETE <<<<<<
370 8. change to a directory outside the Python source tree and start Python.
371 Check the version and build date to confirm satisfactory installation.
374 YOU HAVE BEEN WARNED!!
375 ----------------------
377 I know about a number of nasties in this port.
379 1. Eberhard Mattes, author of EMX, writes in his documentation that fork()
380 is very inefficient in the OS/2 environment. It also requires that the
381 executable be linked in a.out format rather than OMF. Use the os.exec
382 and/or the os.spawn family of functions where possible.
384 2. In the absence of GNU Readline, terminating the interpreter requires a
385 control-Z (^Z) followed by a carriage return. Jeff Rush documented this
386 problem in his Python 1.5.2 port. With Readline, a control-D (^D) works
387 as per the standard Unix environment.
389 3. EMX only has a partial implementation of fcntl(). The fcntl module
390 in this port supports what EMX supports. If fcntl is important to you,
391 please review the EMX C Library Reference (included in .INF format in the
392 EMXVIEW.ZIP archive as part of the complete EMX development tools suite).
393 Because of other side-effects I have modified the test_fcntl.py test
394 script to deactivate the exercising of the missing functionality.
396 4. the PyBSDDB3 module has been imported into the Python standard
397 library, with the intent of superceding the BSDDB 1.85 module (bsddb).
398 As I don't yet have a satisfactory port of Sleepcat's more recent DB
399 library (3.3.x/4.0.x/4.1.x), I haven't included a binary of this
400 module. I have left the Python part of the PyBSDDB package in this
401 distribution for completeness.
403 5. As a consequence of the PyBSDDB3 module being imported, the former
404 BSD DB (bsddb) module, linked against the DB v1.85 library from EMX,
405 has been renamed bsddb185. The bsddb185 module will not be built by
406 default on most platforms, but in the absence of a PyBSDDB3 module I
407 have retained it in the EMX port.
409 Version 1.85 of the DB library is widely known to have bugs, although
410 some patches have become available (and are incorporated into the
411 included bsddb185 module). Unless you have problems with software
412 licenses which would rule out GDBM (and the dbm module because it is
413 linked against the GDBM library) or need it for file format compatibility,
414 you may be better off deleting it and relying on GDBM.
416 Any code you have which uses the v1.85 bsddb module can be modified to
417 use the renamed module by changing
423 import bsddb185 as bsddb
425 6. The readline module has been linked against ncurses rather than the
426 termcap library supplied with EMX.
428 7. I have configured this port to use "/" as the preferred path separator
429 character, rather than "\" ('\\'), in line with the convention supported
430 by EMX. Backslashes are still supported of course, and still appear in
431 unexpected places due to outside sources that don't get normalised.
433 8. While the DistUtils components are now functional, other
434 packaging/binary handling tools and utilities such as those included in
435 the Demo and Tools directories - freeze in particular - are unlikely to
436 work. If you do get them going, I'd like to know about your success.
438 9. I haven't set out to support the [BEGIN|END]LIBPATH functionality
439 supported by one of the earlier ports (Rush's??). If it works let me know.
441 10. As a result of the limitations imposed by EMX's library routines, the
442 standard extension module pwd only synthesises a simple passwd database,
443 and the grp module cannot be supported at all.
445 I have written pure Python substitutes for pwd and grp, which can process
446 real passwd and group files for those applications (such as MailMan) that
447 require more than EMX emulates. I have placed pwd.py and grp.py in
448 Lib/plat-os2emx, which is usually before Lib/lib-dynload (which contains
449 pwd.pyd) in the PYTHONPATH. If you have become attached to what pwd.pyd
450 supports, you can put Lib/lib-dynload before Lib/plat-os2emx in PYTHONPATH
451 or delete/rename pwd.py & grp.py.
453 pwd.py & grp.py support locating their data files by looking in the
454 environment for them in the following sequence:
455 pwd.py: $ETC_PASSWD (%ETC_PASSWD%)
456 $ETC/passwd (%ETC%/passwd)
457 $PYTHONHOME/Etc/passwd (%PYTHONHOME%/Etc/passwd)
458 grp.py: $ETC_GROUP (%ETC_GROUP%)
459 $ETC/group (%ETC%/group)
460 $PYTHONHOME/Etc/group (%PYTHONHOME%/Etc/group)
462 The ETC_PASSWD and ETC_GROUP environment variables are intended to allow
463 support for multiple passwd/grp files, where other applications may not
464 support as wide a variety of input variations (drive remappings,
467 Both modules support using either the ":" character (Unix standard) or
468 ";" (OS/2, DOS, Windows standard) field separator character, and pwd.py
469 implements the following drive letter conversions for the home_directory and
470 shell fields (for the ":" separator only):
474 Example versions of passwd and group are in the Etc subdirectory. The
475 regression tests (test_pwd and test_grp) will fail if valid password and
476 group files cannot be found, but should pass otherwise.
478 Be aware that Python's pwd & group modules are for reading password and
479 group information only.
481 11. EMX's termios routines don't support all of the functionality now
482 exposed by the termios module - refer to the EMX documentation to find
483 out what is supported.
485 12. The case sensitive import semantics introduced in Python 2.1 for other
486 case insensitive but case preserving file/operating systems (Windows etc),
487 have been incorporated into this port, and are active by default. Setting
488 the PYTHONCASEOK environment variable (to any value) reverts to the
489 previous (case insensitive) semantics. This can be an issue with some
490 file management utilities that do not preserve the case of file and
493 13. Because I am statically linking ncurses, the _curses_panel
494 module has potential problems arising from separate library data areas.
495 To avoid this, I have configured the _curses_.pyd (imported as
496 "_curses_panel") to import the ncurses symbols it needs from _curses.dll
497 (which is the curses module, but with a .dll extension rather than .pyd
498 so that the dynamic loader can actually import the symbols from it as a
501 The site module (Lib/site.py) has code added to tweak BEGINLIBPATH so
502 that _curses.dll is found when _curses_panel is imported. If you have
503 problems attempting to use the _curses_panel support please let me know,
504 and I'll have another look at this.
506 14. sys.platform reports "os2emx" instead of "os2". os.name still
507 reports "os2". This change was to make it easier to distinguish between
508 the VAC++ build (formerly maintained by Michael Muller) and the EMX build
509 (this port), principally for DistUtils.
511 15. it appears that the %W substitution in the EMX strftime() routine has
512 an off-by-one bug. strftime was listed as passing the regression tests
513 in previous releases, but this fact appears to have been an oversight in
514 the regression test suite. To fix this really requires a portable
515 strftime routine - I'm looking into using one from FreeBSD, but its not
518 16. I have successfully built this port with Andy Zabolotny's ports of
519 pgcc 2.95 and gcc 3.2.1, in addition to EM's gcc 2.8.1. To use the
520 bsddb185 module with the gcc 3.2.1 build, I had to recompile the DB library
521 with gcc 3.2.1 - I don't know why, but trying to import the module built
522 against a DB library compiled with gcc 2.8.1 would result in a SYS3175
525 I have not attempted to compile Python with any version of gcc prior to
528 This release sees the default optimisation change to
529 "-O3 -fomit-frame-pointer -mprobe". This works fine too for pgcc 2.95
530 but not for gcc 3.2.1.
532 With gcc 3.2.1, -O3 causes 2 unexpected test failures: test_format and
533 test_unicode. Both these tests pass if -O2 is instead of -O3 with this
534 compiler, and the performance difference is negligible (in contrast to
535 gcc 2.8.1 and pgcc 2.95, where the performance difference between the
536 2 optimisation settings approaches 10%).
538 17. os.spawnv() and os.spawnve() expose EMX's library routines rather
539 than use the emulation in os.py.
541 In order to make use of some of the features this makes available in
542 the OS/2 environment, you should peruse the relevant EMX documentation
543 (EMXLIB.INF in the EMXVIEW.ZIP archive accompanying the EMX archives
544 on Hobbes or LEO). Be aware that I have exposed all the "mode" options
545 supported by EMX, but there are combinations that either cannot be
546 practically used by/in Python or have the potential to compromise your
549 18. pythonpm.exe used to be just python.exe with the WINDOWAPI linker
550 option set in the pythonpm.def file. In practice, this turns out to do
553 I have written a replacement which wraps the Python DLL in a genuine
554 Presentation Manager application. This version actually runs the
555 Python interpreter in a separate thread from the PM shell, in order
556 that PythonPM has a functioning message queue as good PM apps should.
557 In its current state, PythonPM's window is hidden. It can be displayed,
558 although it will have no content as nothing is ever written to the
559 window. Only the "hide" button is available. Although the code
560 has support for shutting PythonPM down when the Python interpreter is
561 still busy (via the "control" menu), this is not well tested and given
562 comments I've come across in EMX documentation suggesting that the
563 thread killing operation has problems I would suggest caution in
564 relying on this capability.
566 PythonPM processes commandline parameters normally. The standard input,
567 output and error streams are only useful if redirected, as PythonPM's
568 window is not a console in any form and so cannot accept or display
569 anything. This means that the -i option is ineffective.
571 Because the Python thread doesn't create its own message queue, creating
572 PM Windows and performing most PM operations is not possible from within
573 this thread. How this will affect supporting PM extensions (such as
574 Tkinter using a PM port of Tcl/Tk, or wxPython using the PM port of
575 WxWindows) is still being researched.
577 Note that os.fork() _DOES_NOT_WORK_ in PythonPM - SYS3175s are the result
578 of trying. os.spawnv() _does_ work. PythonPM passes all regression tests
579 that the standard Python interpreter (python.exe) passes, with the exception
580 of test_fork1 and test_socket which both attempt to use os.fork().
582 I very much want feedback on the performance, behaviour and utility of
583 PythonPM. I would like to add a PM console capability to it, but that
584 will be a non-trivial effort. I may be able to leverage the code in
585 Illya Vaes' Tcl/Tk port, which would make it easier.
587 19. os.chdir() uses EMX's _chdir2(), which supports changing both drive
588 and directory at once. Similarly, os.getcwd() uses EMX's _getcwd()
589 which returns drive as well as path.
591 20. pyconfig.h is installed in the Include subdirectory with all
594 21. the default build explicitly sets the number of file handles
595 available to a Python process to 250. EMX default is 40, which is
596 insufficient for the tempfile regression test (test_tempfile) which
597 tries to create 100 temporary files.
599 This setting can be overridden via the EMXOPT environment variable:
601 is equivalent to the setting currently used. The emxbind utility (if you
602 have it installed) can also be used to permanently change the setting in
603 python.exe - please refer to the EMX documentation for more information.
605 22. a pure python strptime module is now part of the Python standard
606 library, superceding a platform specific extension module. This module
607 leverages the strftime module, and as a result test_strptime fails
608 due to the EMX strftime bug in item 20 above.
610 23. test_posixpath attempts to exercise various Posix path related
611 functionality. Most of the sub-tests pass, but the "ismount" and
612 "samestat" subtests fail:
613 - EMX provides not satisfactory mount point emulation, so "ismount"
615 - EMX documents that successive stat() calls will produce different
616 results, so "samestat" cannot succeed.
618 test_posixpath should skip these tests on EMX.
620 24. I have had a report that attempting to use the Bittorrent package
621 (http://bitconjurer.org/BitTorrent/) with this port causes traps not
622 long after starting the download; this using the "headless" download
623 script on eCS v1.1. I have not been able to duplicate this myself,
624 but the indications I have suggest a failure in the 32 bit TCP/IP
625 stack (v4.3.2? on eCS v1.1) - on my v4.0 FP12 system with MPTS fixpack
626 WR8425 applied (16 bit TCP/IP stack v4.02), BitTorrent appears to work
627 normally in testing on a 100Mbit LAN. With the curses.panel fix (see
628 item 13 above), the BitTorrent curses downloader works too. I'd
629 appreciate any success or failure reports with BitTorrent, though
630 I've regretfully recommended that the person who reported the failure
631 take this up with eCS support. Since this report, I have received a
632 followup which suggests that the problem may be due to bugs in the
633 32bit TCP/IP stack (TCP/IP v4.1 and later, v4.3 in particular).
634 I think it suffices to say that BitTorrent is a fair stress test of a
635 system's networking capability.
637 25. AF_UNIX sockets, otherwise known as Unix domain sockets, are now
638 supported. Unfortunately, there are some traps arising from the
639 implementation in IBM's TCP/IP stack:-
640 - the path name must start with '\\socket\\' ('/socket/' won't work!),
641 with the length of the full path name less than 108 characters;
642 - unlike Unix, the socket endpoints don't exist in the filesystem;
643 - by default, sockets are in binary mode.
645 ... probably other issues that I've not encountered, or don't remember :-(
647 If you encounter other difficulties with this port, which can be
648 characterised as peculiar to this port rather than to the Python release,
649 I would like to hear about them. However I cannot promise to be able to do
650 anything to resolve such problems. See the Contact section below...
656 In no particular order of apparent importance or likelihood...
658 - support Tkinter and/or alternative GUI (wxWindows??)
664 In addition to people identified above, I'd like to thank:
665 - the BDFL, Guido van Rossum, and crew for Python;
666 - Dr David Mertz, for trying out a pre-release of this port;
667 - the Python-list/comp.lang.python community;
668 - John Poltorak, for input about pwd/grp.
673 Constructive feedback, negative or positive, about this port is welcome
674 and should be addressed to me at the e-mail addresses below.
676 I have a private mailing list for announcements of fixes & updates to
677 this port. If you wish to receive such e-mail announcments, please send
678 me an e-mail requesting that you be added to this list.
681 E-mail: andymac@bullseye.apana.org.au, or andymac@pcug.org.au
682 Web: http://www.andymac.org/