Skip to content

Latest commit

 

History

History
250 lines (189 loc) · 18.9 KB

VERSIONS.md

File metadata and controls

250 lines (189 loc) · 18.9 KB

XC16++ versioning scheme

XC16++ releases are identified by a single number, called "revision number", which is incremented for every new release. Every XC16++ revision is compatible with all XC16 versions that were available at the moment of the release.

Therefore, downloadable binary packages have two version numbers encoded in the filename. For instance:

xc16plusplus-v1.30r2-linux.tar.gz
                  ^^ ----> This is XC16++ revision 2 ...
             ^^^^^ ------> ... to be installed on top of XC16 v1.30

The revision number of an installed XC16++ compiler can be queried with:

$ xc16-g++ --version
elf-g++ (Microchip Technology) 4.5.1 (XC16, Microchip v1.30, (A) XC16++ r2) Build date: Jun  6 2020

Starting from revision 2, the revision number is also implicitly defined as the __XC16PLUSPLUS_REVISION__ macro in all C++ compilation units.

Note: The first XC16++ release did not follow the above scheme: downloadable binary packages have v1 instead of r1 in their names and only supported XC16 v1.23, v1.24 and v1.25.

XC16++ changelog

r1 (Apr 19, 2016)

  • First XC16++ release. It only supports XC16 v1.23, v1.24 and v1.25.

r2 (not released yet)

  • Added support for Named Address Spaces: keywords such as __eds__ and __psv__ can now be used in C++ code. As a consequence, the previously suggested workaround of including libpic30++.h instead of libpic30.h is no longer needed and the libpic30++.h file has been removed from the release package.
  • Macros __XC16PLUSPLUS__ and __XC16PLUSPLUS_REVISION__ are now implicitly defined in all compilation units.
  • Support for all XC16 versions released so far, from v1.00 to v1.50. In order to match XC16's system requirements, XC16++'s v1.50 executables are 64-bit on all platforms.

Supported XC16 versions

This file lists all supported XC16 versions, links to download them from the Microchip website and some notes about the corresponding XC16++ variant.

If you want to install XC16++, you have to download and run the XC16 installer for you operating system (you can use one of the following links, provided for convenience) first. Once XC16 is installed, you can unpack the corresponding XC16++ release package on top of it. Please refer to README.md file for the details.

The links to the source archives are provided for reference only. They contain Microchip's official XC16 source code, without any patch from the XC16++ project. Please refer to the xc16plusplus-source repository (there is one branch for each supported XC16 version) for the actual XC16++ source code.

v1.00

This is the first XC16 version ever released by Microchip.

v1.10

v1.11

v1.20

v1.21

v1.22

v1.23

v1.24

v1.25

Unlike the previous versions, upstream XC16 now uses the MPLAB C30 C library by default (i.e. option -legacy-libc was made the default option). It is not compatible with the C++ compiler, so be sure you compile your firmware with the -no-legacy-libc compiler option.

v1.26

The device headers (i.e. xc.h) shipped with upstream XC16 are no longer compatible with options -std=c++98 and -std=c++0x. If your project uses such compiler options, replace them respectively with -std=gnu++98 or -std=gnu++0x.

v1.30

v1.31

v1.32

v1.33

v1.34

v1.35

v1.36

v1.40

v1.41

v1.49

This XC16 version is a "Functional Safety" release. It requires a special license from Microchip. The corresponding XC16++ compiler is available but untested.

v1.50

This is the first 64-bit XC16 release by Microchip. Starting from this version, XC16++ executables are compiled in 64-bit mode too.