There are over 150 new features in MySQL 5.7.
The MySQL manual is very good, but verbose. This is a list of new features in short bullet form. I have tried very hard to make sure each feature is only mentioned once. So InnoDB native partitioning could be mentioned under either InnoDB or partitioning.
Replication
- Multi source replication [1]
 - Online GTID migration path [1 2 3]
 - Improved semi-sync performance [1 2]
 - Loss-less semi-sync replication [1 2]
 - Semi-sync can now wait for a configurable number of slaves [1]
 - Intra-schema parallel replication [1]
 - Ability to tune group commit viabinlog_group_commit_sync_delay andbinlog_group_commit_sync_no_delay_countoptions. [1 2]
 - Non-blocking SHOW SLAVE STATUS [1 2]
 - Online CHANGE REPLICATION FILTER [1]
 - Online CHANGE MASTER TO without stopping SQL thread [1]
 - Multi-threaded slave ordered commits (Sequential Consistency) [1]
 - Support SLAVE_TRANSACTION_RETRIES in multi-threaded slave mode [1]
 - A WAIT_FOR_EXECUTED_GTID_SET function has been introduced [1 2]
 - Optimize GTIDs for Passive Slaves [1 2]
 - GTID Replication no longer requires log-slave-updates be enabled
 - XA Support when the binary log is turned on [1]
 - GTIDs in the OK packet [1]
 - Better synchronization between dump and user threads when racing for the binlog [1]
 - Improved memory management of Binlog_sender [1]
 - Option to suppress "unsafe for binlog" messages in error log [1]
 - Defaults change: binlog_format=ROW
 - Defaults change: sync_binlog=1
 - Defaults change:binlog_gtid_simple_recovery=1
 - Defaults change:binlog_error_action=ABORT_SERVER
 - Defaults change: slave_net_timeout=60
 
InnoDB
- Online buffer pool resize [1]
 - Improved crash recovery performance [1]
 - Improved read-only transaction scalability [1 2 34]
 - Improved read-write transaction scalability [1 23 4]
 - Several optimizations for high performance temporary tables [1 2 3 4 5]
 - ALTER TABLE RENAME INDEX only requires meta-data change [1]
 - Increasing VARCHAR size only requires meta-data change [1]
 - ALTER TABLE performance improved [1]
 - Multiple page_cleaner threads [1]
 - Optimized buffer pool flushing [1]
 - New innodb_log_checksum_algorithm option [1]
 - Improved NUMA support [1]
 - General Tablespace support [1]
 - Transparent Page Compression [1]
 - innodb_log_write_ahead_size introduced to address potential ‘read-on-write‘ with redo logs [1]
 - Fulltext indexes now support pluggable parsers [1]
 - Support for ngram and MeCab full-text parser plugins [1 2]
 - Fulltext search optimizations [1]
 - Buffer pool dump now supportsinnodb_buffer_pool_dump_pct [1]
 - The doublewrite buffer is now disabled on filesystems that supports atomic writes (aka Fusion-io support) [1]
 - Page fill factor is now configurable [1]
 - Support for 32K and 64K pages [1]
 - Online undo log truncation [1]
 - Update_time meta data is now updated [1]
 - TRUNCATE TABLE is now atomic [1]
 - Memcached API performance improvements [1]
 - Adaptive hash scalability improvements [1]
 - InnoDB now implementsinformation_schema.files [1]
 - Legacy InnoDB monitor tables have been removed or replaced by global configuration settings
 - InnoDB default row format now configurable [1]
 - InnoDB now drops tables in a background thread [1]
 - InnoDB tmpdir is now configurable [1]
 - InnoDB MERGE_THRESHOLD is now configurable [1]
 - Defaults change:innodb_file_format=Barracuda
 - Defaults change: innodb_large_prefix=1
 - Defaults change: innodb_page_cleaners=4
 - Defaults change: innodb_purge_threads=4
 - Defaults change:innodb_buffer_pool_dump_at_shutdown=1
 - Defaults change:innodb_buffer_pool_load_at_startup=1
 - Defaults change:innodb_buffer_pool_dump_pct=25
 - Defaults change: innodb_strict_mode=1
 - Defaults change:innodb_checksum_algorithm=crc32
 - Defaults change:innodb_default_row_format=DYNAMIC
 
Optimizer
- Improved optimizer cost model, leading to more consistently better query plans [1 2 3 4]
 - Optimizer cost constants are now configurable on a global or per engine basis [1 2]
 - Query parser has been refactored and improved [1]
 - EXPLAIN FOR CONNECTION [1]
 - UNION ALL does not use a temporary table [1 23 4]
 - Filesort is now optimized to pack values [1]
 - Subqueries in FROM clause can now be handled same as a view (derived_merge) [1]
 - Queries using row value constructors are now optimized [1 2]
 - Optimizer now supports a new condition filtering optimization [1 2]
 - EXPLAIN FORMAT=JSON now shows cost information [1]
 - Support for STORED and VIRTUAL generated columns (aka functional indexes) [1]
 - Prepared statements refactored internally and performance improved [1 2]
 - New query hints using comment-like /*+ */syntax [1]
 - Server-side query rewrite framework [1]
 - ONLY_FULL_GROUP_BY now more standards compliant [1]
 - Support for gb18030 character set [1]
 - Improvements to Dynamic Range access [1]
 - Memory used by the range optimizer is now configurable [1]
 - Defaults change:internal_tmp_disk_storage_engine=INNODB[1]
 - Defaults change:eq_range_index_dive_limit=200
 - Defaults change:sql_mode=ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION Defaults change:
 
- Defaults change: EXTENDED and PARTITIONSkeywords for EXPLAIN enabled by default
 
