28-Feb-2022: vbcc 0.9h release. New features: Compiler defaults to C99, use -c89 to forbid C99 extensions. Several improved warnings/error messages. New option -sec-per-obj puts all code functions and data objects in their own section, which may be removed by linker section garbage collection. Simple implementation of -merge-strings. Added -warnings-as-errors option. Define macros __OPTSPEED__/__OPTSIZE__ depending on options. Recognize builtin functions with __asm_ prefix. Added -depobj option. Added -force-statics and -prefer-statics. New backends for 6502 and 6809. Support for charset conversions (8-bit targets). Code compressor (currently only for 6502). Better out-of-the-box support for non-8-bit-based types. Several improvements regarding the backend interface. m68k: defines macro __SMALL_DATA__ with -sd option m68k: added -vbcccall/__vbccargs vc: new option -rmcfg-* to disable options from a config file vc: frontend does Unix-path conversion also for -o vclib: New 6502 targets: Atari, BBC, C64, Mega65, NES, Simulator, X16 vclib: New 6809 targets: OS-9, Simulator vclib: __gmtoffset and __dstflag may be overwritten separately vclib: strftime() supports ISO-8601 date format through %F vclib: added strtof() vclib: m68k-amigaos based on NDK 3.2 vclib: m68k-amigaos supports Roadshow additions and vclib: m68k-amigaos adds reaction.lib for ReAction GUI support vclib: m68k-amigaos UTC offset is automatically initialized when possible vclib: m68k-amigaos configs use -amiga-softfloat (inlines) by default vclib: m68k-atari small-data support and libraries vclib: ppc-morphos support for (sysv,base)-ABI libraries vclib: ppc-amigaos adapted to new SDK Performance improvements: Improved function inlining / cross-module inlining. Several improvements in register allocation. Improved constant propagation. New peephole optimizations. New optimization and tuning options for constant initializations. Improved recalculation of stack slots. Slightly improved common subexpression elimination. Range-optimizations and induction variable shortening. Allow strength reduction for constant left-shifts. Handling of volatile is improved. Compile-time calculations of constant pointer values. m68k: improved register allocation m68k: improved Fastcall-ABI support m68k: improved builtin libcalls m68k: improved copying of (long) doubles in memory with the FPU m68k: better use of scaled addressing modes m68k: some FPU code improvements m68k: fixed performance regression of internal memcpy vclib: reworked assembler inlines Bug fixes: Lots of fixes in the compiler core and backends. Thanks for your reports! vclib: bad assert.h in 0.9g: it must be possible to include the assert-macro multiple times (with and without NDEBUG defined) vclib: m68k-amigaos protos declare device library bases with struct Device*. vclib: m68k-amigaos ReAction classes must not be automatically opened with auto.lib but with reaction.lib. vclib: m68k-amigaos adds missing InvertString() for amiga.lib vclib: PPC 64-bit signed modulo fixed vclib: fixed mktime(), tm_mday is 1-based, and recognize gmtoffset vclib: fgetpos() has to return 0 on success In such a complex project there will of course be bugs. Most, especially the serious, bug fixes will be available immediately as a patch. The rest comes with the next release, or by request from the author (see below). Downloading vbcc 0.9h. You need to pick the appropriate binary archive for your host platform. Then you can add as many target archives as you need. Example: If you own a Pegasos running MorphOS and would like to develop programs for MorphOS and AmigaOS/68k, you have to pick the vbcc_bin_morphos archive for the binaries as well as the target archives vbcc_target_ppc-morphos and vbcc_target_m68k-amigaos. Install the binary archive first, using the provided Amiga installer, then add the targets. The PowerUp and WarpOS binary archives are additional, which means that you need to have a base binary archive already installed. Typically this would be the vbcc_bin_amigaos68k archive. All target archives are lha-packed, including an Installer script to work under AmigaOS/MorphOS. Target archives in tar.gz format are for Unix/MiNT, without Installer and config files. Target archives in zip format are recommended for Atari TOS systems, which use a different layout due to file system restrictions. Other host platforms. vbcc is portable enough to run on all operating systems which offer a working ISO-C99 compiler, e.g. BSD, Linux, MacOS and Windows. The latest release source for vasm is available here and for vlink here. A recent vbcc source snapshot is available here, but it is only rarely updated (check the date). This release's source archives are available via the links directly below. vbcc0_9h.tar.gz The vbcc V0.9h release source. vasm1_9.tar.gz The vasm V1.9 release source. vlink0_17.tar.gz The vlink V0.17 release source. vbcc_bin_amigaos68k.lha AmigaOS 2.x/3.x 68020+ binaries. vbcc_bin_amigaosppc.lha AmigaOS 4.x binaries. vbcc_bin_morphos.lha MorphOS binaries. vbcc_bin_powerup.lha Additional PowerUp binaries. For use under AmigaOS/68k. vbcc_bin_warpos.lha Additional WarpOS binaries. For use under AmigaOS/68k. vbcc_bin_mint.tar.gz Atari MiNT binaries. No installer. vbcc_bin_win64.zip Windows 64-bit binaries. No installer. vbcc_target_m68k-amigaos.lha Compiler target AmigaOS 2.x/3.x M680x0. vbcc_target_m68k-kick13.lha Compiler target Amiga Kickstart 1.2/1.3 M680x0. vbcc_target_m68k-atari.lha Compiler target Atari TOS/MiNT M680x0. vbcc_target_m68k-atari.tar.gz Compiler target Atari TOS/MiNT M680x0 (for Unix/MiNT hosts). vbcc_target_m68k-atari.zip Compiler target Atari TOS/MiNT M680x0 (for TOS hosts). vbcc_target_cf-atari.lha Compiler target Atari TOS/MiNT ColdFire. vbcc_target_cf-atari.tar.gz Compiler target Atari TOS/MiNT ColdFire (for Unix/MiNT hosts). vbcc_target_cf-atari.zip Compiler target Atari TOS/MiNT ColdFire (for TOS hosts). vbcc_target_m68k-jaguar.lha Compiler target Atari Jaguar M68k. vbcc_target_m68k-jaguar.tar.gz Compiler target Atari Jaguar M68k (for Unix/MiNT hosts). vbcc_target_ppc-amigaos.lha Compiler target AmigaOS 4.x PowerPC. vbcc_target_ppc-morphos.lha Compiler target MorphOS PowerPC. vbcc_target_ppc-powerup.lha Compiler target PowerUp PowerPC. vbcc_target_ppc-warpos.lha Compiler target WarpOS PowerPC. vbcc_unix_config.tar.gz Default config files for all targets with Unix installation paths. Installation procedure for AmigaOS/MorphOS: Just click the Install icon. Or refer to chapter 1.3.3 of the documentation for a manual installation. Installation procedure for MiNT: Refer to the Unix installation instructions in chapter 1.3.1 of the vbcc manual. You may want to download the Unix default config files from above. Installation procedure for Windows: Refer to the DOS/Windows installation instructions in chapter 1.3.2 of the vbcc manual. Please support vbcc by contacting the authors if you find any bugs or problems. Supporting nine different architectures makes testing extremely time consuming, so this release is probably not free of bugs. For problems with the compiler core contact Dr. Volker Barthelmann (vbemail), and for Amiga/Atari-specific problems, including assembler, linker, startup-codes and linker-libraries, contact Frank Wille (fwemail).