Changelog for recover-rtti-0.6.0

Revision history for recover-rtti

0.6.0 -- 2026-03-05

THIS IS AN IMPORTANT BUGFIX RELEASE; PLEASE UPGRADE. Previous versions of recover-rtti may result in segfaults. Details below.

This release changes how we classify containers. In versions prior to 0.6, we would classify a list such as [True, False] as C_List (C_Prim C_Bool). We did this by looking at the first element of the list, if one existed; if the list was empty, we'd classify it as C_List C_Void. This is however not always correct. Suppose we have a list of lists, and the first inner list happens to be empty. We'd then classify the list of lists as C_List (C_List C_Void), but that is of course wrong: the next inner list might not be empty, and classifying it as [Void] (and then attempting to print it) could result in segfaults.

Starting in version 0.6 we defer classification of type arguments, merely classifying a list as C_List, implying that its type is [Deferred]. Specific applications, such as anythingToString, will then recursively classify each element prior to printing it.

We do make two exceptions to this rule:

Since each element is individually classified, there is no need for the BoxAnything workaround anymore, which has therefore been deleted.

With thanks to Brandon Chinn for the report and the minimal reproducer (#51).

0.5.3 -- 2026-01-07

0.5.2 -- 2025-12-16

0.5.1 -- 2025-07-19

0.5.0 -- 2024-06-12

0.4.3 -- 2023-06-05

0.4.2 -- 2023-03-23

0.4.1 -- 2022-03-17

0.4 -- 2021-06-30

This release is backwards incompatible with 0.3, but users that simply use anythingToString should be unaffected.

0.3.0.0 -- 2021-03-17

0.2.1.0 -- 2021-03-17

0.2.0.0 -- 2021-03-15

0.1.0.0 -- 2021-03-11