)]}'
{
  "commit": "012005a2d89a4ee9c3431b620ed557bbf85b5cac",
  "tree": "af4452846c0b1f7e3e3362349daa5d55b53db927",
  "parents": [
    "66c044a3bd3f1939637726ef55c055d6fb77741a"
  ],
  "author": {
    "name": "Hugo Lefeuvre",
    "email": "hugo.lefeuvre@scisemi.com",
    "time": "Wed Apr 24 11:37:32 2024 +0200"
  },
  "committer": {
    "name": "David Chisnall",
    "email": "davidchisnall@users.noreply.github.com",
    "time": "Thu May 02 09:40:34 2024 +0100"
  },
  "message": "Add a `queue_destroy` API.\n\nThis new API destroys a queue, waking up all threads waiting to produce\nor consume, and making them fail to acquire the lock, before\ndeallocating the underlying allocation. This is particularly useful when\ndestroying a message queue from an error handler.\n\nThis requires to add a destruction mode to the high bits lock class,\nwhich reduces the maximum size of the queue from 512MiB to 256MiB.\n\nThis also requires to revise our approach to the `buffer` pointer in the\nqueue handle. Since we restrict its bounds in `queue_create`, it cannot\nbe used to free the queue. Revise this by restricting the bounds in\n`queue_make_receive_handle` and `queue_make_send_handle` instead.  From\nan adversarial perspective, this is fine: anyone who has access to the\nunrestricted queue can arbitrarily write to `consumer` and `producer`\nanyways. Unfortunately it is a downgrade in terms of catching accidental\noverflows of the queue `buffer` when using the unrestricted queue.\n\nSigned-off-by: Hugo Lefeuvre \u003chugo.lefeuvre@scisemi.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "162f91c91dd036531e7e24034a010c44f5b86102",
      "old_mode": 33188,
      "old_path": "sdk/include/queue.h",
      "new_id": "dc16e720065f491cad469dd602473e165effb4f1",
      "new_mode": 33188,
      "new_path": "sdk/include/queue.h"
    },
    {
      "type": "modify",
      "old_id": "1b0b96500a5aae635d0350af088ab40a9d7275ef",
      "old_mode": 33188,
      "old_path": "sdk/lib/queue/queue.cc",
      "new_id": "5a1caf6b01127a190241c0c0fd544a224fb0e0cc",
      "new_mode": 33188,
      "new_path": "sdk/lib/queue/queue.cc"
    },
    {
      "type": "modify",
      "old_id": "f6e3aa6ce8cb92df8de867797554ff29afbdbab8",
      "old_mode": 33188,
      "old_path": "tests/queue-test.cc",
      "new_id": "6d49f2897e1a43f0eacf2b46ed2f7fdeb0ea0868",
      "new_mode": 33188,
      "new_path": "tests/queue-test.cc"
    }
  ]
}
