A complete list of the changes in R 3.5.0 can be found here. I’m picking out two (personal) highlights here.
Duplicate labels allowed in
> factor(0:3, levels = 0:3, c("old", "old", "new", "new"))  old old new new Levels: old new
Compact internal representation of arithmetic sequences (only the first and last values are stored). This change is courtesy of the ALTREP framework. This means that you can create astronomically large sequences without running into memory constraints.
# R-3.4.4 > x <- 1:1e9 Error: cannot allocate vector of size 3.7 Gb # R-3.5.0 > x <- 1:1e9 > x <- 1:1e12
The second item above is going to have serious efficiency impacts and enable some actions that were previous impossible due to memory constraints.