MLton 20210117

# Bugs20070826

Here are the known bugs in MLton 20070826, listed in reverse chronological order of date reported.

- Bug in the mark-compact garbage collector where the C library’s memcpy was used to move objects during the compaction phase; this could lead to heap corruption and segmentation faults with newer versions of gcc and/or glibc, which assume that src and dst in a memcpy do not overlap.

  Fixed by revision r7461.

- Bug in elaboration of datatype declarations with withtype bindings.

  Fixed by revision r7434.

- Performance bug in RefFlatten optimization pass.

  Thanks to Reactive Systems for the bug report.

  Fixed by revision r7379.

- Performance bug in SimplifyTypes optimization pass.

  Thanks to Reactive Systems for the bug report.

  Fixed by revisions r7377 and r7378.

- Bug in amd64 codegen register allocation of indirect C calls.

  Thanks to David Hansel for the bug report.

  Fixed by revision r7368.

- Bug in IntInf.scan and IntInf.fromString where leading spaces were only accepted if the stream had an explicit sign character.

  Thanks to David Hansel for the bug report.

  Fixed by revisions r7227 and r7230.

- Bug in IntInf.~>> that could cause a glibc assertion.

  Fixed by revisions r7083, r7084, and r7085.

- Bug in the return type of MLton.Process.reap.

  Thanks to Risto Saarelma for the bug report.

  Fixed by revision r7029.

- Bug in MLton.size and MLton.share when tracing the current stack.

  Fixed by revisions r6978, r6981, r6988, r6989, and r6990.

- Bug in nested _export/_import functions.

  Fixed by revision r6919.

- Bug in the name mangling of _import-ed functions with the stdcall convention.

  Thanks to Lars Bergstrom for the bug report.

  Fixed by revision r6672.

- Bug in Windows code to page the heap to disk when unable to grow the heap to a desired size.

  Thanks to Sami Evangelista for the bug report.

  Fixed by revisions r6600 and r6624.

- Bug in \*NIX code to page the heap to disk when unable to grow the heap to a desired size.

  Thanks to Nicolas Bertolotti for the bug report and patch.

  Fixed by revisions r6596 and r6600.

- Space-safety bug in pass to flatten refs into containing data structure.

  Thanks to Daniel Spoonhower for the bug report and initial diagnosis and patch.

  Fixed by revision r6395.

- Bug in the frontend that rejected op longvid patterns and expressions.

  Thanks to Florian Weimer for the bug report.

  Fixed by revision r6347.

- Bug in the IMPERATIVE_IO.canInput function of the Basis Library implementation.

  Thanks to Ville Laurikari for the bug report.

  Fixed by revision r6261.

- Bug in algebraic simplification of real primitives. REAL<N>.<=(x, x) is false when x is NaN.

  Fixed by revision r6242.

- Bug in the FFI visible representation of Int16.int ref (and references of other primitive types smaller than 32-bits) on big-endian platforms.

  Thanks to Dave Herman for the bug report.

  Fixed by revision r6267.

- Bug in type inference of flexible records. This would later cause the compiler to raise the TypeError exception.

  Thanks to Wesley Terpstra for the bug report.

  Fixed by revision r6229.

- Bug in cross-compilation of gdtoa library.

  Thanks to Wesley Terpstra for the bug report and patch.

  Fixed by revision r6620.

- Bug in pass to flatten refs into containing data structure.

  Thanks to Ruy Ley-Wild for the bug report.

  Fixed by revision r6191.

- Bug in the handling of weak pointers by the mark-compact garbage collector.

  Thanks to Sean McLaughlin for the bug report and Florian Weimer for the initial diagnosis.

  Fixed by revision r6183.

- Bug in the elaboration of structures with signature constraints. This would later cause the compiler to raise the TypeError exception.

  Thanks to Vesa Karvonen for the bug report.

  Fixed by revision r6046.

- Bug in the interaction of _export-ed functions and signal handlers.

  Thanks to Sean McLaughlin for the bug report.

  Fixed by revision r6013.

- Bug in the implementation of _export-ed functions using the char type, leading to a linker error.

  Thanks to Katsuhiro Ueno for the bug report.

  Fixed by revision r5999.