I pushed Solution 1 as commit 193e0ee9aa8705dcc0020eaaf6bfb6714db6f9ca today.

The various alternatives are compared/contrasted here, if this ever needs to be revisited.

  http://hackage.haskell.org/trac/ghc/wiki/Plugins/ReinitializeGlobals

(Though perhaps the page name isn't quite on-the-nose anymore.)


On Thu, Jul 4, 2013 at 7:54 PM, Nicolas Frisby <nicolas.frisby@gmail.com> wrote:
I'm validating Option 2 at the moment. It works if the plugins force the FastStrings before returning to the host compiler. However, robustness would require that each of the plugin's passes also call reinitializeGlobals, since some FastStrings may have been allocated between the installation of the plugin and its passes.


On Thu, Jul 4, 2013 at 12:26 PM, Nicolas Frisby <nicolas.frisby@gmail.com> wrote:
On Thu, Jul 4, 2013 at 2:52 AM, Simon Peyton-Jones <simonpj@microsoft.com> wrote:
Do you put the FS table back after running the plugin? If not, the same unique may be allocated more than once.

S

No, I did not do that. And writing this email, I realized my initial reasoning was flawed. There are some decisions to be made.

I've written it up here. Feel free to skip Option 1; I think it has the least merit.