)]}'
{
  "commit": "3880a4558d6b4c064e7d01bd34cf4e3c4c66aa23",
  "tree": "5b4da70a4153c85a6b9ed4ec01b0f8cc1ae10696",
  "parents": [
    "466dd0e54165e37cd32418e9153213b55bc820f1"
  ],
  "author": {
    "name": "Maxim Dounin",
    "email": "mdounin@mdounin.ru",
    "time": "Wed Dec 07 19:03:19 2016 +0300"
  },
  "committer": {
    "name": "Maxim Dounin",
    "email": "mdounin@mdounin.ru",
    "time": "Wed Dec 07 19:03:19 2016 +0300"
  },
  "message": "Perl: added PERL_SET_INTERP().\n\nFor Perl compiled with threads, without PERL_SET_INTERP() the PL_curinterp\nremains set to the first interpreter created (that is, one created at\noriginal start).  As a result after a reload Perl thinks that operations\nare done withing a thread, and, most notably, denies to change environment.\n\nFor example, the following code properly works on original start,\nbut fails after a reload:\n\n    perl \u0027sub {\n        my $r \u003d shift;\n\n        $r-\u003esend_http_header(\"text/plain\");\n\n        $ENV{TZ} \u003d \"UTC\";\n        $r-\u003eprint(\"tz: \" . $ENV{TZ} . \" (localtime \" . (localtime()) . \")\\n\");\n        $ENV{TZ} \u003d \"Europe/Moscow\";\n        $r-\u003eprint(\"tz: \" . $ENV{TZ} . \" (localtime \" . (localtime()) . \")\\n\");\n\n        return OK;\n    }\u0027;\n\nTo fix this, PERL_SET_INTERP() added anywhere where PERL_SET_CONTEXT()\nwas previously used.\n\nNote that PERL_SET_INTERP() doesn\u0027t seem to be documented anywhere.\nYet it is used in some other software, and also seems to be the only\nsolution possible.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f9a9a84c05172f633e46bb84544a50981dcb0933",
      "old_mode": 33188,
      "old_path": "src/http/modules/perl/ngx_http_perl_module.c",
      "new_id": "279631974b43e9ae70a5508d941737d61e29792e",
      "new_mode": 33188,
      "new_path": "src/http/modules/perl/ngx_http_perl_module.c"
    }
  ]
}
