)]}'
{
  "commit": "903eea6bfb8ee405587f0866a1d1e92eea45d29e",
  "tree": "08bc32c63cbeedfe87e962cff946d04ac5d3c976",
  "parents": [
    "94b080e316043e40366e34c14eb4d30e3d82681c"
  ],
  "author": {
    "name": "Gabriel Terwesten",
    "email": "gabriel@terwesten.net",
    "time": "Fri Dec 06 13:00:12 2024 +0000"
  },
  "committer": {
    "name": "Commit Queue",
    "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Fri Dec 06 13:00:12 2024 +0000"
  },
  "message": "[vm,dartdev] Support dynamic linking between libraries\n\nThe same bundling that is used for `dart build` is now also used for\n`dart test` and `dart run`, except that the output directory is\n`.dart_tool/native_assets`. This way all native code assets are placed\nnext to each other in the `lib` directory, and loaded from there\ninstead of loading them in place from where the build/link hooks\nplaced them. By standardizing on this layout the different modes of\nrunning dart code that support native assets can use the same\nmechanisms to support dynamic linking between libraries.\n\nOn macOS, install names of dylibs are rewritten to support dynamic\nlinking, similar to the changes in\nhttps://github.com/flutter/flutter/pull/153054.\n\nOn Windows, loading of DLLs is altered so that the directory of the DLL\nthat is being loaded is considered when loading dependent DLLs.\n\nTests are added to verify that dynamic linking works as expected.\n\nTEST\u003dpkg/dartdev/test/native_assets/{build,run,test}_test.dart\n\nR\u003dmosum@google.com\n\nRelated: https://github.com/dart-lang/native/issues/190\nFixes: https://github.com/dart-lang/sdk/issues/56459\nChange-Id: Ie4a41e5b7382ab1cea39e93d29d085bf9986828b\nCq-Include-Trybots: luci.dart.try:pkg-linux-debug-try,pkg-linux-release-arm64-try,pkg-linux-release-try,pkg-mac-release-arm64-try,pkg-mac-release-try,pkg-win-release-arm64-try,pkg-win-release-try\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/381580\nReviewed-by: Moritz Sümmermann \u003cmosum@google.com\u003e\nCommit-Queue: Daco Harkes \u003cdacoharkes@google.com\u003e\nReviewed-by: Daco Harkes \u003cdacoharkes@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7e9f8a0415c667b97d2f8264618ae59556b0d3c3",
      "old_mode": 33188,
      "old_path": "pkg/dartdev/lib/src/commands/build.dart",
      "new_id": "e882846df13e4bf52070fc3ab1cbde06a122a968",
      "new_mode": 33188,
      "new_path": "pkg/dartdev/lib/src/commands/build.dart"
    },
    {
      "type": "modify",
      "old_id": "dd1b8358f7010d8099428d41f1267783dd3f657e",
      "old_mode": 33188,
      "old_path": "pkg/dartdev/lib/src/native_assets.dart",
      "new_id": "24af9266feef2220a63fb1b8abf6a90016823752",
      "new_mode": 33188,
      "new_path": "pkg/dartdev/lib/src/native_assets.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c6f499a4fb2031e505c60003148f95f59ffbaf4a",
      "new_mode": 33188,
      "new_path": "pkg/dartdev/lib/src/native_assets_bundling.dart"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d471695ad927934be1f7437ba867986b7b60ecbf",
      "new_mode": 33188,
      "new_path": "pkg/dartdev/lib/src/native_assets_macos.dart"
    },
    {
      "type": "modify",
      "old_id": "20f1136720c616d12cc7a1f16cf01add93c0940b",
      "old_mode": 33188,
      "old_path": "pkg/dartdev/test/native_assets/build_test.dart",
      "new_id": "a813eaae43bb98c8a1ad8be451da4d0073e8eb25",
      "new_mode": 33188,
      "new_path": "pkg/dartdev/test/native_assets/build_test.dart"
    },
    {
      "type": "modify",
      "old_id": "40ab442e2c637e8bf8d3b4b9519e4a95385fe417",
      "old_mode": 33188,
      "old_path": "pkg/dartdev/test/native_assets/helpers.dart",
      "new_id": "c4e3414b84e494caa0c52b571daef5ecc4699020",
      "new_mode": 33188,
      "new_path": "pkg/dartdev/test/native_assets/helpers.dart"
    },
    {
      "type": "modify",
      "old_id": "09cf606d6243097320f969d04ccf52ea1f5ac4e8",
      "old_mode": 33188,
      "old_path": "pkg/dartdev/test/native_assets/run_test.dart",
      "new_id": "a7f92d2b54bf5c748a148002a1070350a04cef6f",
      "new_mode": 33188,
      "new_path": "pkg/dartdev/test/native_assets/run_test.dart"
    },
    {
      "type": "modify",
      "old_id": "b29bafc1802bfaab0f1927bac5c8eda06a4a773a",
      "old_mode": 33188,
      "old_path": "pkg/dartdev/test/native_assets/test_test.dart",
      "new_id": "0a3cdf2b1ddb14a0f8dba048856d54de47d7a346",
      "new_mode": 33188,
      "new_path": "pkg/dartdev/test/native_assets/test_test.dart"
    },
    {
      "type": "modify",
      "old_id": "e783d56b2b55b30758fc7728c34d271301ec526f",
      "old_mode": 33188,
      "old_path": "runtime/bin/native_assets_api_impl.cc",
      "new_id": "3834c68dcdb1f516304c7194613a440c338c5683",
      "new_mode": 33188,
      "new_path": "runtime/bin/native_assets_api_impl.cc"
    },
    {
      "type": "modify",
      "old_id": "5912f3fce9d96502e802676b7cc3755620272a42",
      "old_mode": 33188,
      "old_path": "runtime/lib/ffi_dynamic_library.cc",
      "new_id": "ec42580e0cb6756619d452964aa07f6d4a608cbe",
      "new_mode": 33188,
      "new_path": "runtime/lib/ffi_dynamic_library.cc"
    },
    {
      "type": "modify",
      "old_id": "9eff992323345585ec2b972a0e8ca9396aa471c4",
      "old_mode": 33188,
      "old_path": "runtime/platform/utils.cc",
      "new_id": "67bbe138589626fd3b427265489be2826c4066c1",
      "new_mode": 33188,
      "new_path": "runtime/platform/utils.cc"
    },
    {
      "type": "modify",
      "old_id": "9c52ba506d10097bcf644c6e990704a230fca7c9",
      "old_mode": 33188,
      "old_path": "runtime/platform/utils.h",
      "new_id": "a6cd3dbef3fd6f3a90cc2203adebb2fa66a0e210",
      "new_mode": 33188,
      "new_path": "runtime/platform/utils.h"
    }
  ]
}
