This file contains the release notes of older MacPython versions. Changes between 1.4 and 1.3.3 ------------------------------- Aside from all the changes Guido made to the machine-independent part of Python (see NEWS for those)the following mac-specific changes have been made: - Preference file and other items in the System folder now have the version number in their name, so old and new python installations can coexist. - Fixed a GUSI crash when exiting with files open. - Fixed interference with some extensions that added resources that looked like ours. - Fixed slowness of Python in the background. - About box added (at last...). - New release of CWGUSI (1.8.0) incorporated. Note that for Tcl/Tk the 4.1p1 release is still used (4.2 was a little too late). Everything ported to CW10. - Applets can now turn off argc/argv processing (so they can do their own initial AppleEvent handling). Applets can also delay opening the console window until it is actually used (and, hence, not open it at all by refraining from using it). - MiniAEFrame: Preliminary AppleScript server support. Example code provided, including an initial stab at writing CGI scripts in Python. - macfs: FindApplication() locates application given 4-char creator code. - macfs: GetDates and SetDates get and set creation date, etc. - FrameWork: preferred method of ending mainloop() is calling _quit(). - FrameWork: different menubar handling resulting in less flashing during menu creation. - FrameWork: added setarrowcursor and setwatchcursor functions. - findertools: new module that makes various finder features available. - macostools: copy file times too. - macostools: added touch() to tell finder about changes to a file. - macerrors: New module with symbolic names for all os-releated errors. - EasyDialogs: ProgressBar fixed. - aetools: start application if needed - aetools: use aetools.error for server-generated errors, MacOS.error for communication errors, etc. - Finder_7_0_Suite: New module with the "simple" finder scripting interface. - mac (aka os): xstat() returns resourcesize, creator, type in addition to stat() information. - MacOS: added DebugStr method to drop to low-level debugger. - MacOS: fixed splash() to actually draw the splash box:-) - Ctl: fixed very nasty bug in DisposeControl and object deletion. - Dlg: Added GetDialogWindow and other accessor functions - Waste: fixed bug with object hanlder installation - Waste: added tab support - time: added strftime - twit: a windowing debugger for Python (preliminary release) - BBPy: a BBEdit extension that send scripts to the Python interpreter, by Just van Rossum. The following set of changes were already in place for the 1.4b3 release: - The standard 68K Python is built for CFM68K. This means that PPC and 68K Python are now largely compatible, both supporting dynamically loaded modules, python applets, etc. As a result of this there have been numerous subtle changes in filenames for PPC plugin modules and such, but these changes should be transparent to Python programs. The one missing module in cfm68k is Macspeech, for which no CFM68K interface library is available (yet?). - Raise MemoryError on stack overflow. - Python now always uses 8-byte doubles. - Removed mactcp, macdnr and stdwin modules from standard distribution. - New releases of Tcl/Tk (4.1p1), CWGUSI (1.7.2) and Waste (1.2f) have been incorporated. - Macfs.SetFolder method added, which sets initial folder for standard file dialogs. - New py_resource module to handle PYC resources. - List mgr objects "selFlags" and "listFlags" members now accessible. - QuickDraw got a few new symbolic constants. - Qt and Cm modules now live in a separate dynamically loadable module, so other toolbox modules work if you don't have QuickTime installed. - Old sound mgr calls {Set,Get}SoundVol removed, version number interface changed. - Added convenience routines setarrowcursor and setwatchcursor to FrameWork. - Bugfixes to time.sleep(), FrameWork, macostools, - Minor fixes/additions/updates to demos and documentation in the Demo folder. - Internal changes: - Ported to CW9 - mwerks_????_config.h organization rationalized - Projects renamed to reflect architecture (ppc, cfm68k, 68k). - various defines (HAVE_CONFIG_H, USE_MAC_DYNAMIC_LOADING) no longer needed. - shared-library architecture made more conforming to metrowerks documentation. Check xx plugin projects if you have built your own dynamically loaded modules. Changes between 1.3.3 and 1.3.2 -------------------------------- A major change since 1.3.2 is in the organization of the files: The Mac folder has mac-specific demo programs, attempts at documentation and more. Browse the HTML files in Mac:Demo for more info. Also, Toolbox:bgen is not needed anymore for normal use: the relevant python modules have been moved to Mac:Lib:toolbox. Other changes: - Uses final Tk 4.1 and Tcl 7.5 distributions. - Override preferences (stored in the interpreter/applet application) allow overriding of system-wide preferences. Explained in "using.html". - New functionality in FrameWork.py: - ScrolledWindow class - enable(), settext(), setitem(), setmark(), seticon(), checkmenu() and delete() methods for menu entries. - event parameter added to idle() method - windowbounds() function helps programmer with staggering windows. - Erase only visRgn on an update event. - TextEdit interface module added - Waste interface module added - Demos for waste, including skeleton for html editor - Scrap manager interface added - Ctl.FindControl() could return reference to deleted object. Fixed. - GrafPorts have an _id attribute (address of grafport) allowing them to be compared (since a new python object is created each time). - Standard File folder no longer changed on chdir() (this was introduced in 1.3.2). - sys.argv can now be set if you option-drag or option-click a python source. - Various dialogs now have sensible defaults. - binhextree is now a bit more intelligent about when to binhex. - gensuitemodule fixed to hand '****' type arguments. Changes between 1.3.2 and 1.3.1 ------------------------------- The main reason for the 1.3.2 distribution is the availability of Tk for the mac. The Tk port and its integration in Python is definitely not bug-free, hence this distribution should be treated as beta software at best. Another major change in this release is that the Python I/O system is now based on the GUSI library. This is an I/O library that attempts to mimic a Posix I/O system. Hence, modules like socket and select are now available in MacPython. If you build dynamically loaded modules and you use any unix-like feature such as stat() calls you should compile using the GUSI include files. A third major change is that the MacOS creator code has been changed from 'PYTH' to 'Pyth', due to a conflict. This means that you will have to change the creator of all your old python programs. The distribution contains a script "FixCreator.py" that does this recursively for a whole folder. Here are all the changes since 1.3.1, in no particular order: - complex number support added - cmath module added - startup options ("option-drag" dialog) can be retrieved from the preferences file. EditPythonPrefs hasn't been updated yet, though. - Creator changed from PYTH to Pyth - {mac,os}.unlink is now also called {mac,os}.remove - {mac,os}.mkdir second arg optional - dup and fdopen calls added - select module added - socket module added - open(file, '*r') for opening resource forks has been removed. It is replaced by MacOS.openrf(file, 'r'), which returns a simple file-like object to read (or write) resource forks. - Added AppleEvent URL suite - Added AppleEvent netscape suite - QuickDraw globals are now all accessible, as Qd.qd.xxxx Mac-specific changes between 1.3 and 1.3.1 -------------------------------------- Aside from the changes mentioned here there have also been some changes in the core python, but these are not documented here. However, these changes are mainly bugfixes, so there shouldn't be any incompatabilities. - imgsgi and imgpbm modules added - Various hooks installed to allow integration with MacTk (currently disabled) - Added support for MacOS Fixed type in toolbox arguments (represented as floats in python) - Added option to keep output window open on normal termination - Decreased minimum heapsize to run interpreter - Added progress-bar to EasyDialogs - Fixed socket.getportname() - Renamed MACTCP.py to MACTCPconst.py - Many fixes to FrameWork.py: - Added window.SetPort() method - Added optional bounds and resid parameters to Window.open() - Fixed apple-menu DA handling - Fixed activate-event handling - Added default Application.makeusermenus() (File:Quit only) - Fixed bug with keyboard input handling - added idle() method, called from event loop if there are no events pending Toolbox modules: - component manager module added - quicktime module added - font manager module added - Added color window support - Added support to obtain pixmap from a window - Added BitMap type - Added GrafPort type - Added support for PenState, Patterns, FontInfo, RGB colors, - Fixed GetPen and SetPt arguments - Added read access to members of {C}GrafPort objects - Added support for cursors - Provide access to some QuickDraw globals - Fixed InsetRect, OffsetRect, MapRect - Added support for various handles such as PatHandle, CursHandle - Added functions to access members of Window objects Changes since 1.3beta3 ---------------------- - MkPluginAliases.py now works in a virgin distribution environment. It is also distributed as an applet. - hexbin from binhex.py has been fixed - various bits and pieces in readme files clarified - mkapplet bug wrt owner resource (and, hence, trouble starting applets) fixed. - Compiled with CodeWarrior 7. - AE client modules generated with gensuitemodule.py now use keyword args. - img modules updated to latest version (including pbm and sgi support). - Everything compiled with all optimization options available. Let me know if you suspect errors that are due to this. Changes since Python 1.2 for the mac ------------------------------------ - PPC python now uses a shared library organization. This allows the creation of dynamically loadable extension modules (contact me) and creation of python applets (see mkapplet.py). A number of previously builtin modules are now dynamically loaded. Dynamically loaded modules are distributed in the PlugIns folder. - Python modules can live in 'PYC ' resources (with a name equal to the module name, so many modules can live in a single file). If you put a file (in stead of a folder) in sys.path its resources will be searched. See the PackLibDir script for creating such a file. - new binhex module (partially working, hexbin has problems) - Python now has a Preferences file, editable with EditPythonPrefs. Remembered are the python 'home folder' and the initial value for sys.path. If no preferences file is found a simple one is created. NOTE: this only works correctly if you start python the first time from the correct folder. - new img modules, to read/write/convert images in various formats - new MacOS toolbox modules: AE, Ctl, Dlg, Event, List, Qd, Res, Snd and Win. These provide access to various of the MacOS toolbox interfaces. No documentation yet, but the __doc__ strings provide at least the calling sequence (and Inside Mac will give you the semantics). Minimal demos are provided for most toolbox interfaces, and the 'scripts' directory has some more examples. - AppleEvent client interfaces can be generated from aete/aeut resources. No support for objects yet, nor for server interfaces. - Lib:mac:FrameWork.py has an application framework (under construction). - (PPC Only) support for building Python applets: tiny standalone python applications. - fp = open(filename, '*r') opens resource-fork of a file for reading (and similar for writing). - option-dragging a file to the interpreter (or immedeately pressing