## MLton 20241230

# 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`.