changes between 4.00.1 and 4.50.0

General:
* Added C runtime functions _popen, _pclose, _cgets, _cputs, _getopt, _sleep, _filelength64, _lseek64, _tell64, _findfirst64, _findnext64, _wfindfirst64, _wfindnext64.
* Revised code for the screen saver library (srcnsave.lib and scrnsavw.lib).
* Fixed a name decoration bug for _dlopen, _dlclose, _dlsym and _dlerror.
* Added support for assert on Pocket PC.
* Added new tool: POASM (macro assembler).
* [Beta 2] Renamed some macros in wctype.h to avoid errors when compiling for Pocket PC.
* [Beta 2] Added cecrypt.lib for Pocket PC (renamed from crypt32.lib to avoid some confusion with the Win32 version).
* [Beta 4] Added time() for Pocket PC (crtce.lib), and excluded non-supported functions from time.h.
* [Post beta 5] Added files for Pocket PC (mostly Windows Mobile 5): activesync.h, ceddraw.h, cfgmgrapi.h, connmgr.h, connmgr_conntypes.h, connmgr_proxy.h, connmgr_status.h, d3dm.h, d3dmcaps.h, d3dmtypes.h, d3dmx.h, d3dmxerr.h, d3dmxmath.h, d3dmxtex.h, devload.h, devmgmt.h, fdrm.h, getdeviceuniqueid.h, gpsapi.h, lass.h, pm.h, regext.h, service.h, soundfile.h, snapi.h, windbase_edb.h, d3dmx.dll, d3dmx.lib, gpsapi.lib.

