# 14 Porting to Python 2.4

This section lists previously described changes that may require changes to your code:

- Left shifts and hexadecimal/octal constants that are too large no longer trigger a `FutureWarning` and return a value limited to 32 or 64 bits; instead they return a long integer.

- Integer operations will no longer trigger an `OverflowWarning`. The `OverflowWarning` warning will disappear in Python 2.5.

- The `zip()` built-in function and `itertools.izip()` now return an empty list instead of raising a `TypeError` exception if called with no arguments.

- `dircache.listdir()` now passes exceptions to the caller instead of returning empty lists.

- `LexicalHandler.startDTD()` used to receive the public and system IDs in the wrong order. This has been corrected; applications relying on the wrong order need to be fixed.

- `fcntl.ioctl` now warns if the mutate argument is omitted and relevant.

- The `tarfile` module now generates GNU-format tar files by default.

- Encountering a failure while importing a module no longer leaves a partially-initialized module object in `sys.modules`.

- `None` is now a constant; code that binds a new value to the name "`None`" is now a syntax error.