Security
- Username size increased to 32 characters [1]
 - Support for IF [NOT] EXISTS clause inCREATE/DROP USER [1]
 - Server option to require secure transport [1]
 - Support for multiple AES Encryption modes [12]
 - Support for TLSv1.2 (with OpenSSL) and TLSv1.1 (with YaSSL) [1 2]
 - Support to LOCK/UNLOCK user accounts [1 2]
 - Support for password expiration policy [1 2]
 - Password strength enforcement
 - test database no longer created on installation
 - Anonymous users no longer created on installation
 - Random password generated by default on installation
 - New ALTER USER command
 - SET password=‘‘ now accepts a password instead of hash
 - Server now generates SSL keys by default
 - Insecure old_password hash removed [1]
 - Ability to create utility users for stored programs that can not login [1]
 - mysql.user.password field renamed asauthentication_string to better describe its current usage.
 - Support for tablespace encryption [1]
 
Performance Schema
- Scalable memory allocation [1]
 - Overhead has been reduced in client connect/disconnect phases
 - Memory footprint has been reduced
 - pfs_lock implementation has been improved
 - Table IO statistics are now batched for improved performance
 - Memory usage instrumentation
 - Stored programs instrumentation
 - Replication slave instrumentation
 - Metadata Locking (MDL) Instrumentation
 - Transaction instrumentation
 - Prepared Statement instrumentation
 - Stage Progress instrumentation
 - SX-lock and rw_lock instrumentation
 - Thread status and variables
 - Defaults change: performance-schema-consumer-events_statements_history=ON
 
GIS
- InnoDB supports indexing of spatial datatypes [1]
 - Consistent naming scheme for GIS functions [1]
 - GIS has been refactored internally and is now based on Boost Geometry [1]
 - Geohash functions [1 2]
 - GeoJSON functions [1 2]
 - Functions: ST_Distance_Sphere, ST_MakeEnvelope, ST_IsValid, ST_Validate, ST_Simplify, ST_Buffer and ST_IsSimple [1 2]
 
Triggers
Partitioning
- Index condition pushdown optimization now supported
 - HANDLER command is now supported
 - WITHOUT VALIDATION option now supported forALTER TABLE ... EXCHANGE PARTITION
 - Support for Transportable Tablespaces
 - Partitioning is now storage-engine native for InnoDB
 
SYS (new)
JSON (new)
- Native JSON Data Type [1]
 - JSON Comparator
 - Short-hand JSON_EXTRACT operator (field->"json_path") [1]
 - New Document Store (5.7.12)
 - Functions: JSON_ARRAY, JSON_MERGE, JSON_OBJECT for creating JSON values [1]
 - Functions: JSON_CONTAINS, JSON_CONTAINS_PATH, JSON_EXTRACT, JSON_KEYS, JSON_SEARCH for searching JSON values [1]
 - Functions: JSON_ARRAY_APPEND, JSON_ARRAY_INSERT, JSON_INSERT, JSON_QUOTE, JSON_REMOVE, JSON_REPLACE, JSON_UNSET, JSON_UNQUOTE to modify JSON values [1]
 - Functions: JSON_DEPTH, JSON_LENGTH, JSON_TYPE, JSON_VALID to return JSON value attributes [1]
 
Client Programs
- New mysqlpump utility [1]
 - The mysql client now supports Ctrl+C to clear statement buffer
 - rewrite-db option added to mysqlbinlog [1 2]
 - New mysql_ssl_rsa_setup utility to help set up SSL [1]
 - SSL support added to mysqlbinlog
 - Idempotent mode added to mysqlbinlog
 - Client --ssl changed to now force SSL
 - Enhancements to the innochecksum utility
 - Removal of several outdated/unsafe command line utilities [1]
 - Many Perl command line clients converted to C++
 - Client Side Protocol Tracing
 - Client API method to reset connection
 - New MySQL Shell (mysqlsh) (separate download)
 
libmysqlclient
- Restricted export functions to documented MySQL C API
 - Added pkg-config support
 - Removed _r symlinks
 - Changed so version to 20 (from 18)
 
Building
- Compiler switched to GCC on Solaris
 - MySQL now compiles with Bison 3 (* change also backported)
 - CMake now used to compile on all platforms
 - Unneeded CMake checks have been removed (and unused macros removed from source files)
 - Build support for gcc, clang and MS Studio
 
Misc
- Server new connection throughput improved considerably [1]
 - mysql_install_db replaced by mysqld --initialize [1]
 - Native support for syslog [1 2]
 - Native support for systemd
 - disabled_storage_engines option allows a block list of engines
 - SET GLOBAL offline_mode=1 [1 2]
 - super_read_only option [1]
 - Detect transaction boundaries
 - Server version token and check [1
 - SELECT GET_LOCK() can now acquire multiple locks [1 2]
 - Configurable maximum statement execution time on a global and per query basis [1 2]
 - Better handling of connection id rollover
 - DTrace support [1]
 - More consistent IGNORE clause and STRICTmode
 - A number of tables in the mysql schema have moved from MyISAM to InnoDB
 - Server error log format improved to be consistent
 - Extract query digest moved from performance_schema into the server directly
 - Improved scalability of meta data locking
 - Increased control over error log verbosity
 - Stacked Diagnostic Areas
 - The server now supports a "SHUTDOWN" command
 - Removed support for custom atomics implementation
 - Removed "unique option prefix support" from server and utilities, which allowed options to be configured using multiple names.
 - Removed unsafe ALTER IGNORE TABLE functionality. Syntax remains for compatibility
 - Removed unsafe INSERT DELAYED functionality. Syntax remains for compatibility
 - Removed of outdated sql-bench scripts in distributions
 - Removal of ambiguous YEAR(2) datatype
 - Defaults change: log_warnings=2
 - Defaults change:table_open_cache_instances=16