)]}'
{
  "log": [
    {
      "commit": "b4f5024731f2f61b0f5b377fe9bcbb4934a5e83b",
      "tree": "d71e84a77c0e77849390bacbde7554bc02fa48b6",
      "parents": [
        "62f1d3680947e1d78bacf2a7277fb4b2007ebacb"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Nov 14 21:51:07 2023 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Nov 15 13:10:19 2023 +0000"
      },
      "message": "treewide: use Pinner to resolve safety issues\n\nPrior to Go 1.21 the only way to pass Go-managed pointers to the kernel\nwas to convert them to a uintptr inside the syscall argument expression.\nThis pattern was special-cased in the compiler to prevent the referenced\nmemory from being moved by an eventual moving GC in Go while the syscall\nis running (thus corrupting the Go heap).\n\nBut this was very restrictive as there are syscalls which take inputs\ncontaining further pointers.  According to the official rules this could\nnot be implemented safely.\n\nIn practice you could just do it anyways as the current Go GC does\nin general not move objects, but it was always kind of a hack.\nWith Go 1.21 there is a new Pinner API which can be used to pin the\nmemory which is going to be referenced in these structures, allowing\nthem to be constructed and used over multiple calls.\n\nruntime.KeepAlive is still required to prevent finalizers from running\nprematurely.\n\nUse this new API and remove the relevant comments.\n\nChange-Id: I26bce06e1c20a5fe0c41f9ae736a895f533674c1\nReviewed-on: https://review.monogon.dev/c/monogon/+/2316\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    },
    {
      "commit": "8733950f8ee7a47141c92b5ad82e2fe87471a7a2",
      "tree": "5f2db2aa219f73e17df7e17e5cbca0f6436da03c",
      "parents": [
        "0672ecc35bca207fce8ede33da6542a880eb89c5"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Mar 07 15:49:42 2023 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Thu Mar 09 20:09:06 2023 +0000"
      },
      "message": "net/dump: init\n\nThis adds netdump, a library which dumps the network configuration of a\nLinux host via netlink and generates a Net specification from it.\n\nChange-Id: I78007df1da4fbf24ba9128eb2e966df0dea9274e\nReviewed-on: https://review.monogon.dev/c/monogon/+/1231\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\nTested-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "0672ecc35bca207fce8ede33da6542a880eb89c5",
      "tree": "152cbee5e749eb9d8decdf0b4fac9185f6c86c18",
      "parents": [
        "b033b380387a999b7ad19f9d001c42ec570c8945"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Feb 21 11:00:59 2023 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Wed Mar 08 16:10:21 2023 +0000"
      },
      "message": "net/proto: add network configuration spec\n\nThis adds a network configuration specification which will be used for\nthe Monogon Network component in case autoconfiguration cannot be used\nbecause of environmental constraints.\n\nIt will also be used by netdump, which is capable of deriving such a\nspec from a running system.\n\nIt\u0027s currently a bit bare-bones, but is designed to be easily extensible to\nmore complex needs.\n\nChange-Id: Ib444ac26251884c640a0dbec089d0d1787df556b\nReviewed-on: https://review.monogon.dev/c/monogon/+/1139\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\nTested-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    }
  ]
}
