Size and speed optimisations
This release collects together a number of optimisations for speed and size. You can read about them in more detail in issue #189. To summarise, they are:
- Wrap the libc
atexit
function with a do-nothing replacement. This is one of those methods that's only required if you have a real OS managing your process. - Add a
scons
option for link-time optimisation (lto=yes
). Link-time optimisation can save a lot of space due to the ability to optimise across compilation units. This even benefits those of us that practice 'header-only' development due to its ability to optimise the inefficient layout of the ST standard peripheral library. - Import the small, efficient implementation of the
udiv
instruction from the chromium project. The F0 does not have audiv
instruction so it has to be done in software and the gcc implementation isn't small or efficient. Other MCU families are not affected.