Já to vnímám takto:
Something will happen BY 2100 – říkám, kdy se daná věc zhruba stane,
můj focus je ta daná věc, událost, komunikuji čas, kdy k ní dojde.
Something will have happened by 2100 – říkám, co v nějaký čas už
bude hotové, můj focus je ten čas v budoucnosti, rok 2100, komunikuji, co
v dané době bude dosažené, jaké úspěchy tu budou. Nejde mi o tu
činnost jako takovou, ale spíše o její výsledek v tom čase, tedy o to,
jaké to bude v roce 2100.
A jistě, stejně jako u mnoha jiných časů, i zde lze často
zaměňovat, aniž by se význam věty nějak podstatně změnil.