Changes in 2.0b1 since 1.5.2
----------------------------

These release notes refer to Mac-specific changes only. See NEWS (in the Misc folder)
for machine-independent changes.

Unfortunately I have messed my administration up, so I can't give complete
Mac-specific release notes for the changes in this release. So, I will
have to leave it at the highlights:

- 68K support has been dropped, this release is PPC only.
- Threads support (through standard Python threads module).
- Tkinter works again! At least: it doesn't immedeately crash in obvious ways.
- Appearance support through App module and added calls in many other modules.
  Most dialogs and applets have also been converted to Appearance. There's also a
  ControlAccessor module that handles [GS]etControlData with their plethora of
  argument types.
- Navigation Services support, with macfs StandardFile calls transparently
  replaced by their NavServices counterparts.
- Offscreen QuickDraw and GWorld support through Qdoffs module.
- Drag manager support (Drag module).
- Much better CGI support and examples, see :Mac:Tools:CGI.
- Better OSA/AppleEvent support.
- Up/downcasting of handle-based types is now unified and implemented in the
  inherting module, e.g.
  handleobj = ctlobj.as_Resource()
  ctlobj = Ctl.as_Control(handle)
- Added macos.FreeMem(), MaxBlock() and CompactMem(), mainly so apps in Python can
  give low-memory warnings.
- MediaDescr module parses some QuickTime media descriptions (but definitely not all).

What is not in this distribution
--------------------------------

- The garbage collection mods to 2.0 have not been enabled, mainly due to lack of test-time.
- Stackless Python/microthreads hasn't been ported to 2.0 yet. If/when it becomes available
  Just will undoubtedly announce it on pythonmac-sig.
- Carbon support is not in here, but should be happening as soon as GUSI is ready.
- Distutils is not in here, again due to lack of time.

Known problems
--------------

This list is far from complete, more problems may be listed on the MacPython homepage,
http://www.cwi.nl/~jack/macpython.html.

- The IDE and Tkinter do not work together. Run tkinter programs under PythonInterpreter.
- Aliases do not work in sys.path entries.
- Once you have used multiple threads you cannot raise KeyboardInterrupt anymore:
  typing command-. will immedeately exit the interpreter.
- The gdbm module does not work.
