## 1.3 Bug fixes

A various number of small bug fixes have been incorporated to the new release. Notable ones are:

- `IsOdd` was incorrectly returning `false` when given an odd negative number. It now returns `true` as expected.

- Weak dictionaries can now be finalized via other weak dictionaries. A fixpoint has to be computed in the garbage collector in order to determine which ones had to be finalized. This fixpoint computation has been added.

- Unification is now fully incremental. Unifying streams no longer causes memory leaks, for instance. The unification algorithm has been fixed to handle all cases where a part of the unification cannot proceed immediately. So unifying `X|Xs=Y|Ys` where `Xs` and `Ys` are read-only binds `X=Y`, and resumes the unification statement to `Xs=Ys`, which removes the reference to `X` and `Y`. The new implementation also handles gracefully record containing distributed variables: unifying `X#Y=foo#bar` with `X` and `Y` distributed performs the distributed bindings `X=foo` and `Y=bar` in parallel, and no longer sequentially.

- There were also some important bug fixes in the marshaler, which are orthogonal to the new distribution layer.

- The executable `ozengine` can now belong to a directory whose path contains spaces. Similarly, functors compiled as executables can be run from a path different than `'.'` using paths containing spaces.