)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"1479d2dbb2c27337fae6ae043cb9359f5ba37431","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c3f3d972_46dbbdc0","updated":"2022-11-05 22:12:28.000000000","message":"Thanks for writing this all up (and of course for the initial implementations!)!","commit_id":"d11bc1015edd401880d13e064721398ca0626737"}],"tvix/eval/docs/abandoned/thread-local-vm.md":[{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"1479d2dbb2c27337fae6ae043cb9359f5ba37431","unresolved":true,"context_lines":[{"line_number":5,"context_line":"implement `Eq`, `Hash`, or any of the other `std` traits."},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implementing `std` traits on `Value` was deemed harmful because IFD"},{"line_number":8,"context_line":"(which is outside of the \"nixpkgs compatibility only\" scope) can"},{"line_number":9,"context_line":"cause arbitrary amounts of compilation to occur, including network"},{"line_number":10,"context_line":"transactions with builders.  Obviously it would be unexpected and"},{"line_number":11,"context_line":"error-prone to have a `PartialEq::eq()` which does something like"}],"source_content_type":"text/x-markdown","patch_set":2,"id":"3418997b_0dbd0b65","line":8,"range":{"start_line":8,"start_character":1,"end_line":8,"end_character":59},"updated":"2022-11-05 22:12:28.000000000","message":"it is however inside the \"TVL compatibility\" scope (we have lots of IFD - and it is very slow in Nix, which was a big motivator for starting the Tvix project!)\n\nI think we point out in the Tvix announcement blog post that well-working IFD is a priority for Tvix, as this allows us to compete with e.g. Bazel in the future (which isn\u0027t possible nicely without IFD).","commit_id":"d11bc1015edd401880d13e064721398ca0626737"},{"author":{"_account_id":1000066,"name":"Adam Joseph","display_name":"amjoseph","email":"adam@westernsemico.com","username":"amjoseph"},"change_message_id":"bb206262597c9820510bfab60c3206067feddbad","unresolved":false,"context_lines":[{"line_number":5,"context_line":"implement `Eq`, `Hash`, or any of the other `std` traits."},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implementing `std` traits on `Value` was deemed harmful because IFD"},{"line_number":8,"context_line":"(which is outside of the \"nixpkgs compatibility only\" scope) can"},{"line_number":9,"context_line":"cause arbitrary amounts of compilation to occur, including network"},{"line_number":10,"context_line":"transactions with builders.  Obviously it would be unexpected and"},{"line_number":11,"context_line":"error-prone to have a `PartialEq::eq()` which does something like"}],"source_content_type":"text/x-markdown","patch_set":2,"id":"27181312_deb7bb40","line":8,"range":{"start_line":8,"start_character":1,"end_line":8,"end_character":59},"in_reply_to":"3418997b_0dbd0b65","updated":"2022-11-06 23:15:34.000000000","message":"Done; please see https://cl.tvl.fyi/c/depot/+/7193/4","commit_id":"d11bc1015edd401880d13e064721398ca0626737"},{"author":{"_account_id":1000001,"name":"tazjin","email":"tazjin@tvl.su","username":"tazjin"},"change_message_id":"1479d2dbb2c27337fae6ae043cb9359f5ba37431","unresolved":true,"context_lines":[{"line_number":13,"context_line":"compatibility only\" scope, or in any undeprecated language feature"},{"line_number":14,"context_line":"other than IFD."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This was the sole reason for not merging."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"The explanation below may be useful in case future circumstances"},{"line_number":19,"context_line":"affect the relevance of the reasoning above."}],"source_content_type":"text/x-markdown","patch_set":2,"id":"992b8167_c70ea4b0","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":41},"updated":"2022-11-05 22:12:28.000000000","message":"It\u0027s a big blocker, however I\u0027d also add that I (and to some extent also grfn) are skeptical about things like VM just \"appearing\". It\u0027s got a bit of spooky-action-at-a-distance feeling, which isn\u0027t necessarily bad but it feels a bit too early to add stuff like that (before *we* even really understand everything, as it\u0027s possible that we\u0027ll add things like multithreading to the VM later which might have an impact on this).","commit_id":"d11bc1015edd401880d13e064721398ca0626737"},{"author":{"_account_id":1000066,"name":"Adam Joseph","display_name":"amjoseph","email":"adam@westernsemico.com","username":"amjoseph"},"change_message_id":"bb206262597c9820510bfab60c3206067feddbad","unresolved":false,"context_lines":[{"line_number":13,"context_line":"compatibility only\" scope, or in any undeprecated language feature"},{"line_number":14,"context_line":"other than IFD."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"This was the sole reason for not merging."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"The explanation below may be useful in case future circumstances"},{"line_number":19,"context_line":"affect the relevance of the reasoning above."}],"source_content_type":"text/x-markdown","patch_set":2,"id":"f99dba02_377147f8","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":41},"in_reply_to":"992b8167_c70ea4b0","updated":"2022-11-06 23:15:34.000000000","message":"\u003e I (and to some extent also grfn) are skeptical about things like VM just \"appearing\".  It\u0027s got a bit of spooky-action-at-a-distance feeling, \n\nDo you find it spooky that the CPU\u0027s call stack is thread-local?\n\nTvix\u0027s `struct VM` really ought to be called `struct VmStack` since that\u0027s what it is.  I actually find it bizzare to have a call stack that *isn\u0027t* thread-local!  Indeed, the call stack is the \"most thread-localish\" thing there is.\n\n\u003e it\u0027s possible that we\u0027ll add things like multithreading to the VM later which might have an impact on this).\n\nI suspect you may find the opposite to be true when you get to that point, which is why I put so much time into cleaning this up and documenting it carefully.  In particular I made sure that cl/7195 would be easy to rebase, even months from now.  The other CLs in the series are search-and-replace and keeping the borrowchecker happy; they won\u0027t need to be rebased.\n\nYou can\u0027t \"let go of\" a `\u0026mut self`, but this CL shows you how to move it into a thread-local (and get it back), and do so at arbitrarily-deep nesting.\n\nSo remember this trick, you may need it some day.","commit_id":"d11bc1015edd401880d13e064721398ca0626737"}]}
