General:
- Added support for Pentium 4 (SSE, SSE2) instructions to the inline assembler, debugger and PODUMP disassembler.
- New Browse Information Manager in POBR.EXE and POBR.DLL. CTAGS removed. Browse information files will still use
the .tag extension, but the format is new.
- The 'Copy to Pocket PC' utility will now display the target device name.
IDE:
- Added new look, when running on Windows XP.
- Added support for 'tabbed' MDI windows.
- Added support for line folding in the source editor.
- Added support for code completion in the source editor.
- Added support for nested call tips in the source editor.
- Added support for drag-and-drop editing in the source editor.
- Added support for locking controls in the dialog editor.
- Added group headings to property window in the dialog editor.
- Added debugger tab for breakpoints.
- Added debugger tab for watch symbols.
- Added support for COFF debugging information in the debugger (symbols only).
- The source editor will now handle read-only files better.
- Added minimal support for animated icons (basically same as animated cursors).
- ZIP project files will now store a relative path in the ZIP file, not the full path. The project file itself (.ppj)
will be stored in the ZIP file.
- Help files will now be displayed 'modeless', i.e. you can switch back to the IDE without closing the help file.
- Changed file extension, for project extension files, from INI to PPX.
- Functions defined in include files will now be displayed in the project tree.
- External resource files will now be displayed in the project tree.
- When writing resource scripts (.rc), the line #include <richedit.h> will be emitted automatically.
- The dependency scanner will now try to handle multiple line comments /* */ and conditions (#if, #ifdef, #ifndef ...).
It will also skip files that are not found.
- Added some support for using an external assembler, other than MASM.
- Added color settings for selected text in the source editor.
- Added 'Go to previous definition', to make it possible to return after 'Go to definition of: symbol'.
- The caption of the debugger will now indicate the current state, running or stopped.
- The call tips database has been updated with ~900 new prototypes.
- Added new setting for number of lines to scroll with the mouse wheel.
Compiler:
- Many new code improvements and optimizations added. This will affect both integer and
floating-point calculations for X86 and ARM. Calls to fabs(), fabsf(),
sqrt(), sqrtf(), tan(), tanf(), atan(), atanf(),
exp(), expf(), log(), logf(), log10(), log10f(),
sin(), sinf(), cos(), cosf() will in most cases be inlined
by the X86 backend (unless the /Op option is used, see below). The float data type have been
optimized the most.
- Added option /Op[-]. This will 'improve floating-point consistency' by basically
calling runtime functions rather than inlining code.
- Added option /Gn. This will create undecorated names for __stdcall symbols.
- Added option /V. This will emit more information during compilations.
- The compiler will now accept the following pragmas: code_seg("name"),
data_seg("name") and const_seg("name"). This will place
code, variables and/or constant data into the named section(s).
- The inline assembler will now accept the ALIGN value directive.
- The inline assembler will now accept mov reg,offset var.
- The inline assembler will now accept sizeof { typedef-name | symbol | field.name },
which will return the size (in bytes) of the given typedef-name, symbol or field.name.
- Added __declspec(align(n)) for structures and unions.
- In Microsoft mode (/Ze) I64 and UI64 can now be used as alternate suffixes
for long long constants.
- Added warnings about unused or uninitialized local variables (scalars only).
- Increased buffer limits to be able to compile literal strings larger than 4 kB (up to 64 kB).
- Using labels without a colon, in the inline assembler, is now an error - not a warning.
Resource Compiler:
- Most of the parser is rewritten. Should be closer to Microsoft's RC.EXE (but not 100% -
RC.EXE has some quirks I don't want to incorporate). Simple expressions (+ - * / ~ ( ) )
is now accepted anywhere a number is allowed (not in identifiers). Dialog and control styles needs
special handling. This part is still somewhat limited, but should be OK for most cases.
- Added support for RC.EXE style octal numbers: 0onnnn in the resource compiler.
- Added support for multiple VarFileInfo version blocks.
Linker:
- Added option /IMPLIB:filename to rename import libraries.
- Added additional checks for odd cases produced by 'other' translators, like FASM and GoAsm.
Library Manager:
- Creating import libraries directly from a DLL will now only add an underscore to function names - that
doesn't look like a __stdcall symbol. This should be more in line with the other tools.
C runtime:
- Added mmintr.h and xmmintr.h to the distribution. They contain type definitions
for working with MMX (mmintr.h) and SSE/SSE2 (xmmintr.h) data types from the inline assembler.
- Added runtime functions _strrev, _wcsrev, _putenv, _getpid, _get_osfhandle,
_utime and _futime. Also added include file sys\utime.h.
- Added support for Microsoft style format specifier I64/UI64 to printf, scanf families.
- Added newapis.h to the distribution. It contains wrapper functions for some Windows API functions
not implemented on Windows 95, or Windows NT less than 4.0 SP3.
Bugs:
- Bugfix: Both the compiler and the resource compiler will now accept forward slashes in #include directives.
- Bugfix: Adding a relative path through the /I option didn't work reliably in the compiler and resource compiler.
- Bugfix: Digraph characters (<: :> <% :> %: %:: - same as [ ] { } # ##) should only be translated
on the token level, not in strings, for example.
- Bugfix: Empty character literals wasn't rejected by the compiler - as they should.
- Bugfix: Animated cursors were written with the wrong size in one of the header fields. This made it
impossible to use them as resources.
- Bugfix: Imported Manifest files should be assigned the id 1 (CREATEPROCESS_MANIFEST_RESOURCE_ID).
- Bugfix: Removed fixed limit on the length of menu texts in the resource compiler.
- Bugfix: The resource compiler was always searching for windows.h, in an attempt to support Borland
resource scripts.
- Bugfix: The instruction jecxz didn't work in the inline assembler.
- Bugfix: A stack frame is always emitted if a function uses inline assembly.
- Bugfix: Taking the address of an argument failed in the ARM backend.
- Bugfix: Some float constants wasn't emitted correctly to the assembler by the ARM backend.
- Bugfix: Variable length array declaration "char (*pvla)[n]" wasn't recognized.
- Bugfix: Some segment overrides didn't work in the inline assembler (for example: mov ds:[esp+2*4],ebx)
- Bugfix: The inline assembler lost the offset in mov reg,var + offset.
- Bugfix: Added conditionals to ctype.h, so it will work on Pocket PC and SmartPhones.
- Bugfix: Added conditionals to math.h (cos, cosh, log, log10, log2, sin, sinh), so it will work
on Pocket PC and SmartPhones.
- Bugfix: The standard stream stdout is now unbuffered.
- Bugfix: The dialog editor check for modified caption texts wasn't case sensitive.
- Bugfix: The resource editor used SetFocus on the wrong window, causing the MDI system menu to appear
more than once!
- Bugfix: The debugger used different time formats when comparing timestamps of source files.
- Bugfix: Resizing the debugger window, while the debugee was executing, could cause unpredictable results.
- Bugfix: Shutting down the debugger could sometimes cause a memory-leak or a crash. The whole logic has now been revised.
- Bugfix: The debugger read CodeView values larger than 0x8000 wrong (there are several different encodings, depending
on the magnitude of the value - to save space, I guess).
- Bugfix: The debugger would sometimes suspend all threads. Not very useful if you want the debugee to continue
executing... ;)
- Bugfix: The check for externally modified files have now been moved to idle processing, to prevent
problems when restoring a minimized IDE application.
- Bugfix: DirectX samples Animate and Vertex sometimes didn't start due to a buggy message-loop.
- Bugfix: Displaying custom help files in CHM format caused a crash.
- Bugfix: Menu popup options (Grayed, Default, ...) wasn't written to the resource script by the IDE.
- Bugfix: The debugger displayed floating-point values in the wrong register sometimes.
- Bugfix: Changing a global setting like View whitespace didn't repaint all open source windows.
- Bugfix: Several stability fixes to the debugger.
- Bugfix: Using backspace in the binary editor caused an exception.
- Bugfix: Using AddIn_RemoveCommand could remove commands for the wrong add-in.
- Bugfix: Converting unsigned long long integers to floating-point caused an internal compiler error.
- Bugfix: Accessing long long integer arguments, in a leaf function (a function not calling other functions),
generated invalid code with optimizations on.
- Bugfix: The resource compiler didn't handle Windows XP style icons correctly (because of old code which tried
to support non-conforming icon files).
- Bugfix: Indenting lines in the source code editor, with the TAB key, is now only possible if at least one
line break is selected.
|