diff options
author | Jack Jansen <jack.jansen@cwi.nl> | 1997-05-28 12:01:14 (GMT) |
---|---|---|
committer | Jack Jansen <jack.jansen@cwi.nl> | 1997-05-28 12:01:14 (GMT) |
commit | 7701fd9af2e310cd0879a918dcd30507b1fef542 (patch) | |
tree | e74320e70bf91bc3f301646e33f17089790f1388 | |
parent | 001aa86d34228020db2dc168e22712b83bb8d8f5 (diff) | |
download | cpython-7701fd9af2e310cd0879a918dcd30507b1fef542.zip cpython-7701fd9af2e310cd0879a918dcd30507b1fef542.tar.gz cpython-7701fd9af2e310cd0879a918dcd30507b1fef542.tar.bz2 |
Changed release note structure:
- Relnotes contains current release notes
- HISTORY contains all old release notes
-rw-r--r-- | Mac/HISTORY | 602 | ||||
-rw-r--r-- | Mac/Relnotes | 55 | ||||
-rw-r--r-- | Mac/Relnotes-1.1 | 131 | ||||
-rw-r--r-- | Mac/Relnotes-1.2 | 169 | ||||
-rw-r--r-- | Mac/Relnotes-1.3 | 118 | ||||
-rw-r--r-- | Mac/Relnotes-1.3.3 | 125 | ||||
-rw-r--r-- | Mac/Relnotes-1.4b3 | 171 | ||||
-rw-r--r-- | Mac/Relnotes-source | 54 |
8 files changed, 663 insertions, 762 deletions
diff --git a/Mac/HISTORY b/Mac/HISTORY new file mode 100644 index 0000000..5eb8fec --- /dev/null +++ b/Mac/HISTORY @@ -0,0 +1,602 @@ +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 + <option> after launching python) will bring up an Options dialog + allowing you to set options like import-tracing, etc. +- MacOS module method added: GetErrorString(OSErr) -> error string +- There is now a numbering convention for resource-ID's: + 128-255 Resources used by the interpreter itself + 256-511 Resources used by standard modules + 512- Resources for applications +- macfs module changes: + - StandardGetFile without type arguments now shows all files + - PromptGetFile(prompt, ...) is like StandardGetFile but with a + prompt + - GetDirectory (let user select a folder) added + - GetFInfo and SetFInfo methods of FSSpec objects get/set finder + info. FInfo objects have attributes Creator, Type, etc. + - FindFolder (locate trash/preferences/etc) added +- mactcp/macdnr changes: bug fix wrt idle-loop. +- EditPythonPrefs script: change initial sys.path and python home + folder +- (PPC only) MkPluginAliases: Setup aliases for dynamically loadable + modules that live in a single shared library +- PackLibDir: Convert Lib directory to a single resource file + containing all .pyc code +- fixfiletypes: Set file types based on file extension over a whole + tree. +- RunLibScript: Run any script as main program, optionally redirecting + stdin/stdout, supplying arguments, etc. +- binhextree: Binhex all files in a tree, depending on the extension. +- (PPC only) mkapplet: Create a python applet from a sourcefile and + (optional) resourcefile. + + PYTHON 1.2 FOR THE MACINTOSH + **************************** + +Python can be built on the Mac using either THINK C 6.0 (or 7.0), or +CodeWarrior 5.0 (for 68K and PPC). In the past it has also been compiled +with earlier versions of Think, but no guarantees are made that the +source is still compatible with those versions. (Think C 5.0 appears +to be OK.) Likewise, new compiler versions may effectively change the +language accepted (or the library provided!) and thus cause problems. + +MPW is a special case -- it used to be possible to build Python as +an MPW tool using MPW 3.2, and this may still work, but I haven't +tried this lately. What I have tried, however, is building Python +as a shared library for CFM-68K, using the Symantec C compiler for MPW. +See subdirectory MPW and the README file there for more info. + + +1. Using Think C 6.0 (or 7.0) +============================= + +1.1 The directory structure +--------------------------- + +I duplicate the UNIX directory structure from the distribution. The +subdirectories needed to compile are: Mac, Include, Parser, Python, +Objects, Modules. (Don't bother with Grammar and the parser +generator, nor with the Doc subdirectory.) + +For running and testing, you also need Lib and its subdirectories test +and stdwin. You could also copy some things from the Demo/stdwin +directory (unfortunately most other demos are UNIX specific and even +many stdwin demos are). + +Make sure there is no config.c file in the Modules subdirectory (if +you copy from a directory where you have done a UNIX build this might +occur). Also don't use the config.h generated on UNIX. + +1.2 The project file +-------------------- + +I put all source files in one project, which I place in the parent +directory of the source directories. + +1.2.1 Project type + +(This is the Set Project Type... dialog in the Project menu.) + +Set the creator to PYTH; turn on "far data"; leave "far code" and +"separate strs" unchecked (they just serve to bloat the application). +A partition size of 1000K should be enough to run the standard test +suite (which requires a lot of memory because it stress tests the +parser quite a bit) and most demos or medium-size applications. The +interpreter will do basic things in as little at 500K but this may +prevent parsing larger modules. + +1.2.2 Compiler options + +(This is the Options -> THINK C ... dialog in the Edit menu.) + + - Start with Factory Settings. + + - In the Prefix, remove #include <MacHeaders> and add + #define HAVE_CONFIG_H + + - Choose any optimizer and debugger settings you like. - You + can choose 4-byte ints if you want. This requires that you + rebuild the ANSI and unix libraries with 4-bytes ints as well + (better make copies with names like ANSI 32 bit). With 4-byte + ints the interpreter is marginally bigger and somewhat (~10%) + slower, but Python programs can use strings and lists with + more than 32000 items (with 2-byte ints these can cause + crashes). The range of Python integers is not affected (these + are always represented as longs). In fact, nowadays I always + use 4-byte integers, since it is actually rather annoying that + strings >= 64K cause crashes. + +1.2.3 Files to add + +(This is the Add Files... dialog in the Source menu.) + +The following source files must be added to the project. I use a +separate segment for each begin letter -- this avoids segment +overflow, except for 'c', where you have to put either ceval.c or +compile.c in a separate segment. You could also group them by +subdirectory or function, but you may still have to split segments +arbitrarily because of the 32000 bytes restriction. + + - From Mac: all .c files. + + - From Parser: acceler.c, grammar1.c, + myreadline.c, node.c, parser.c, parsetok.c, tokenizer.c. + + - From Python: bltinmodule.c, ceval.c, cgensupport.c, + compile.c, errors.c, getargs.c getopt.c, graminit.c, import.c, + importdl.c, marshal.c, modsupport.c, mystrtoul.c, + pythonmain.c, pythonrun.c, sigcheck.c, structmember.c, + sysmodule.c, traceback.c (i.e. all .c files except dup2.c, + fmod.c, frozenmain.c, getcwd.c, getmtime.c, memmove.c, + sigcheck.c, strerror.c, strtod.c, thread.c) + + - From Objects: all .c files except xxobject.c. + + - From Modules: all the modules listed in config.c (in the Mac + subdirectory) in the initializer for inittab[], before + "ADDMODULE MARKER 2". Also add md5c.c if you add md5module.c, + and regexpr.c if you add regexmodule.c. (You'll find + macmodule.c in the Mac subdirectory, so it should already have + been added in a previous step.) Note that for most modules, + the source file is called <name>module.c, but for a few long + module names it is just <module>.c. Don't add stdwinmodule.c + yet, + +The following THINK C libraries must be added: from Standard +Libraries, ANSI and unix; from Mac Libraries, MacTraps. I put each +library in a separate segment. Also see my earlier remark on 4-byte +ints. + +1.4 Adding STDWIN +----------------- + +STDWIN is built in two separate projects: stdwin.pi contains the core +STDWIN implementation from Ports/mac, textedit.pi contains the files +from Packs/textedit. Use the same compiler options as for Python and +the same general source setup (in a sister directory of the toplevel +Python directory). Put all sources in the same segment. To +stdwin.pi, also add Tools/strdup.c and Gen/wtextbreak.c. + +The two projects can now be added as libraries to the Python project. +You must also add stdwinmodule.c and add "#define USE_STDWIN" to the +Prefix in the compiler options dialog (this only affects macmain.c and +config.c). + +Note that stdwinmodule.c contains an #include statement that +references "stdwin.h" by relative path name -- if the stdwin toplevel +directory is not a sibling of the python toplevel directory, you may +have to adjust the number of colons in the pathname. + +1.5 Resources +------------- + +Since I created them with ResEdit I have no text source of the +resources needed to give the application an icon etc... You can copy +the size, bundle, file reference and icon resources from the +distributed Python application with ResEdit. THINK C automatically +copies resources into the application file from a file +<projectname>.rsrc. + +1.6 Think C 5.0 +--------------- + +Tim Gilbert adds one note that will be helpful to future Think C 5.0 +users: When you have a really big project like python, and you want to +compile and run it, if you just hit Command-R, often Think C will +compile the remaining files, think for a moment, and then give you a +warning "internal error(ZREF)--please remove objects." Don't listen +to it. It is lying. What you should do instead is "Check Link..." +and _then_ hit Run. Why? Ask Symantec. + + +2. Using MicroWerks CodeWarrior 5.0 +=================================== + +Essentially, follow the instructions for Think C. + +XXX Should at least list the project options. + + +--Guido van Rossum, CWI, Amsterdam <Guido.van.Rossum@cwi.nl> +<URL:http://www.cwi.nl/cwi/people/Guido.van.Rossum.html> + + PYTHON RELEASE NOTES FOR THE MACINTOSH + VERSION 1.1 + +For the most part, Python on the Mac works just like Python under UNIX. +The most important differences are: + +- Since there is no shell environment on the Mac, the start-up file + has a fixed name: PythonStartup. If a file by this name exists + (either in the current folder or in the system folder) it is executed + when an interactive interpreter is started. + +- The default search path for modules is different: first the current + directory is searched, then the subdirectories 'lib', 'lib:stdwin' and + 'demo'. As always, you can change this (e.g. in your PythonStartup + file) by assigning or appending to sys.path -- use Macintosh pathnames! + (The default contains no absolute paths because these are unlikely + to make sense on other people's hard disks.) + +- The user interface for typing interactive commands is different. + This is actually the THINK C console I/O module, which is based on + the Mac toolbox TextEdit. A standard Edit menu provides Cut, Copy, + Paste and Clear (Undo is only there for Desk Accessories). A minimal + File menu provides Quit, which immediately exits the application, + without the usual cleanup. You can Copy from previous output, + but you can't scroll back beyond the 24x80 screen. The TAB key + always brings you to the end of the current input line; indentation + must be entered with spaces (a single space is enough). + End-of-file is generated by Command-D; Command-Period interrupts. + There is an annoying limit in the length of an input line to a single + screen line (less the prompt). Use \ to input long statements. + Change your program if it requires long lines typed on input. + Even though there is no resize box, the window can be resized by + dragging its bottom right corner, but the maximum size is 24x80. + +- Tabs in module files are interpreted as 4 (four!) spaces. This is + consistent with most Mac editors that I know. For individual files + you can change the tab size with a comment like + + # vi:set tabsize=8: + + (exactly as shown here, including the colons!). If you are consistent + in always using tabs for indentation on UNIX, your files will be + parsed correctly on the Mac, although they may look funny if you + have nicely lined-up comments or tables using tabs. Never using tabs + also works. Mixing tabs and spaces to simulate 4-character indentation + levels is likely to fail. + +- You can start a script from the Finder by selecting the script and + the Python interpreter together and then double clicking. If you + make the owner of the script PYTH (the type should always be TEXT) + Python will be launched if you double click it! + There is no way to pass command line arguments to Python scripts. + +- The set of built-in modules is different: + + = Operating system functions for the 'os' module is provided by the + built-in module 'mac', not 'posix'. This doesn't have all the + functions from posix, for obvious reasons (if you know the Mac + O/S a little bit). The functions in os.path are provided by + macpath, they know about Mac pathnames etc. + + = None of the UNIX specific modules ('socket', 'pwd', 'grp' etc.) + exists. + + = Module 'stdwin' is always available. It uses the Mac version of + STDWIN, which interfaces directly with the Mac toolbox. The most + important difference is in the font names; setfont() has a second + argument specifying the point size and an optional third one + specifying the variation: a single letter character string, + 'i' for italics, 'b' for bold. Note that when STDWIN is waiting + for events, the standard File and Edit menus are inactive but + still visible, and (most annoyingly) the Apple menu is also inactive; + conversely, menus put up by STDWIN are not active when the Python is + reading from the keyboard. If you open Python together with a text + file containing a Python script, the script will be executed and + a console window is only generated when the script uses standard + input or output. A script that uses STDWIN exclusively for its I/O + will have a working Apple menu and no extraneous File/Edit menus. + (This is because both stdwin and stdio try to initialize the + windowing environment; whoever gets there first owns the Apple menu.) + LIMITATIONS: a few recent additions to STDWIN for X11 have not yet + been added to the Mac version. There are no bitmap objects, and + the setwinpos() and setwinsize() methods are non--functional. + +- Because launching an application on the Mac is so tedious, you will + want to edit your program with a desk accessory editor (e.g., Sigma + edit) and test the changed version without leaving Python. This is + possible but requires some care. Make sure the program is a module + file (filename must be a Python identifier followed by '.py'). You + can then import it when you test it for the first time. There are + now three possibilities: it contains a syntax error; it gets a runtime + error (unhandled exception); or it runs OK but gives wrong results. + (If it gives correct results, you are done testing and don't need + to read the rest of this paragraph. :-) Note that the following + is not Mac-specific -- it's just that on UNIX it's easier to restart + the entire script so it's rarely useful. + + Recovery from a syntax error is easy: edit the file and import it + again. + + Recovery from wrong output is almost as easy: edit the file and, + instead of importing it, call the function reload() with the module + name as argument (e.g., if your module is called foo, type + "reload(foo)"). + + Recovery from an exception is trickier. Once the syntax is correct, + a 'module' entry is placed in an internal table, and following import + statements will not re-read the file, even if the module's initialization + terminated with an error (one reason why this is done is so that + mutually recursive modules are initialized only once). You must + therefore force re-reading the module with reload(), however, if this + happens the first time you try to import the module, the import statement + itself has not completed, and your workspace does not know the module + name (even though the internal table of moduesl does!). The trick is + to first import the module again, then reload it. For instance, + "import foo; reload(foo)". Because the module object already exists + internally, the import statement does not attempt to execute the + module again -- it just places it in your workspace. + + When you edit a module you don't have to worry about the corresponding + '.pyc' file (a "compiled" version of the module, which loads much faster + than the textual version): the interpreter notices that the '.py' file + has changed (because its modification time has changed) and ignores the + '.pyc' file. When parsing is successful, a new '.pyc' file is written; + if this fails (no write permission, disk full or whatever) it is + silently skipped but attempted again the next time the same module + is loaded. (Thus, if you plan to place a Python library on a read-only + disk, it is advisable to "warm the cache" by making the disk writable + and importing all modules once. The standard module 'importall' helps + in doing this.) diff --git a/Mac/Relnotes b/Mac/Relnotes new file mode 100644 index 0000000..3295312 --- /dev/null +++ b/Mac/Relnotes @@ -0,0 +1,55 @@ + Release notes for MacPython 1.5a2, 28-May-97 + -------------------------------------------- + +Here are the mac-specific changes since MacPython 1.4, with end-user-visible +changes near the top and API changes and other things that are developer-only +more to the bottom: + +- Module to interface to Internet Config added +- Module calldll added that allows calling of arbitrary C routines + from MacOS toolboxes +- gdbm module added +- ctb error handling fixed, and some memory leaks plugged +- Various of the documentation files in Mac:Demo have been updated +- MacOS.string_id_to_buffer is a new hack: the number you have to + add to the id() of a string object to get the (data) memory address +- MacOS.splash() double-free fixed +- macfs.FSSpec.as_pathname() was incorrect for disk toplevel folders +- QT.NewMovieFromFile has an extra parameter and an extra return value +- EasyDialogs.ProgressBar has changed both in layout and interface +- FrameWork.Application has a new cleanup() method which asks all windows + to close themselves. +- Loading of PYC resources from the application greatly speeded up, + especially for CDROM based applications +- interrupt check/eventloop only entered 10 times per second, giving + big speedup +- Allow any object (file, folder, disk) to be dropped on an applet +- Twit resource number conflict with debuggee fixed +- sys.path preference can now be longer than 255 chars +- cfmfile module allows parsing and merging of CFRG resources +- PythonFAT and PythonApplet are now fat (PPC/CFM68K) applications, so + applets can be moved between architectures. +- Twit resource number conflict with debuggee fixed +- mkapplet now uses a progress bar in stead of print statements +- unshar made a bit more mac-friendly (input output dialogs) +- img: added png, xbm, bmp support +- img: jpeg now uses IJG v6 library +- img: import of imagefile support modules delayed until needed +- img: better error handling for truncated images and such +- img: imgop.unpack() can unpack formats with multiple pixels per byte + + +- All files updated to new Py_ naming convention +- Toolbox modules regenerated from new Universal Headers +- nfullpath() merged into PyMac_GetFullPath() +- Added support for Metrowerks profiler +- Standard MW/MSL runtime libraries used in stead of homegrown version +- Allow any object (file, folder, disk) to be dropped on an applet +- Malloc now returns cache-line-aligned memory on PPC, which speeds + things up, especially on a 604. Dictionaries put this to good use. +- statically linked pythons won't inadvertantly load .slb modules +- Removed dependencies on PLStringFuncs and/or StdCLib +- Project "segment" structure changed to more-or-less follow folder + structure +- fullbuild redesigned +- Added PyMac_Initialize() call, for use by embedding programs. diff --git a/Mac/Relnotes-1.1 b/Mac/Relnotes-1.1 deleted file mode 100644 index 364c3ec..0000000 --- a/Mac/Relnotes-1.1 +++ /dev/null @@ -1,131 +0,0 @@ -PYTHON RELEASE NOTES FOR THE MACINTOSH - -VERSION 1.1 - -For the most part, Python on the Mac works just like Python under UNIX. -The most important differences are: - -- Since there is no shell environment on the Mac, the start-up file - has a fixed name: PythonStartup. If a file by this name exists - (either in the current folder or in the system folder) it is executed - when an interactive interpreter is started. - -- The default search path for modules is different: first the current - directory is searched, then the subdirectories 'lib', 'lib:stdwin' and - 'demo'. As always, you can change this (e.g. in your PythonStartup - file) by assigning or appending to sys.path -- use Macintosh pathnames! - (The default contains no absolute paths because these are unlikely - to make sense on other people's hard disks.) - -- The user interface for typing interactive commands is different. - This is actually the THINK C console I/O module, which is based on - the Mac toolbox TextEdit. A standard Edit menu provides Cut, Copy, - Paste and Clear (Undo is only there for Desk Accessories). A minimal - File menu provides Quit, which immediately exits the application, - without the usual cleanup. You can Copy from previous output, - but you can't scroll back beyond the 24x80 screen. The TAB key - always brings you to the end of the current input line; indentation - must be entered with spaces (a single space is enough). - End-of-file is generated by Command-D; Command-Period interrupts. - There is an annoying limit in the length of an input line to a single - screen line (less the prompt). Use \ to input long statements. - Change your program if it requires long lines typed on input. - Even though there is no resize box, the window can be resized by - dragging its bottom right corner, but the maximum size is 24x80. - -- Tabs in module files are interpreted as 4 (four!) spaces. This is - consistent with most Mac editors that I know. For individual files - you can change the tab size with a comment like - - # vi:set tabsize=8: - - (exactly as shown here, including the colons!). If you are consistent - in always using tabs for indentation on UNIX, your files will be - parsed correctly on the Mac, although they may look funny if you - have nicely lined-up comments or tables using tabs. Never using tabs - also works. Mixing tabs and spaces to simulate 4-character indentation - levels is likely to fail. - -- You can start a script from the Finder by selecting the script and - the Python interpreter together and then double clicking. If you - make the owner of the script PYTH (the type should always be TEXT) - Python will be launched if you double click it! - There is no way to pass command line arguments to Python scripts. - -- The set of built-in modules is different: - - = Operating system functions for the 'os' module is provided by the - built-in module 'mac', not 'posix'. This doesn't have all the - functions from posix, for obvious reasons (if you know the Mac - O/S a little bit). The functions in os.path are provided by - macpath, they know about Mac pathnames etc. - - = None of the UNIX specific modules ('socket', 'pwd', 'grp' etc.) - exists. - - = Module 'stdwin' is always available. It uses the Mac version of - STDWIN, which interfaces directly with the Mac toolbox. The most - important difference is in the font names; setfont() has a second - argument specifying the point size and an optional third one - specifying the variation: a single letter character string, - 'i' for italics, 'b' for bold. Note that when STDWIN is waiting - for events, the standard File and Edit menus are inactive but - still visible, and (most annoyingly) the Apple menu is also inactive; - conversely, menus put up by STDWIN are not active when the Python is - reading from the keyboard. If you open Python together with a text - file containing a Python script, the script will be executed and - a console window is only generated when the script uses standard - input or output. A script that uses STDWIN exclusively for its I/O - will have a working Apple menu and no extraneous File/Edit menus. - (This is because both stdwin and stdio try to initialize the - windowing environment; whoever gets there first owns the Apple menu.) - LIMITATIONS: a few recent additions to STDWIN for X11 have not yet - been added to the Mac version. There are no bitmap objects, and - the setwinpos() and setwinsize() methods are non--functional. - -- Because launching an application on the Mac is so tedious, you will - want to edit your program with a desk accessory editor (e.g., Sigma - edit) and test the changed version without leaving Python. This is - possible but requires some care. Make sure the program is a module - file (filename must be a Python identifier followed by '.py'). You - can then import it when you test it for the first time. There are - now three possibilities: it contains a syntax error; it gets a runtime - error (unhandled exception); or it runs OK but gives wrong results. - (If it gives correct results, you are done testing and don't need - to read the rest of this paragraph. :-) Note that the following - is not Mac-specific -- it's just that on UNIX it's easier to restart - the entire script so it's rarely useful. - - Recovery from a syntax error is easy: edit the file and import it - again. - - Recovery from wrong output is almost as easy: edit the file and, - instead of importing it, call the function reload() with the module - name as argument (e.g., if your module is called foo, type - "reload(foo)"). - - Recovery from an exception is trickier. Once the syntax is correct, - a 'module' entry is placed in an internal table, and following import - statements will not re-read the file, even if the module's initialization - terminated with an error (one reason why this is done is so that - mutually recursive modules are initialized only once). You must - therefore force re-reading the module with reload(), however, if this - happens the first time you try to import the module, the import statement - itself has not completed, and your workspace does not know the module - name (even though the internal table of moduesl does!). The trick is - to first import the module again, then reload it. For instance, - "import foo; reload(foo)". Because the module object already exists - internally, the import statement does not attempt to execute the - module again -- it just places it in your workspace. - - When you edit a module you don't have to worry about the corresponding - '.pyc' file (a "compiled" version of the module, which loads much faster - than the textual version): the interpreter notices that the '.py' file - has changed (because its modification time has changed) and ignores the - '.pyc' file. When parsing is successful, a new '.pyc' file is written; - if this fails (no write permission, disk full or whatever) it is - silently skipped but attempted again the next time the same module - is loaded. (Thus, if you plan to place a Python library on a read-only - disk, it is advisable to "warm the cache" by making the disk writable - and importing all modules once. The standard module 'importall' helps - in doing this.) diff --git a/Mac/Relnotes-1.2 b/Mac/Relnotes-1.2 deleted file mode 100644 index f11e343..0000000 --- a/Mac/Relnotes-1.2 +++ /dev/null @@ -1,169 +0,0 @@ -BUILDING PYTHON 1.2 FOR THE MACINTOSH -************************************* - -Python can be built on the Mac using either THINK C 6.0 (or 7.0), or -CodeWarrior 5.0 (for 68K and PPC). In the past it has also been compiled -with earlier versions of Think, but no guarantees are made that the -source is still compatible with those versions. (Think C 5.0 appears -to be OK.) Likewise, new compiler versions may effectively change the -language accepted (or the library provided!) and thus cause problems. - -MPW is a special case -- it used to be possible to build Python as -an MPW tool using MPW 3.2, and this may still work, but I haven't -tried this lately. What I have tried, however, is building Python -as a shared library for CFM-68K, using the Symantec C compiler for MPW. -See subdirectory MPW and the README file there for more info. - - -1. Using Think C 6.0 (or 7.0) -============================= - -1.1 The directory structure ---------------------------- - -I duplicate the UNIX directory structure from the distribution. The -subdirectories needed to compile are: Mac, Include, Parser, Python, -Objects, Modules. (Don't bother with Grammar and the parser -generator, nor with the Doc subdirectory.) - -For running and testing, you also need Lib and its subdirectories test -and stdwin. You could also copy some things from the Demo/stdwin -directory (unfortunately most other demos are UNIX specific and even -many stdwin demos are). - -Make sure there is no config.c file in the Modules subdirectory (if -you copy from a directory where you have done a UNIX build this might -occur). Also don't use the config.h generated on UNIX. - -1.2 The project file --------------------- - -I put all source files in one project, which I place in the parent -directory of the source directories. - -1.2.1 Project type - -(This is the Set Project Type... dialog in the Project menu.) - -Set the creator to PYTH; turn on "far data"; leave "far code" and -"separate strs" unchecked (they just serve to bloat the application). -A partition size of 1000K should be enough to run the standard test -suite (which requires a lot of memory because it stress tests the -parser quite a bit) and most demos or medium-size applications. The -interpreter will do basic things in as little at 500K but this may -prevent parsing larger modules. - -1.2.2 Compiler options - -(This is the Options -> THINK C ... dialog in the Edit menu.) - - - Start with Factory Settings. - - - In the Prefix, remove #include <MacHeaders> and add - #define HAVE_CONFIG_H - - - Choose any optimizer and debugger settings you like. - You - can choose 4-byte ints if you want. This requires that you - rebuild the ANSI and unix libraries with 4-bytes ints as well - (better make copies with names like ANSI 32 bit). With 4-byte - ints the interpreter is marginally bigger and somewhat (~10%) - slower, but Python programs can use strings and lists with - more than 32000 items (with 2-byte ints these can cause - crashes). The range of Python integers is not affected (these - are always represented as longs). In fact, nowadays I always - use 4-byte integers, since it is actually rather annoying that - strings >= 64K cause crashes. - -1.2.3 Files to add - -(This is the Add Files... dialog in the Source menu.) - -The following source files must be added to the project. I use a -separate segment for each begin letter -- this avoids segment -overflow, except for 'c', where you have to put either ceval.c or -compile.c in a separate segment. You could also group them by -subdirectory or function, but you may still have to split segments -arbitrarily because of the 32000 bytes restriction. - - - From Mac: all .c files. - - - From Parser: acceler.c, grammar1.c, - myreadline.c, node.c, parser.c, parsetok.c, tokenizer.c. - - - From Python: bltinmodule.c, ceval.c, cgensupport.c, - compile.c, errors.c, getargs.c getopt.c, graminit.c, import.c, - importdl.c, marshal.c, modsupport.c, mystrtoul.c, - pythonmain.c, pythonrun.c, sigcheck.c, structmember.c, - sysmodule.c, traceback.c (i.e. all .c files except dup2.c, - fmod.c, frozenmain.c, getcwd.c, getmtime.c, memmove.c, - sigcheck.c, strerror.c, strtod.c, thread.c) - - - From Objects: all .c files except xxobject.c. - - - From Modules: all the modules listed in config.c (in the Mac - subdirectory) in the initializer for inittab[], before - "ADDMODULE MARKER 2". Also add md5c.c if you add md5module.c, - and regexpr.c if you add regexmodule.c. (You'll find - macmodule.c in the Mac subdirectory, so it should already have - been added in a previous step.) Note that for most modules, - the source file is called <name>module.c, but for a few long - module names it is just <module>.c. Don't add stdwinmodule.c - yet, - -The following THINK C libraries must be added: from Standard -Libraries, ANSI and unix; from Mac Libraries, MacTraps. I put each -library in a separate segment. Also see my earlier remark on 4-byte -ints. - -1.4 Adding STDWIN ------------------ - -STDWIN is built in two separate projects: stdwin.pi contains the core -STDWIN implementation from Ports/mac, textedit.pi contains the files -from Packs/textedit. Use the same compiler options as for Python and -the same general source setup (in a sister directory of the toplevel -Python directory). Put all sources in the same segment. To -stdwin.pi, also add Tools/strdup.c and Gen/wtextbreak.c. - -The two projects can now be added as libraries to the Python project. -You must also add stdwinmodule.c and add "#define USE_STDWIN" to the -Prefix in the compiler options dialog (this only affects macmain.c and -config.c). - -Note that stdwinmodule.c contains an #include statement that -references "stdwin.h" by relative path name -- if the stdwin toplevel -directory is not a sibling of the python toplevel directory, you may -have to adjust the number of colons in the pathname. - -1.5 Resources -------------- - -Since I created them with ResEdit I have no text source of the -resources needed to give the application an icon etc... You can copy -the size, bundle, file reference and icon resources from the -distributed Python application with ResEdit. THINK C automatically -copies resources into the application file from a file -<projectname>.rsrc. - -1.6 Think C 5.0 ---------------- - -Tim Gilbert adds one note that will be helpful to future Think C 5.0 -users: When you have a really big project like python, and you want to -compile and run it, if you just hit Command-R, often Think C will -compile the remaining files, think for a moment, and then give you a -warning "internal error(ZREF)--please remove objects." Don't listen -to it. It is lying. What you should do instead is "Check Link..." -and _then_ hit Run. Why? Ask Symantec. - - -2. Using MicroWerks CodeWarrior 5.0 -=================================== - -Essentially, follow the instructions for Think C. - -XXX Should at least list the project options. - - ---Guido van Rossum, CWI, Amsterdam <Guido.van.Rossum@cwi.nl> -<URL:http://www.cwi.nl/cwi/people/Guido.van.Rossum.html> diff --git a/Mac/Relnotes-1.3 b/Mac/Relnotes-1.3 deleted file mode 100644 index a38f139..0000000 --- a/Mac/Relnotes-1.3 +++ /dev/null @@ -1,118 +0,0 @@ - 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 - <option> after launching python) will bring up an Options dialog - allowing you to set options like import-tracing, etc. -- MacOS module method added: GetErrorString(OSErr) -> error string -- There is now a numbering convention for resource-ID's: - 128-255 Resources used by the interpreter itself - 256-511 Resources used by standard modules - 512- Resources for applications -- macfs module changes: - - StandardGetFile without type arguments now shows all files - - PromptGetFile(prompt, ...) is like StandardGetFile but with a - prompt - - GetDirectory (let user select a folder) added - - GetFInfo and SetFInfo methods of FSSpec objects get/set finder - info. FInfo objects have attributes Creator, Type, etc. - - FindFolder (locate trash/preferences/etc) added -- mactcp/macdnr changes: bug fix wrt idle-loop. -- EditPythonPrefs script: change initial sys.path and python home - folder -- (PPC only) MkPluginAliases: Setup aliases for dynamically loadable - modules that live in a single shared library -- PackLibDir: Convert Lib directory to a single resource file - containing all .pyc code -- fixfiletypes: Set file types based on file extension over a whole - tree. -- RunLibScript: Run any script as main program, optionally redirecting - stdin/stdout, supplying arguments, etc. -- binhextree: Binhex all files in a tree, depending on the extension. -- (PPC only) mkapplet: Create a python applet from a sourcefile and - (optional) resourcefile. - - Known problems - -------------- - -- 68K python reacts rather violently to out-of-memory situations. In - stead of raising MemoryError it will crash, possibly bringing down the - whole system. This is being investigated. -- The installation procedure is baroque. Ideas for improvement are welcome. -- The full documentation should be ported to AppleGuide. This should be - a fairly simple automatic translation but I am not well-versed enough in - AppleGuide to do it. Any takers? -- stdwin still has trouble with getting the clipboard (for cut/copy). Any - hints for fixing this will be looked into (but I am not going to spend - ages on this, especially without anyone asking me to). -- Be careful when copy/pasting in the stdin/stdout window. If you type - something when you have the insertion point is not at end-of-window you - may experience a system hang. (thanks, Just!) - - - What will change shortly - ------------------------ - -I am planning to do an intermediate release shortly (1.3.1??), mainly -because Guido was so fast with 1.3 that I didn't have time to do some -things I wanted. Expect the following changes shortly (note that some are -incompatible): -- CFM68K support,bringing applets and dynamic loading to the 68K macs. -- Bgen-generated toolbox interfaces will go to a different place, - probably :Lib:mac:toolbox -- Resource objects now often perform the role of a Handle object. This - will change with the introduction of a Handle object and some sort of - simulated inheritance. -- AE suites generated with gensuitemodule will be restructured, whereby it - will be easier to override/extend standard suites. Also, server suites - will also be generated, and hopefully objects will be supported. -- Event handling is currently rather messy, with python, SIOUX, stdwin and - the python application all fighting over the events. This will somehow - be changed. - - - Jack Jansen, jack@cwi.nl - 10-Oct-95 diff --git a/Mac/Relnotes-1.3.3 b/Mac/Relnotes-1.3.3 deleted file mode 100644 index 896dc57..0000000 --- a/Mac/Relnotes-1.3.3 +++ /dev/null @@ -1,125 +0,0 @@ - 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 - - - diff --git a/Mac/Relnotes-1.4b3 b/Mac/Relnotes-1.4b3 deleted file mode 100644 index bb4fc41..0000000 --- a/Mac/Relnotes-1.4b3 +++ /dev/null @@ -1,171 +0,0 @@ - Changes between 1.4b3 and 1.3.3 - ------------------------------- - -Aside from all the changes Guido made to the machine-independent part -of Python the following mac-specific changes have been made: - -- 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 - - - diff --git a/Mac/Relnotes-source b/Mac/Relnotes-source index 770bde3..c6ecf67 100644 --- a/Mac/Relnotes-source +++ b/Mac/Relnotes-source @@ -12,13 +12,9 @@ preferences to make it extract C sources with creator CWIE and .py files as text files with creator Pyth, this will save you work later. -You will also need CodeWarrior 8. If you have another development +You will also need CodeWarrior 11. If you have another development environment you are on your own, basically. -You may also need the img distribution and the stdwin distribution. -If you don't want them you may have to edit some of the projects -to remove references to them. - When you've extracted everything you may have to unpack the .hqx files in Mac:Resources and Mac:mwerks:Projects (but suntar may have done this for you already). @@ -26,6 +22,7 @@ may have done this for you already). You have to remove Modules:fmmodule.c, the SGI fm module, which has a name conflict with the Mac Fmmodule.c. + Next, create your build directories. I use the following naming convention: build.macppc.shared PowerPC shared-library @@ -39,47 +36,8 @@ Move MWCPythonCoreRuntime.µ, PythonCore.µ, PythonPPC.µ and PythonApplet.µ (from the Mac:mwerks:projects folder) to build.macppc.shared, move Python68K.µ to build.mac68k.stand. -Build the projects. For the PPC projects, keep the order given above. -Do *not* run the python interpreter yet. First, move the interpreter -to the main python folder. For PPC, also move PythonCore to the main -python folder. - -Now try your python interpreter, this will create an initial -preferences file. - -For 68K python you are now done. - -For PPC Python, don't try complicated scripts yet, you first have to -create the dynamically loadable modules. Create a folder PlugIns (in -the toplevel python folder) and move all the projects that have -"module" or "modules" in their name there. Build these projects. This -will create a number of ".exp" files, edit these files to contain only -all the "init" modules, and build the projects again. This latter step -isn't really essential, so feel free to skip it. - -The next step is to create aliases for the various modules that "live -together" in one shared library. For this, take MkPluginAliases.py and -MkPluginAliases.rsrc from the Mac:scripts folder and move or copy them -to the python home folder. Run the script from there. - -If you haven't created all plugins you'll get some errors about files -not existing, don't worry. Don't forget to move the scripts back. - -Next, make an alias of PythonCore (also named PythonCore) and put it -in System Folder:Extensions. This will ensure that you can run python -anywhere, not just from the folder where PythonCore lives. - -Most of your environment is now setup. You can try it by running -EditPythonPrefs.py (in Mac:scripts), it should now work from there. - -Lastly, you should setup some stuff needed for applet creation. First, -you should put PythonApplet (or an alias to it) in the python home -folder. Next, you should turn mkapplet.py (from mac:scripts) into an -applet itself: double-click it and give it itself as input in the -input file dialog. - -Now that you have created mkapplet you can use this as a droplet: -drag-and-drop python sources onto it (EditPythonPrefs.py and -RunLibScript.py come to mind) and the applets will be created. +Now, your folder structure more-or-less resembles that of what comes +with the mac source distribution. Read the file Mac:Demo:building.html +for further instructions. - Jack Jansen, CWI, 18 March 1996. + Jack Jansen, CWI, 28 May 1997. |