The zero-series AVRs have a unified address space where flash and RAM are addressable with the same instructions, and the compilers know how to use this. In particular, "literal strings" which used to be put in RAM will now go into flash memory (as if you had used the "F()" macro) by default.
void setup() {}
void loop() {
Serial.print("this ia a alskdjaslkjdl;askjdl ;lkj ;alksdjlasjdljasdjlkjlkjajj lakjdkasjdljasldsajdlkjadlj");
Serial.print("this ia a alskd123e244jls,- 082091830921830912830921830981203jajj lakjdkasjdljasldsajdlkjadlj");
Serial.print("this ia a alskdjasc,mxcn,zxmn,cmxnv/,cnb,cmnb/,vmnb,.vcnb.mnvc.,mbnvc.,mnbm,.cvbndljasldsajdlkjadlj");
Serial.print("this ia a alskdjaslkjdw7e98798078907089708970987890790879087q890w7e89987lakjdkasjdljasldsajdlkjadlj");
Serial.print("this ia a alskdzmbzc097979872[4nzxc09s8fsdnashdkahsdkjhasdkljhakjshdkshalkjdhajklshdkhasjdljasldsajdlkjadlj");
Serial.print("this ia a alskdjaslkj1902739128739812748923740873058743098750987590834750984738957349875934798534785734089734");
Serial.print("this ia a alskdjaslkjdl;a,n,mmxn,mcnx.m,znc.m,xnc,mzxnc,.mzxn.,cmn,n.,mksahdkjhasjdhsaljdgkljashdjahsgdagsjdh");
}
Uses 898 bytes of "dynamic memory" on an Uno, but only 175 bytes on a WiFi2.
Cool!