IDE:
* The debugger will now support remote debugging on Pocket PC (and Smartphones). A pretty big change.
* The debuggers 'Memory' tab will now support local variables and a context menu for the current view (byte/short/long/etc).
* The debugger should now be able to 'step over' a return instruction (X86).
* Added support for some cases of pointer[index] in the debugger expression evaluator.
* Added context menu with option to toggle decimal/hexadecimal view in all symbol windows in the debugger.
* Added more support for register variables in the debugger (pointers, for example).
* [Beta 3] Added better support for register-pairs in the debugger (mostly ARM targets).
* Added support for #pragma region and #pragma endregion in the source code editor. For user-defined folding blocks.
* POASM is from now on the default assembler for new projects (not MASM). It is also supported for Pocket PC projects. The syntax color highlighter for assembly files will now only support POASM-specific keywords (not MASM).
* Added support for POASM keyword lookup in the source code editor (like C keywords). If the active project is for Pocket PC (or Smartphone), the assembly file is considered to be in ARM mode (using ARM keywords), in all other cases it is assumed to be in X86 mode (using X86 keywords).
* Added support for 'Open As'. It is now possible to open an executable file in the binary editor, a resource script in the source code editor, and so on.
* Added support for 'RichEdit 2.0' controls in the dialog editor.
* Added support for adding new controls through the keyboard in the dialog editor.
* Added support for resizing a control through the keyboard in the dialog editor (Shift+Arrow keys).
* Added support for toggling a breakpoint using the mouse, in the margin of the source code editor.
* Added support for opening an arbitrary include file in the source code editor. Works for both C and assembly files.
* Added support for manually activating the call tip window.
* Added support for different values for the 'tab' and 'indent' size (the indent size don't have to be a multiple of the tab size anymore).
* [Beta 2] Added support for a visual cue about 'matching braces' (really { } ( ) and [ ]).
* [Beta 3] Added tooltip support for MDI tabs.
* When loading a resource script, any errors will now be reported on the Build tab (not through message boxes).
* The source code editor will now display the name of the current function on the status bar.
* Bugfix: fixed a problem with FPU/MMX registers in the debugger.
* Bugfix: dialogs created with 'some other tool' might not have DS_SETFONT, and associated font data, which could cause some strange effects (including crashes).
* Bugfix: NOINVERT was never written for accelerator tables in resource scripts.
* Bugfix: classification into ASCII or VIRTKEY didn't always work for accelerator tables written to resource scripts.
* Bugfix: attempt to support the Delete key in some windows at the bottom tab (don't send the key to the active MDI window).
* Bugfix: some operations on the Breakpoint tab could crash due to a NULL pointer.
* Bugfix: the folding/unfolding logic could sometimes cause a crash.
* Bugfix: fixed a problem with scrollbars not (re-)synchronizing after growing an image in the image editor.
* Bugfix: filling with a color that seemed different on the surface, but after palette transformations turned out to be the same color, could cause a stack overflow in the image editor (256 color images).
* Bugfix [Beta 2]: fixed problem with items on menubars that didn't open a popup menu (mostly Smartphones, but also Pocket PC).
* Bugfix [Beta 3]: the call tip window will now use the selected text colors when painting the current argument (should work with *any* color settings).
* Bugfix [Beta 3]: deleting complex items from the Watch panel, like arrays and structures, was buggy.
* Bugfix [Beta 3]: editing a Manifest resource could leave up to three garbage characters at the end (DWORD alignment).
* Bugfix [Beta 3]: the last entry in an accelerator table resource will now be correctly flagged as such (when saved in RES format).
* Bugfix [Beta 3]: using filenames with embedded ( and ), on the build and output tabs, should now work.
* Bugfix [Beta 4]: a workspace ZIP file could previously contain some duplicate files.
* Bugfix [Beta 5]: Undo in Image editor, after Grayscale/Sepia/..., didn't restore palette colors correctly.
* Bugfix [Beta 5]: saving a file with an undo queue, and then undoing everything, will no longer set state back to 'not dirty' (a stupid thing to do in the first place, but anyway).

Compiler:
* New backend code generator for both X86 and ARM, shared with the macro assembler. Responsible for converting assembly instructions into byte sequences, generating debug info, and emitting COFF object files. This means (among other things) that the inline assembler parser (X86 and ARM) is new, and that the compiler assembly output looks slightly different. This is a big change.
* Added several new optimizations - both general and machine specific.
* The const qualifier will now be considered much more when generating code for initializers, compound literals, and local variables. Use it when it's appropriate, and the generated code will be better.
* The compiler will now try to identify variables that should be handled as 'volatile' around a __try-__except block - for better code (not just assume that they are all 'volatile').
* Added support for #pragma region and #pragma endregion.
* [Beta 3] Added support for #pragma check_stack( [{on|off}] ) and #pragma ftol( [inlined] ).
* Added support for __debugbreak intrinsic function. Will generate a breakpoint instruction for X86 or ARM, but only when debugging info is turned on (when the /Zd or /Zi compiler option is used).
* Added support for 'multi-byte' character constants in Microsoft mode ('abcd').
* Moved warning about 'possible loss of data' to a different part of the compiler. It will catch less cases than before, but will also produce less false warnings.
* [Beta 3] The C compiler now maps a typedef for whar_t (unsigned short) to an internal type, in an attempt to preserve this 'special' type for CodeView debugging info and error/warning messages.
* Bugfix: switch statements using an unsigned value could crash.
* Bugfix: attempting to use a huge number of wide string literals could crash the compiler.
* Bugfix: some combinations of relative path's in #include directives and command line arguments didn't work as expected. Maybe works better now?
* Bugfix: some conformance problems with compound literals, variable-length arrays, and _Bool.
* Bugfix (ARM): problems with incoming/outgoing arguments in functions using _alloca.
* Bugfix (ARM): receiving a structure by value didn't work.
* Bugfix (ARM): shifting a signed long long value right didn't work.
* Bugfix (ARM): attempting to use the hook function (/Gh) didn't work.
* Bugfix (X86): problems with some instructions when argument was 'out of bounds'.
* Bugfix [Beta 3]: The option /Zl (omit default library name) will no longer cause a reference to the __fltused symbol in Microsoft mode.
* Bugfix (ARM) [Beta 3]: right-shifting an unsigned long long didn't work for high 32 bits.
* Bugfix (ARM) [Beta 3]: added automatic dumping of literal pools, for "big" blocks of straight-line code.
* Bugfix (ARM) [Beta 3]: bitwise AND (&), OR (|), XOR (^) immediate values were sometimes "uncodable".
* Bugfix (X86) [Beta 4]: intrinsic versions of _rotl(), _rotr(), _lrotl(), _lrotr(), and _bswap() are less likely to clobber the register allocator.

Compiler driver:
* Added support for PORC and resource scripts.
* Added support for POASM, and option /a for backward compatibility.
* Will now automatically add /DEBUG linker option, when /Zi compiler or assembler option is used.

Linker:
* Added attempt to convert newer Microsoft CodeView information (in object files) to the older format that can be handled by the debugger and other tools.
* Added support for NONAME keyword in module-definition (DEF) files.
* Added support for Microsoft-style long section names (in the COFF string table).
* Should now support old-style resource files from CVTRES (why one would actually need it, is another matter).
* Possibly more correct handling of weak externals.
* Increased the maximum size for export object files (for 'Dylan', really).
* Bugfix: fixup of absolute symbols didn't always work as expected (in some rare cases).

Library manager:
* Added support for NONAME keyword in module-definition (DEF) files.
* Revised code for /EXPLODE option - see help file.

Binary file dumper:
* Rewritten disassembler for ARM, modified disassembler for X86, new disassembler for AMD64 (mostly a preview).
* Added support for PE32+ files and several AMD64-specific sections.
* Added support for dumping Windows CE/ARM exceptions. Added new /PDATA option for this.
* Added more support for Microsoft's undocumented PDB files, including the new RSDS format. Still many 'unknown' fields. (If a smart person can figure out the format of the (assumed) hash streams for symbols and types - either JG or DS format - it might be possible to *create* PDB files from the linker. This is a 'show stopper' right now. I will not waste more time investigating this, unless I get more information from someone/somewhere.)
* Added support for several new CodeView record types.
* Added support for Microsoft-style long section names (in the COFF string table).
* Revised dump of exported symbols to handle 'ordinal only' ('NONAME').

Resource compiler:
* Added support for merging multiple strings in a row ("A" "B" "C" -> "ABC"), to handle some preprocessor/macro expansions.
* Added warning when keyword used as an identifier.
* Added support for memory flags on some resource types (mostly for consistency).

Browse information manager:
* Added support for POASM-specific keywords (and removed support for MASM-specific keywords).
* Bugfix: unbalanced conditional code (#if -- #endif) could cause an infinite loop.