)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000066,"name":"Adam Joseph","display_name":"amjoseph","email":"adam@westernsemico.com","username":"amjoseph"},"change_message_id":"58360f4b2c37b1e871d178d31ff0bb891905711f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ef096ad2_91b0392f","updated":"2022-11-06 22:58:59.000000000","message":"When I first wrote this, I assumed that in order to make the VM a thread-local, it would be necessary to give up genericity (including being generic over the lifetime of the RuntimeObserver), since thread-locals cannot be generic.\n\nThis assumption is incorrect.\n\nThe trick is that instead of making the *VM* generic, you instead make *Value* generic!  Then you can thread any genericity you like (types, lifetimes, etc) through the entire program.  And you can even thread that genericity through the rust `std` traits: `impl\u003c\u0027o\u003e PartialEq for Value\u003c\u0027o\u003e { ... }`.\n\nIn hindsight this is sort of obvious; as a pure functional language, the central object of Nix is its *values*, not its call stack.","commit_id":"118776c3131dbb6097fec355b09a2968a76f2223"}]}
