By convention, the entries are strings of the form "name=value", each name is unique, order doesn't matter, and "" is not a valid name.
Also, due to the representation:
Names cannot contain the '=' character.
Neither names nor values can contain '\000'.
On Windows, name comparison is (ASCII) case-insensitive. The convention of always using uppercase ASCII names for environment variables will avoid different behaviour across platforms.
Note: this type is currently exposed for backwards compatibility and will likely be made abstract in the future. The array is intended to be immutable.
override bindings t is a new environment which is like t except that the updates in bindings have been applied.
Each entry in bindings is a (name, new_value) pair. new_value can be None to remove name (ignored if name is not present).
If there are several bindings for the same name in bindings then the last one is used. If there are several bindings for an updated name in t then all are removed first.