Attached is the final (I hope) version of the changes I've been pushing to the "declarednull" branch in git. tl;dr with this option set "typeset foo" leaves foo unset, in contrast to the default behavior which assigns foo="". For those who've lost track, this originated from the thread "Bug with unset variables" in workers/47351 and the first pass at this approach appeared in workers/47697. The doc update includes mention of the problems with searching for (or in) empty strings, from the thread at workers/47729, and the new test file E03posix.ztst has "xfail" tests for nine incompatibilities that were recently enumerated in a number of messages on the list. I considered making a couple of patches but one would have been very small and the other would patch a newly-created file, so it didn't seem worthwhile. I chose TYPESET_TO_UNSET as the option to control this, to go along with TYPESET_SILENT and because it works a bit better when negated as NO_TYPESET_TO_UNSET. E03posix.ztst runs with this option set to avoid having to duplicate all the tests; that can be fixed later if necessary. I documented the default initialization behavior to contrast it with the TYPESET_TO_UNSET behavior, rather than try to explain the latter in isolation.