Scripting support, such as conditionals, loops, variables and functions.
Graphical interface.
Dynamic loading of modules in order to extend itself at the run time rather than at the build time.
Portability for various architectures.
Internationalization. This includes support for non-ASCII character code, message catalogs like gettext, fonts, graphics console, and so on.
Real memory management, to make GNU GRUB more extensible.
Modular, hierarchical, object-oriented framework for file systems, files, devices, drives, terminals, commands, partition tables and OS loaders.
Cross-platform installation which allows for installing GRUB from a different architecture.
Rescue mode saves unbootable cases. Stage 1.5 was eliminated.
Fix design mistakes in GRUB Legacy, which could not be solved for backward-compatibility, such as the way of numbering partitions."