Orange C 5.22. is released

In this release, the C++ support is up on blocks while I switch it over to use STLPORT as the C++ library. Right now, templates aren't quite working, although the good news is I've definitely simplified the template code... which will make it more manageable as time goes by.

More bugs have been addressed in the IDE and there are some new features. The most important change is that building libraries is properly supported again.

Finally, some work was done to work around more bugs when building with the OPENWATCOM compiler and runtime package. Right now, the tools will build and run when compiled with OPENWATCOM, and the resulting binaries will compile complex programs as well as the RTL.

Some of the changes are as follows:

  • general: increase compatibility when building the tools with openwatcom
  • ocide: ungray 'make' and 'rebuild' and 'build active project' in menus
  • ocide: adjust right click version of 'make' and 'rebuild' to make the selected project instead of making/building everything
  • ocide: fix 'generate make file' to work with non-relative paths and paths with spaces in them
  • ocide: stepping over a function such as gets() that asks for console input would leave the 'stop debugging' icon available, and if you pressed it the IDE would lock up.
  • ocide: fix problems with building static libraries
  • ocide: make '.l' files in projects a dependency of the project EXE to help the make process work better
  • ocide: editor: only need to click once on the tabs at the top of the screen, to change the file being viewed
  • ocide: editor: holding shift down and left-clicking will select lines from the old cursor position to the new one.
  • occ: alloca and _alloca changed to __alloca in the compiler keyword list, then defined again as a preprocessor define in 'malloc.h' to match GNU-C
  • occ: more work done on C++ STL compatibility (work in progress)
  • occ: invariant code motion optimization fixed and put back in the code
  • occ: the constant '0 || 0' would not be evaluated at compile time and in some contexts would cause an error about needing a constant value (compiles lpng now)
  • occ: allow #defines to be utilized properly inside the quotes on #includes
  • occ: make some improvements that speed up the comparison part of generated loops
  • oasm: update preprocessor
  • orc: update preprocessor
  • omake: exit if the dependency nesting is too deep, as it is likely due to recursive rules
  • omake: support quotes on rules and dependencies - the quotes are part of the name
  • olink: fix bug where a ".l" inside a file name (not at the end) would cause a crash
  • olib: fix bug where debug info of structures inside a library would cause the link stage to fail
  • olib: fix bug where +- with fully specified paths could fail
  • olib: fix +- mode to add a file if it doesn't already exist
  • clibs: make adjustments for having changed 'alloca' to a #define
  • clibs: add InterlockedCompareExchange
  • documentation: document predefined preprocessor definitions in various places