Summary of changes in the 1.8 release line

Starting with the 1.7 release line, the avr-libc project no longer followed the Linux-style release numbering (odd vs. even minor numbers for development/release branches) but simply increased the version number with each release. There is no longer a separately maintained stable branch.

The major reason for the version bump to 1.8 was the deprecation of a number of typedefs provided by the header file <avr/pgmspace.h>: all the type names starting with prog_ (like prog_char, prog_uint16_t and so on) are now no longer declared by default. In order to include the declarations of these typedefs, the preprocessor macro __PROG_TYPES_COMPAT__ must be declared before including this header file, either by a respective #define directive, or by a -D commandline option.

The pointer type macros PGM_P and PGM_VOID_P have been changed to no longer use these typedefs but generic const char *, and const void * types instead.

The reason for this was that these type names have proven to be not useful in any way, since actually taking care of using the proper access methods when accessing objects declared that way has always been in the responsibility of the developer anyway. There is nothing the compiler could do technically to prevent the developer from erroneously using the wrong access method (SRAM vs. flash ROM).

Please refer to the documentation for details.


Last modified: Mon Jan 2 16:10:26 MET 2012