changes between 3.00.0 and 4.00.1

General:
* Added more C runtime support for wide characters (Unicode), Posix-style functions, and console screen I/O. See help file for details.
* Added more Pocket PC import libraries and include files.
* Added new tool, CEGET, which does the opposite of CEPUT: it copies a file from Pocket PC.
* Bugfix 4.00.1: The include file ftw.h is now actually included (in the distribution... ;-)

IDE:
* New, and better looking, splash screen (thank you, Alexander Stoica!).

* Rewritten project manager (many changes in many places):
   - Support for a 'workspace' with multiple projects.
   - New file type (*.ppw) for saving a 'workspace'.
   - Project files will now use relative path's and a new version number (once loaded in 4.0, they will not load in any previous version!).
   - The file projdefs.tag is now merged into projname.tag.
   - Support for 'verbose build' (useful when debugging build problems).
   - Context menus in the project tree are now more context sensitive.
   - More.

* Rewritten image editor:
   - Support for alpha channel (transparency) in XP icons and PNG files.
   - GDI calls are no longer used to draw lines, circles, or to fill areas (you shouldn't see any difference).
   - New dialog for selecting colors - when double-clicking a color in the image toolbox.
   - New 'sepia-tone' and 'drop shadow' effects.
   - Non-standard icon and cursor sizes can be edited (but not created).
   - More.

* Many changes in the debugger:
   - Support for expressions in several places: in breakpoints, on the Watch tab, in the new Quick Watch dialog, and in several address fields.
   - New 'Step out' of function, and 'Run to cursor' commands.
   - Support for hardware breakpoints.
   - Better support for functions without a standard EBP-frame (in stack trace).
   - Better support for variables in processor registers.
   - New break-on-entrypoint setting.
   - More.

* New breakpoint tab for all project/workspace breakpoints. Added support for 'pass count' and 'expression' (break when true) in breakpoints. Many changes in the source editor to support the new breakpoints (many more than I thought possible!).
* Added support for block 'comment'/'uncomment' in the source editor (C and MASM code).
* Added support for 'find calls to' in the source editor (C and MASM code).
* Added support for nested structs/unions in the member list. Also added support for global variables and better 'context info' for local variables.
* Typed characters will now be grouped into a single undo action in the source code editor (when possible). This will save memory and will also make it easier to undo/redo typed text (no more character-by-character).
* Resource scripts will now use relative path's.
* New filename field in resource properties.
* New general setting to make totally unique resource identifiers.
* The IDE will now accept only one instance of itself. Any attempt to start a new instance will activate the first. It will still be possible to run a new instance in some cases, like debugging an add-in.
* Added support for sorted/unsorted function names in the project tree.
* Added support for making ZIP filenames unique.
* Added styles SS_REALSIZECONTROL, PBS_MARQUEE, WS_EX_APPWINDOW, WS_EX_TOPMOST and WS_EX_NOACTIVATE in dialog editor.
* Added 'Raw window styles' setting in the dialog editor (see context menu for the Property window).
* Added more inconsistency checks for custom controls (to make them work anyway).
* Build tab will now wait 5 minutes before asking if the process should be killed.
* Added support for Shift+F10 in most windows with a context menu - in POIDE, POREG and POVIEWP. Works on XP at least.
* Added $$ as an escape for a literal $ in project files.
* Removed support for Platform SDK help.
* Bugfix: the debugger allowed editing in several tabs while the debuggee was running.
* Bugfix: the source editor allowed toggling breakpoints when debugger was running.
* Bugfix: several problems fixed with search/replace in the source editor.
* Bugfix: pasting immediately after an auto-indent didn't indent properly.
* Bugfix: the source editor could display the wrong line number on the status bar (after folding).
* Bugfix: fixed several problems with 'formatted C code' in the source editor.
* Bugfix: buffers for environment variables like PATH and LIB could sometimes overflow, causing strange effects.
* Bugfix: imported Message Table and Manifest resources were assigned the wrong identifier.
* Bugfix: Ansi/Unicode encoding could sometimes get out-of-sync between different entries in a Message Table.
* Bugfix: bitmap controls, when testing a dialog, will now display a default image (ignoring any resource identifier).
* Bugfix: pasting controls in the dialog editor could sometimes crash the IDE.
* Bugfix: the dependency scanner will now convert forward slash to backward slash in filenames.
* Bugfix: the syntax color highlighter didn't handle two traditional comments in a row: /*...*//*...*/.
* Bugfix: the undo buffer for the source code editor could get very big after a long editing session.
* Bugfix: when an error occurred during the opening of a file for saving (like "access denied"), the file could be deleted(!).
* Bugfix: switching from a source code window, to another window, and back again, would reset the caret position when positioned at an "indent point".

Compiler:
* Generally somewhat faster at compiling.
* Added a few more optimizations.
* Added support for GNU C __typeof__ operator - require the /Zx option.
* Added support for GNU C case ranges (case e1 ... e2) - require the /Zx option.
* Added new level 2 warnings about 'unused return value from function' and 'possible truncation of data'. Sometimes annoying, sometimes very useful.
* Bugfix: using # ## # should not produce a new ## operator.
* Bugfix: several problems fixed in ARM code generator (as previously posted).
* Bugfix: the compiler failed for preprocessor expressions containing the conditional operator (?:).
* Bugfix: problems initializing structures containing unaligned fields.
* Bugfix: problems when the conditional operator (?:) appeared in an expression used as an argument to an inline function, and the inline function used this argument more than once.
* Bugfix: unreferenced parameters in _fastcall functions were counted as stack-based parameters (so the emitted return instruction could be wrong - leading to a crash).
* Bugfix 4.00.1: ARM code generator didn't handle usage of VLA's or _alloca() in a function that also called another function with more than 4 arguments.
* Bugfix 4.00.1: ARM code generator could sometimes spill incoming argument (in register) to wrong address.

Linker:
* Should be slightly faster at compacting CodeView debug information.
* Better error reporting for multiply defined symbols (with filename, when possible).
* A dummy DllMain() function will be fabricated automagically if not found.
* Bugfix: extremely long (import/export) symbols could crash POLINK.
* Bugfix: sometimes problem with imported/exported _fastcall decorated symbols.

Library manager:
* Added option /MAKEDEF to create module-definition file from import library.
* Added support for reading import libraries in OMF format.
* Bugfix: extremely long (import/export) symbols could crash POLIB.
* Bugfix: the option /NOUND didn't work with symbols from a module-definition file.

Binary file dumper:
* Bugfix: the import dump didn't handle some cases.

Resource compiler:
* Added new option /E for preprocessing script only - might be useful in debugging some scripts.

Browse information manager:
* Added new kind (C) to /K option - find function or macro call.
* Bugfix: fixed several problems with conditional code (#if, #else, #endif).
* Bugfix: attempt to handle different decorations for function definitions (Windows mode).

Make utility:
* Added $$ as an escape for a literal $ in makefiles.
* Bugfix: will now strip spaces at the end of macros - could cause problems when combining macros.

Screen capture (WinCE):
* Added support for saving screen captures in GIF format.
* Bugfix: some images had the red and blue color component swapped.