Orange C 5.20. is released

In this release, basic support for C++ has been added. The compiler compiles an old STL well enough to handle maps, vectors, and std::cout. There will be more vetting of the new support and IDE support added in future releases.

Also, The IDE has been improved; many existing bugs have been removed and the support for resource editing works better now.

Finally, the build has been modified to allow easy insertion of new compilers, and several existing compilers were used to successfully build the product including MINGW, CLANG, and OPENWATCOM. As part of this, many errors and warnings reported for the code base have been fixed, resulting in a more stable product. The build process was also vetted so it will now build out of the box.

Some of the changes are as follows:

  • general: use fflush() liberally throughout to speed disk access
  • general: fix sources to compile with OPENWATCOM & MINGW compilers
  • general: switch to #include instead of #include when possible (e.g. except when utilizing OPENWATCOM)
  • occ: defining the same typedef inside of multiple functions resulted in an error
  • occ: rewrite inlining code to make it work better
  • occ: basic support for C++ (no debugging, may have some bugs)
  • occ: fix problem where using debug information while specifying multiple files on the command line would crash the compiler
  • occ: fix problem where browse information would take exponential time due to excess list traversal
  • occ: "array[*index++] ++;" would increment 'index' twice.
  • occ: don't expand inline functions when generating debug code
  • occ: typing "int a int b;" at the beginning of a function body wouldn't result in an error in C99/C11/C++ mode
  • occ: conversion of integers to pointers and vice versa in a function argument was allowed with a warning. Now it is an error.
  • occ: add make dependency generation similar to gnu C
  • occ: fix all the bugs in the string merging algorithm
  • ocide: prettifying/ use default shell font throughout
  • ocide: default to Consolas font for edit windows on vista/7/8, use bitstream mono font on XP.
  • ocide: fix a crash that could occur if you debug a file that was built in release mode
  • ocide: fix a crash that could occur when closing windows
  • ocide: fix a crash due to multiple threads doing a find simultaneously
  • ocide: fix crash that could occur sometime after removing the 'startup' project
  • ocide: fix crash that could occur when clicking the arrow in the title bar on for example the build window
  • ocide: fix crash that could occur when debugger's "stop running" button was pressed
  • ocide: fix crash that could occur sometime after doing a multi-file replace of text
  • ocide: fix random crash in BCC32 compile due to use of the dlawrence memory allocator
  • ocide: fix random crashes due to multiple threads utilizing the open window list
  • ocide: fix various problems with string resources
  • ocide: fix various problems with accelerator resources
  • ocide: fix various problems with menu resources
  • ocide: fix various problems with dialog/control resources
  • ocide: fix various problems with image editor
  • ocide: allow editing font-related meta data
  • ocide: fix problem when specifying the \0 at the end of a version resource string
  • ocide: fix problem parsing generated versioninfo structures
  • ocide: fix problem when changing a resource id from the property window
  • dlpe/orc/ocide: fix problems where version information wouldn't be displayed in OS file details window
  • occ/ocide: allow looking at variables declared in for statements (c99)
  • occ/ocide: allow looking at variables declared in 'static' functions
  • occ/ocide: improve debugging of control statements
  • olink/ocide: fix debug type information
  • ocide: set debugger's 'stop on exception' to default to 'yes'
  • ocide: debugger: adjust the search for lines matching an address to use the next lower line if the PC isn't parked exactly on a line's first address.
  • ocide: if a symbol is not found in the statics of the current file or the globals do an unqualified search of all statics to see if it can be found anywhere
  • ocide: allow debugger to stop cleanly when program is still running
  • ocide: enable code completion again (it was broken during code cleanup)
  • ocide: don't close code completion window so gratuitously, but close if a non-symbol character is typed
  • ocide: enable find-next immediately after opening ide
  • ocide: enable finds in files without an extension
  • ocide: editor: in typeover mode, typing at end of line will insert characters on line instead of typing over the end of line character
  • ocide: resolve disparaties between find and find in files
  • ocide: fix problems with context sensitive help not being right in some dialogs
  • ocide: fix problems with cancel buttons on the external tools dialogs not working
  • ocide: default new files to a format notepad can read properly
  • ocide: when selecting an error from the information window, the cursor might move to the wrong line if lines were inserted or deleted
  • ocide: fix backups of project and workspace files
  • ogrep: when the -d option was used with an explicit filename, ogrep would complain 'file not found' in any directory that didn't have the file
  • orc: allow specifying extended font parameters on the DIALOGEX FONT line
  • orc: allow path specifications in file names
  • oasm: __db was considered same as 'db' and so forth...
  • omake: add support for common TREE builds
  • clib: fix _beginthreadex to return the thread id properly
  • clibs: add a #define for the more or less standard variable 'environ'
  • clibs: add a bunch of C++ templates and support functions
  • clibs: no longer distributing lscrtl.dll
  • examples: fix xmlview example

    At this point the only C++ support that hasn't been implemented is builtin support for std::initializer_list.