Summary of changes in the 1.4 release line
The following list shortly summarizes the changes in
version 1.4.0 compared to version 1.2.6 of AVR Libc, which
was the latest release from the 1.2 release line by the time
1.4.0 was released.
Note that the purpose of the first four changes is to
eventually get rid of the term signal alltogether in
favor of the more common term interrupt (interrupt vector,
interrupt service routine).
- The INTERRUPT() macro has been deprecated, and it will be
removed in a future version. Use __attribute__((interrupt))
explicitly if this functionality is really needed.
- A new ISR() macro has been added, and is now the preferred
form to introduce an interrupt service routine. It is
equivalent to the old SIGNAL() macro, which might become
deprecated in a future version.
- The last remaining parts from <avr/signal.h> have been moved
to <avr/interrupt.h>, so the former header file is no longer
needed, and has been deprecated.
- A new set of interrupt vector names has been added, where the
base name itself is closely derived from Atmel's datasheets and
XML files, with _vect appended. E.g. the former
SIG_INTERRUPT0 now became INT0_vect. The old
names are still available, but their use for new projects is
- A new header file, <compat/deprecated.h> has been established.
Its purpose is to collect deprecated items from older versions of
the library, starting out with the enable_external_int(),
timer_enable_int(), and INTERRUPT() macros/functions, as well as
the old obsoleted inp/outp/sbi/cbi macros.
- The standard IO facilities API has been enhanced:
- The backend functions put and get that are passed to fdevopen()
during the setup of a stream now take the stream itself as an
By defining the macro __STDIO_FDEVOPEN_COMPAT_12 before
including <stdio.h>, an fdevopen() function prototype will be
declared that is backwards-compatible with avr-libc version
1.2 and before.
- It is possible to tie user data to a stream using
fdev_set_udata(), and to retrieve them using fdev_get_udata().
Together with the additional argument to the backend functions,
these functions can now e.g. keep track of internal user state,
or distinguish two different devices using the same backend
- The get backend function can now return _FDEV_EOF to indicate an
end-of-file condition, in addition to _FDEV_ERR for an error
condition. This will affect the internal state that can be
queried using the standard feof() and ferror() functions.
- A new macro fdev_setup_stream() is provided to setup a
user-supplied stream without the need to call fdevopen(), and thus
without requiring malloc(). A similar macro FDEV_SETUP_STREAM()
exists that can be used to initialized a FILE object. The
floating-point implementations of vfscanf() and vfprintf() now
allocate their conversion buffer on the stack, so they do not need
malloc() anymore either.
- An API has been added to track the library version number. See the
documentation of the new header file <avr/version.h>.
- Update the build system to recent versions of autoconf/automake;
the old doconf and domake scripts are gone now
(i.e., standard configure and make just work),
reconf has been renamed to bootstrap.
- Update the documentation system to doxygen >= 1.4.1.
- Major overhaul of the documentation, new layout of the HTML pages,
several clarifications and additions
- Add support for the following new devices (depending on the ability
of the compiler/binutils to handle them):
- The library is now compiled with -Os for avr3 and avr5 MCUs (i.e.
for those with > 8 KB of ROM); used to be -O3 before.
Please refer to the documentation
Last modified: Sun Nov 20 14:22:52 MET 2005