Коллега, вы льете воду на мою мельницу:
> -- Oleg N. Cher писал(а):
> Присваивание массива системному указателю на безтеговый массив. Вернее, установка этого указателя на данные массива.
Это же совершенно две разные весчи. И это часть причины моего недоумения: это в буквальном смысле непонятно что (я не ругаюсь, действительно жеж непонятно!), и при этом компилятор его компилирует.

Олег, вы, как компиляторщик, глядя на текст, можете сказать, там пересылается 4 байта адреса или вся строка целиком?
А может,
s := "Почему это работает?"Пересылает строку, а
s := t^пересылает адрес?
Или наоборот?

Надо исправить, навести порядок - и задокументировать. Потому что, безусловно, с DLL ками нужно взаимодействовать.

s := SYSTEM.VAL(PtrStr, SYSTEM.ADR("Почему это работает?"));
NEW(t, ...); t^ := "Вот это ясно, почему работает";
s := t;(* есть ли причины это не разрешать? небезопасно, конечно, но "небезопасно"  - это Untagged в переводе. и уж не опасней, чем s := t^ *)
t := s;(* запретить *)

s := SYSTEM.VAL(PtrStr, Libc.malloc(...));
s^ := "Вот это ясно, почему работает";(* тут требуется копирование без проверки индексов; но в принципе компилятор это умеет делать *)
Libc.free(SYSTEM.VAL(Libc.PtrVoid, s));