OrangeC Compiler And Tool Chain
This is a maintanenance release for ongoing work with cmake integrations. The primary motivation for it is to upgrade the sqlite3 amalgamate being used by the project, to fix a bug with creating indexes in the debug information file.
fixes in this release:
this is a maintenance release. The primary reason for having a release now is to support various changes that are required for cmake support, so that we can continue the cmake integration. There is also work to better support the gnu cobol compiler's test suite, and continuing work for C23 support.
We also switched the versioning back to the standard three-number scheme now instead of continuing to use the 4-digit scheme used by windows.
This release was primarily bug fixes and testing. Omake is much improved both in terms of resolving crashes and in terms of compatibility with GNU make, and various compiler bugs were fixed; some new library functions were added as well and there are a few new features such as delay loading of dlls. Work for C23 is partway done at this point.
changes include:
This version improves the generated code in terms of size and speed, and improves compile times. It also has various rewrites that improve maintainability.
Along the way there have been other bug fixes, as well as evaluating compilation of several new programs.
A list of changes follows:
Many changes were made in response to bug fix requests made by the community. One of the most important things that happened is that the Windows headers were completely overhauled; instead of the halfway useable headers we had we are now using the complete headers found in the Pelles C compiler. This is a more robust approach to windows headers.
There were also many bug fixes to the runtime library.
This is a list of changes:
project: fix some problems found by static analysis
project: update to VS2022 community
project: clean up make files
project: fix some issues in the MD documentation
project: define WIN32_LEAN_AND_MEAN throughout
project: add hooks to provide more information on crashes
project: add wrappers to emulate GCC and AR (translates switches)
occ: assigning to a structure returned by pointer should work
occ: fix problems initializing substructures with structured values
occ: add declspec(deprecated)
occ: two macros could match even if they have arguments
occ: get rid of C++ error about not being able to pass an array of structured values
occ: update #pragma pack to allow the push, pop syntax (for pelles C headers)
occ: allow compiler to be build with MINGW64 on MSYS2
occ: fix crash when using a wildcard to specify files on the command line
occ: fix bug in optimizer: strength reduction with a value returned from a function crashes
occ: handle __forceinline a little better
occ: fix multicharacter character constants to work a little better
occ: fix declarator assignment of structure elements, to clear out the entire structure
occ: clean up 'void function returns value' error
occ: fix command line help text: /o option definition was confusing
occ: fix crash when multiple files on the command line use the make_integer_seq builtin template
occ: '$' is a valid character within symbols
occ: add -funsigned-char
occ: add computed-goto
orc: expand prototype and structure parsing to handle more use cases
omake: fix a bug where white space in a define should have resulted in an EOL being inserted when the define was used
omake: could take more than the allotted number of job slots
rtl: use PELLES C windows headers, this is a more complete and standard set of headers
rtl: add missing flags to unix-style file headers
rtl: fix problem with inttypes.h macros not being declared in some cases
rtl: fix problem parsing signalling nans
rtl: fix time_t value to be correct
rtl: fix fstat to work a little better
rtl: fix _stat to work with CRTDLL.DLL
rtl: fix so that it can compile against lscrtl.dll again
rtl: add missing string, shift, and heap functions
rtl: fix some prototypes to use size_t
rtl: add wide character versions of various ANSI C functions
rtl: add 64-bit time_t and support it
rtl: add the various windows-style stat functions
rtl: fix bugs with wide character file i/o
rtl: add a 'placeholder' version of intrin.h which does nothing
rtl: update climp.dll to have more imported functions from the OS
rtl: support Windows XP by performing an indirect usage of GetLargePageMinimum only when available
rtl: null terminate fmemopen buffer when flushed or closed.
This release is primarily to take an initial look at the tests that come along with the libcxx library. Substantianal improvements to parsing and code generation were made as a result.
Omake was also updated with more C++ compatible code, and effort went into handling various issues with parallel makes
The following issues were addressed, along with many more improvements for handling the libcxx tests that aren't listed.
The major features in this release are:
additionally there were serveral bug fixes:
This version adds support for LIBCXX version 10, targeted for a C++14 compiler. It also expands the library functionality to include support for atomics and threading. And it adds support for some new C RTL functions.
a full list of changes follows:
This release finished the milestone started in release 6.0.44.1, by rounding out the work with compiling MPFR, and fixing other miscellaneous bugs.
this release reworks the assembler so that it will additionally parse ATT assembler sources, and splits the compiler into three pieces for better maintenance. It also removes OCIDE from the install and into a separate github project. Changes are as follows:
note that this is a WIP, right now the MSDOS binaries will not work. They will be fixed in the next released.