| << Prev | - Up - |
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.
| << Prev | - Up - |