{
  "id": 16616068,
  "title": "The 'or' that read too far",
  "url": "https://urgent.news/2026/10/26/the-or-that-read-too-far",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-10-26T15:00:57.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/arcker/the-or-that-read-too-far-3aga"
  },
  "original_language": "en",
  "account": "Verbose is a small programming language that compiles to native x86-64, WebAssembly, and also runs in an interpreter. This bug was discovered in a Verbose program that uses the \"or\" operator. The \"or\" operator has two properties: its value and its order of computation. The value is true if at least one side is true, while the order determines when each side is computed. In Verbose, the precaution to check if a text is empty or its first byte is non-zero is written as length(i.s) == 0 or byte_at(i.s, 0) == 0. This precaution protected the program when compiled to a native binary but failed when running through the interpreter or WebAssembly. The reason for the failure is due to the order of computation. The native binary uses a short-circuit evaluation, meaning it only computes the right side if the left side is false. However, the interpreter and WebAssembly compute both sides, regardless of the left side's value, leading to an out-of-bounds error when evaluating the right side of an empty text. To fix this bug, the interpreter was modified to perform the \"or\" operation before reaching the right side, allowing the guard to function as intended. The native binary remains unchanged as it already used the short-circuit evaluation approach.",
  "summary": "Verbose is a small language I build that compiles to native x86-64, to WebAssembly, and also runs in an interpreter. This post walks through one bug that showed up differently in each of those, with real binaries. It stands on its own; no Verbose knowledge needed. Before reading the first line of a notebook, you check there is something in it. Nobody does it the other way round. Nobody opens an…",
  "key_points": [
    "Verbose programming language compiles to native, WebAssembly, and interpreter",
    "\"or\" operator has value and order of computation properties",
    "Interpreter computes both sides of \"or\" leading to out-of-bounds error"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}