Die DisplayCond 'FIELD:uid:>:0' funktioniert seit PHP 8.0 nicht mehr, um auf einen neuen Datensatz zu prüfen.
Das liegt daran, dass PHP ab Version 8 "Vernünftige String-zu-Zahl Vergleiche" eingeführt hat.
https://www.php.net/releases/8.0/de.php#saner-string-to-number-comparisons
Vergleicht man jetzt einen nicht numerischen String mit einer Zahl, dann wird jetzt die Zahl zu einem String konvertiert und es wird ein String-Vergleich durchgeführt.
Vor Version 8 war es anders herum. Da wurde der nicht numerische String zu einer Zahl konvertiert und es wurde ein Zahlen-Vergleich durchgeführt.
Schaut man sich die Klasse TYPO3\CMS\Backend\Form\FormDataProvider\EvaluateDisplayConditions genauer an, dann wird klar wieso es für 'REC:NEW:false' weiterhin funktioniert.
In der Methode matchFieldCondition wird der Inhalt des Feldes 'uid' direkt mit 0 verglichen und es greift der neue "Vernünftige String-zu-Zahl Vergleich" von PHP 8. Es wird also ein String-Vergleich durchgeführt.
Ein wenig anders ist es in der Methode matchRecordCondition. Hier wird zwar auch der Inhalt des Feldes 'uid' mit 0 verglichen. Allerdings wird der Inhalt vorher zu einer Ganzzahl konvertiert. Dadurch sind die beiden Werte Typengleich und es wird ein Zahlen-Vergleich durchgeführt.
Nicht betroffen sind die von Stefan Bürk beschriebenen vergleiche bei 'FIELD:sys_language_uid:>:0'. Das liegt daran, da es sich hier bei den Werten in dem Feld 'sys_language_uid' um numerische Strings oder dem Leer-String handelt.