)]}'
{
  "commit": "67bda7c22b16254819345420cb293cc5ef58c4bf",
  "tree": "328198a582323ce4a768d26ac9b04bb95e2d3209",
  "parents": [
    "482a7caed773bb8e6655808db4384ac90d76d89b"
  ],
  "author": {
    "name": "Srujan Gaddam",
    "email": "srujzs@google.com",
    "time": "Mon Jul 07 12:50:25 2025 -0700"
  },
  "committer": {
    "name": "Commit Queue",
    "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Jul 07 12:50:25 2025 -0700"
  },
  "message": "[dart2js/ddc/dart2wasm/dart:js_interop] Support SharedArrayBuffers in JS typed data wrappers\n\nhttps://github.com/dart-lang/sdk/issues/56455\n\nThe existing native typed data implementation in dart2js/ddc\nand the JS typed data wrappers in dart2wasm do not support\nSharedArrayBuffers.\n\nIn dart2js/ddc, this is because the native type for ByteBuffer\nis simply ArrayBuffer, leading to type failures when using\nSharedArrayBuffers. To handle this, this change makes NativeByteBuffer\nan abstract parent class to NativeArrayBuffer and NativeSharedArrayBuffer.\nThis allows ByteBuffer to support both types. There is a preexisting\nSharedArrayBuffer type in dart:html that we should avoid breaking, so\nwe add an interface that NativeSharedArrayBuffer implements and expose\nthat interface.\n\nIn dart2wasm, JSArrayBufferImpl only allows ArrayBuffers as its\nextern ref. This change makes that wrapper support SharedArrayBuffers\nas well.\n\nIn dart:js_interop, the existing toJS conversion on ByteBuffer\nnow throws if the underlying buffer was actually a SharedArrayBuffer.\nThis is to support the return type of JSArrayBuffer. This behavior\ntechnically already existed due to type differences in the JS\ncompilers, but was never possible with dart2wasm.\n\nCoreLibraryReviewExempt: Backend-specific libraries with no real functional changes to public APIs.\nChange-Id: I4dac9fb808590bf0c274da815c152cd4637316b1\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/437526\nReviewed-by: Stephen Adams \u003csra@google.com\u003e\nCommit-Queue: Srujan Gaddam \u003csrujzs@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1201687193627ca70f764d8c9986b229ca5288e4",
      "old_mode": 33188,
      "old_path": "pkg/compiler/lib/src/js_backend/native_data.dart",
      "new_id": "fd9a638934f7741954a53ee12a08b51523bc2f5b",
      "new_mode": 33188,
      "new_path": "pkg/compiler/lib/src/js_backend/native_data.dart"
    },
    {
      "type": "modify",
      "old_id": "7e6d89901d8070ea73ccf1a76eef2f6ec1c20aea",
      "old_mode": 33188,
      "old_path": "sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart",
      "new_id": "69713e28b46721b250e6110c699fe6f7976d64f0",
      "new_mode": 33188,
      "new_path": "sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"
    },
    {
      "type": "modify",
      "old_id": "c1f820daf3bc93198e5e089e4a9c985e5e17cb0e",
      "old_mode": 33188,
      "old_path": "sdk/lib/_internal/js_runtime/lib/native_typed_data.dart",
      "new_id": "53082018ecf604b2450ea6bbbfdad3992143f9ff",
      "new_mode": 33188,
      "new_path": "sdk/lib/_internal/js_runtime/lib/native_typed_data.dart"
    },
    {
      "type": "modify",
      "old_id": "2ae4df02bebe968d7d22e0f83cd68a5bdb52e9b5",
      "old_mode": 33188,
      "old_path": "sdk/lib/_internal/js_shared/lib/js_types.dart",
      "new_id": "44f06c28dcf825e41c7cf00312dff748dad50579",
      "new_mode": 33188,
      "new_path": "sdk/lib/_internal/js_shared/lib/js_types.dart"
    },
    {
      "type": "modify",
      "old_id": "5afc208e0a08cb641be1c8c54bdbb51beef95ec4",
      "old_mode": 33188,
      "old_path": "sdk/lib/_internal/wasm/lib/js_helper.dart",
      "new_id": "27f1cc6f8b818c7417bb3cfb2de85fc66237c3c6",
      "new_mode": 33188,
      "new_path": "sdk/lib/_internal/wasm/lib/js_helper.dart"
    },
    {
      "type": "modify",
      "old_id": "56f31ac108dcc4f75c7b4552f943dde62ef9bcb6",
      "old_mode": 33188,
      "old_path": "sdk/lib/_internal/wasm/lib/js_interop_patch.dart",
      "new_id": "1b62571d6555569179f668997a353a1346946588",
      "new_mode": 33188,
      "new_path": "sdk/lib/_internal/wasm/lib/js_interop_patch.dart"
    },
    {
      "type": "modify",
      "old_id": "9430d7ffae33594d983ce9ef97e7b936cee64f4c",
      "old_mode": 33188,
      "old_path": "sdk/lib/_internal/wasm/lib/js_typed_array.dart",
      "new_id": "162f71f806294104d86818a94ebacd8935a576f3",
      "new_mode": 33188,
      "new_path": "sdk/lib/_internal/wasm/lib/js_typed_array.dart"
    },
    {
      "type": "modify",
      "old_id": "7f164b2c59752fe43ef14625efd76fe54d64510c",
      "old_mode": 33188,
      "old_path": "sdk/lib/html/dart2js/html_dart2js.dart",
      "new_id": "c3b56fb594062786bb1c631bcfc10e10e5cf18cf",
      "new_mode": 33188,
      "new_path": "sdk/lib/html/dart2js/html_dart2js.dart"
    },
    {
      "type": "modify",
      "old_id": "d3463193027c360bf74e598eaf0a3f694c9df4c1",
      "old_mode": 33188,
      "old_path": "sdk/lib/js_interop/js_interop.dart",
      "new_id": "f290b5af21853de03582aa8300257637205233b3",
      "new_mode": 33188,
      "new_path": "sdk/lib/js_interop/js_interop.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0c7bcd95f19018d3af8608a4bca10d77d3fe5ec6",
      "new_mode": 33188,
      "new_path": "tests/lib/html/shared_array_buffer_test.dart"
    },
    {
      "type": "modify",
      "old_id": "6918565e6b9680eb31194bdf9afbf4b2be930af3",
      "old_mode": 33188,
      "old_path": "tests/lib/js/static_interop_test/js_typed_array_test.dart",
      "new_id": "499c59085049a424d3ab4a0b118b55d505a2f32d",
      "new_mode": 33188,
      "new_path": "tests/lib/js/static_interop_test/js_typed_array_test.dart"
    },
    {
      "type": "modify",
      "old_id": "3af34cda301583f2c93cbf8f036758a3446e1598",
      "old_mode": 33188,
      "old_path": "tests/lib/js/static_interop_test/js_types_test.dart",
      "new_id": "e16dad833a811d0991a276391594a667b2b573f2",
      "new_mode": 33188,
      "new_path": "tests/lib/js/static_interop_test/js_types_test.dart"
    },
    {
      "type": "modify",
      "old_id": "77cf354005f7045af32009d0186e09e56d8cf3de",
      "old_mode": 33188,
      "old_path": "tests/lib/js/static_interop_test/jsify_dartify_test.dart",
      "new_id": "ce8bc163c42a66b12dc4df91b484a7da6c443f5a",
      "new_mode": 33188,
      "new_path": "tests/lib/js/static_interop_test/jsify_dartify_test.dart"
    },
    {
      "type": "modify",
      "old_id": "aa7adfe4508e804a8af9922445cf83c5d6f5002d",
      "old_mode": 33261,
      "old_path": "tools/dom/scripts/fremontcutbuilder.py",
      "new_id": "dcbaef443713af94b7c581fe1066bee3f60808a8",
      "new_mode": 33261,
      "new_path": "tools/dom/scripts/fremontcutbuilder.py"
    },
    {
      "type": "modify",
      "old_id": "13f18fb3b2ae99c78a3750a9a5c86302ce5e74d3",
      "old_mode": 33188,
      "old_path": "tools/dom/scripts/htmlrenamer.py",
      "new_id": "e98f3d3008c048c3788af6e8531900e9f1974e32",
      "new_mode": 33188,
      "new_path": "tools/dom/scripts/htmlrenamer.py"
    },
    {
      "type": "modify",
      "old_id": "6508f3752974875836de8448277cdb43b55f3e3f",
      "old_mode": 33188,
      "old_path": "tools/dom/scripts/systemhtml.py",
      "new_id": "f578e66512feff0f203b6ba22b9de31db3b0736e",
      "new_mode": 33188,
      "new_path": "tools/dom/scripts/systemhtml.py"
    },
    {
      "type": "modify",
      "old_id": "1140c2227deda07bd919cfdc203c650fc22aeb18",
      "old_mode": 33188,
      "old_path": "tools/dom/templates/html/dart2js/html_dart2js.darttemplate",
      "new_id": "38b57d41c3a586692e4c093877f884d93b17d8d8",
      "new_mode": 33188,
      "new_path": "tools/dom/templates/html/dart2js/html_dart2js.darttemplate"
    },
    {
      "type": "modify",
      "old_id": "f36953b5fb91e730b12cdd3b43b0708710bb30c5",
      "old_mode": 33188,
      "old_path": "tools/dom/web_library_bindings.dart",
      "new_id": "f13cd1b642931ccedca8c18fdda5b8f1bb8ff179",
      "new_mode": 33188,
      "new_path": "tools/dom/web_library_bindings.dart"
    }
  ]
}
