The major points relevant to Arduino users include:
- Cleanup of the MCUSR (reset reason) behavior.
- Ability to jump to the bootloader "as a service" to reload new code (with a bit of care.)
- an available do_spm() function that allows an application to write to flash memory by calling code withing the bootloader.
- update switches for more recent compiler versions (as consequence is that it no longer quite works with WinAVR or the IDE1.0.3 compiler.)
- Add options and "help" target to makefiles.
- Fold in Hans's (MCUDude's) miniCore, megaCore, mightyCore, and majorCore to support a very large number of ATmega targets.
- Fold in DrAzzy's ATtinyCore, to support a bunch of the more capable ATtiny targets.
- On targets with 1k bootloaders, include text info about the build in the binar
- Make sure the "Virtual Boot Partition" targets work (needed for (4), but... other platforms too!)
- Add and update test tools and sketches.
- with a bit of luck, you COULD compile an ATmega328 Optiboot that includes EEPROM read and write capability that still fits in 512bytes (but you have to turn off the do_spm feature, and removing the startup LED blinking.)
- Various internal cleanups and generalizations.
Most of this work has been available for a long time now, from MCUDude, DrAzzy, and/or Majekw. I've just finally gotten around to including it in the "master" Optiboot tree.
There is a .json package for the board manager on the release sub-page, but it's become quite minimal compared to the targets and options that are supported. Unless you want to mess with the source code or build a bootloader with a particularly strange combination of features, it is a much better alternative to use one of the "board" definitions from MCUDude or DrAzzy that include a wide variety of .hex files of the bootloader, AND "core" code to support the processors. (MCUDude's cores contain several thousand permutations of optiboot*.hex files for different baud rate, processor clock rates, and uart choice.