Features (9)

Nullish coalescing

Category: JavaScript

Adds support for the 'nullish' operator to JS.

JSON data
{
  "category": "JavaScript",
  "flag_name": null,
  "id": 5663559390330880,
  "milestone": 80,
  "name": "Nullish coalescing",
  "summary": "Adds support for the 'nullish' operator to JS."
}
Compression Streams

Category: JavaScript

Provides a means of performing gzip and deflate compression from JavaScript using streams. This covers two interfaces: CompressionStream and DecompressionStream.

JSON data
{
  "category": "JavaScript",
  "flag_name": null,
  "id": 5855937971617792,
  "milestone": 80,
  "name": "Compression Streams",
  "summary": "Provides a means of performing gzip and deflate compression from JavaScript using streams. This covers two interfaces: CompressionStream and DecompressionStream."
}
JavaScript optional chaining

Category: JavaScript

Provides safe access to descendent object members with parents that may or may not be null. This applies to objects as well as functions. For example, consider an object reference with three levels such as a.b.c. Testing for the existence of c would previously require nesting said test inside a test for b. This change allows you to test for c directly without an error being thrown when b is null.

JSON data
{
  "category": "JavaScript",
  "flag_name": null,
  "id": 5748330720133120,
  "milestone": 80,
  "name": "JavaScript optional chaining",
  "summary": "Provides safe access to descendent object members with parents that may or may not be null. This applies to objects as well as functions. For example, consider an object reference with three levels such as a.b.c. Testing for the existence of c would previously require nesting said test inside a test for b. This change allows you to test for c directly without an error being thrown when b is null."
}
RTCPeerConnection.setRemoteDescription() with "rollback"

Category: JavaScript

Adds rollback, which is a way to cancel an on-going negotiation. This is needed if two WebRTC endpoints attempt to send an offer at the same time. In this case, one of the endpoints has to cancel its local offer by rolling back so that it can accept the incoming offer. This lets it complete the remote negotiation then create a follow-up offer after it becomes stable. Without it, negotiation cannot complete.

JSON data
{
  "category": "JavaScript",
  "flag_name": null,
  "id": 5079977739419648,
  "milestone": 80,
  "name": "RTCPeerConnection.setRemoteDescription() with \"rollback\"",
  "summary": "Adds rollback, which is a way to cancel an on-going negotiation. This is needed if two WebRTC endpoints attempt to send an offer at the same time. In this case, one of the endpoints has to cancel its local offer by rolling back so that it can accept the incoming offer. This lets it complete the remote negotiation then create a follow-up offer after it becomes stable. Without it, negotiation cannot complete."
}
"numberingSystem" option for Intl.NumberFormat / "calendar" and "numberingSystem" option for Intl.DateTimeFormat

Category: JavaScript

Allows the calendar and numbering system to be specified in the options object of the DateTimeFormat() and NumberFormat() constructors.

JSON data
{
  "category": "JavaScript",
  "flag_name": null,
  "id": 5440249461211136,
  "milestone": 80,
  "name": "\"numberingSystem\" option for Intl.NumberFormat / \"calendar\" and \"numberingSystem\" option for Intl.DateTimeFormat ",
  "summary": "Allows the calendar and numbering system to be specified in the options object of the DateTimeFormat() and NumberFormat() constructors.\r\n\r\n"
}
Contacts API

Category: JavaScript

Provides a way for websites to request information about the user’s contact(s) and provides a UI for the user to share those details in a way that makes it clear what is being shared with the website. This could be used for bootstrapping a friends list on a social network or (in an email/messaging application) to select message recipients.

JSON data
{
  "category": "JavaScript",
  "flag_name": "",
  "id": 6511327140904960,
  "milestone": 80,
  "name": "Contacts API",
  "summary": "Provides a way for websites to request information about the user’s contact(s) and provides a UI for the user to share those details in a way that makes it clear what is being shared with the website. This could be used for bootstrapping a friends list on a social network or (in an email/messaging application) to select message recipients."
}
ES Modules for dedicated workers ('module' type option)

Category: JavaScript

JavaScript will support modules in dedicated workers. Using a new value for the constructor's type attribute, worker scripts are loaded as ES modules and the import statement is available on worker contexts. With this feature, web developers can more easily write programs in a composable way and share them among a page and workers.

JSON data
{
  "category": "JavaScript",
  "flag_name": "",
  "id": 5761300827209728,
  "milestone": 80,
  "name": "ES Modules for dedicated workers ('module' type option)",
  "summary": "JavaScript will support modules in dedicated workers. Using a new value for the constructor's type attribute, worker scripts are loaded as ES modules and the import statement is available on worker contexts. With this feature, web developers can more easily write programs in a composable way and share them among a page and workers."
}
Don't allow popups during page unload

Category: JavaScript

Pages may no longer use the window.open() API to open a new page during its unload. The popup blocker already prohibits this, but now it is prohibited whether or not the popup blocker is enabled. Enterprises used to be able to use the AllowPopupsDuringPageUnload policy flag to allow popups during unload. We removed this flag in Chrome 88.

JSON data
{
  "category": "JavaScript",
  "flag_name": null,
  "id": 5989473649164288,
  "milestone": 80,
  "name": "Don't allow popups during page unload",
  "summary": "Pages may no longer use the window.open() API to open a new page during its unload.\r\n\r\nThe popup blocker already prohibits this, but now it is prohibited whether or not the popup blocker is enabled.\r\n\r\nEnterprises used to be able to use the AllowPopupsDuringPageUnload policy flag to allow popups during unload. We removed this flag in Chrome 88."
}
WebAssembly Multi-Value

Category: JavaScript

Add support for WebAssembly functions and blocks that return more than one value.

JSON data
{
  "category": "JavaScript",
  "flag_name": "",
  "id": 5192420329259008,
  "milestone": 80,
  "name": "WebAssembly Multi-Value",
  "summary": "Add support for WebAssembly functions and blocks that return more than one value.\r\n"
}

API Changes (34)

  • Create V8 8.0 branch for Chrome 80
  • Add a UseCounter for SharedArrayBuffer creation.
  • Introduce and emit "function calls in detached window" use counters.
  • [api] Remove deprecated wasm type and methods
  • Deprecate SnapshotCreator::AddTemplate
  • [cpu-profiler] Remove deprecated GetCallUid()
  • [Intl] Prototype Intl.DisplayNames
  • Report real module in addition to fake scripts
  • [builtins] Allow 2Gb TypedArrays on 64-bit architectures
  • [tracing] Fix endianness problem when using booleans
  • [api] Tweak SharedMemoryStatistics Api
  • [api] Create SharedMemoryStatistics API
  • [test] Deprecate v8-testing.h
  • [DevTools] Implemented DevTools protocol API to retrieve V8 RunTime Call Stats.
  • V8 Wasm locations should always be based on byte offsets
  • [compiler, api] Allow modifying codegen hook to block non-strings.
  • Add a debug v8 API SetDetachedWindowReason
  • [api] Deprecate [Shared]ArrayBuffer::Externalize/GetContents and constructors
  • [api] Fix SuppressMicrotaskExecutionScope constructor
  • [api] Add possibility for BackingStore to keep Allocator alive
  • [regexp] Expose RegExp::Exec through the API
  • [regexp] Expose RegExp::NewWithBacktrackLimit through the API
  • [regexp] Add use counters for slow exec and replace calls
  • [api] Add v8::BackingStore::IsShared
  • Introduce 'replMode' flag for Runtime.evaluate
  • [api] Add API functions for constructing standalone BackingStores
  • Remove JS natives support, step 3
  • Make SetSyntheticModuleExport throw instead of crash for nonexistent export name
  • Update Unwinder to handle JSEntry frame on Windows ARM64
  • [api] Prepare removal of deprecated tasks API
  • Remove build support for gcc < 5
  • [api] Move forward deprecations in EmbedderHeapTracer and its references
  • Update V8 version to 8.0
  • Log debug info of WASM for Intel VTune Amplifier
JSON data
[
  {
    "author": {
      "name": "Michael Hablich",
      "email": "hablich@chromium.org",
      "time": "Thu Dec 05 13:24:51 2019"
    },
    "commit": "3f8ece65361799e6bc67fdfaabe6ab9bb6e6fe10",
    "committer": {
      "name": "Michael Hablich",
      "email": "hablich@chromium.org",
      "time": "Thu Dec 05 13:27:19 2019"
    },
    "subject": "Create V8 8.0 branch for Chrome 80",
    "milestone": 80
  },
  {
    "author": {
      "name": "Mike West",
      "email": "mkwst@chromium.org",
      "time": "Mon Dec 02 13:45:57 2019"
    },
    "commit": "0da7ca8781c6c7ec852bef845b72ca7f212cdc23",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Mon Dec 02 15:16:46 2019"
    },
    "subject": "Add a UseCounter for SharedArrayBuffer creation.",
    "milestone": 80
  },
  {
    "author": {
      "name": "Bartek Nowierski",
      "email": "bartekn@chromium.org",
      "time": "Mon Dec 02 07:48:38 2019"
    },
    "commit": "78786a2f668b18aea4d04425dad5521993aa9872",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Mon Dec 02 08:56:13 2019"
    },
    "subject": "Introduce and emit \"function calls in detached window\" use counters.",
    "milestone": 80
  },
  {
    "author": {
      "name": "Clemens Backes",
      "email": "clemensb@chromium.org",
      "time": "Fri Oct 18 13:14:44 2019"
    },
    "commit": "3bbadd008bf77e4845be8052fdaabd1a1a2eee8e",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Thu Nov 28 13:55:15 2019"
    },
    "subject": "[api] Remove deprecated wasm type and methods",
    "milestone": 80
  },
  {
    "author": {
      "name": "Yang Guo",
      "email": "yangguo@chromium.org",
      "time": "Wed Nov 27 13:06:20 2019"
    },
    "commit": "866621dd16feca4554d1a3cb1f12b8917a8dcce8",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Wed Nov 27 14:05:16 2019"
    },
    "subject": "Deprecate SnapshotCreator::AddTemplate",
    "milestone": 80
  },
  {
    "author": {
      "name": "Peter Marshall",
      "email": "petermarshall@chromium.org",
      "time": "Wed Nov 27 12:34:41 2019"
    },
    "commit": "99268b15c21ac76f561cb4ec6336708ad91de759",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Wed Nov 27 13:56:19 2019"
    },
    "subject": "[cpu-profiler] Remove deprecated GetCallUid()",
    "milestone": 80
  },
  {
    "author": {
      "name": "Frank Tang",
      "email": "ftang@chromium.org",
      "time": "Mon Nov 18 18:55:57 2019"
    },
    "commit": "162c5b0ff973c7af1123338e78beb62d9f747dd8",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Mon Nov 18 21:48:22 2019"
    },
    "subject": "[Intl] Prototype Intl.DisplayNames",
    "milestone": 80
  },
  {
    "author": {
      "name": "Eric Leese",
      "email": "leese@chromium.org",
      "time": "Wed Nov 06 15:51:44 2019"
    },
    "commit": "6ec6ed9cbe3cab6651979f3e4bab105e0b660483",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Fri Nov 15 09:59:58 2019"
    },
    "subject": "Report real module in addition to fake scripts",
    "milestone": 80
  },
  {
    "author": {
      "name": "Igor Sheludko",
      "email": "ishell@chromium.org",
      "time": "Mon Nov 11 18:39:17 2019"
    },
    "commit": "6ff3b3703ea4199d76fd55983b7b8e46a7570e6b",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Mon Nov 11 21:42:56 2019"
    },
    "subject": "[builtins] Allow 2Gb TypedArrays on 64-bit architectures",
    "milestone": 80
  },
  {
    "author": {
      "name": "Milad Farazmand",
      "email": "miladfar@ca.ibm.com",
      "time": "Thu Nov 07 17:07:34 2019"
    },
    "commit": "f83b1b3beb4baf219461ef111a924fb8d125aade",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Fri Nov 08 13:35:41 2019"
    },
    "subject": "[tracing] Fix endianness problem when using booleans",
    "milestone": 80
  },
  {
    "author": {
      "name": "Dan Elphick",
      "email": "delphick@chromium.org",
      "time": "Fri Nov 08 11:10:40 2019"
    },
    "commit": "501739245ccb53985002d33ae355f01b139afdcd",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Fri Nov 08 12:29:51 2019"
    },
    "subject": "[api] Tweak SharedMemoryStatistics Api",
    "milestone": 80
  },
  {
    "author": {
      "name": "Dan Elphick",
      "email": "delphick@chromium.org",
      "time": "Thu Nov 07 09:24:16 2019"
    },
    "commit": "276b13cb001d13b2b8d90e697b2777810b2c0a96",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Thu Nov 07 10:54:36 2019"
    },
    "subject": "[api] Create SharedMemoryStatistics API",
    "milestone": 80
  },
  {
    "author": {
      "name": "Michael Achenbach",
      "email": "machenbach@chromium.org",
      "time": "Tue Nov 05 15:21:59 2019"
    },
    "commit": "941afb692030ba07f11cff6d2177cdd82669bdee",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Wed Nov 06 12:56:51 2019"
    },
    "subject": "[test] Deprecate v8-testing.h",
    "milestone": 80
  },
  {
    "author": {
      "name": "Peter Kvitek",
      "email": "kvitekp@chromium.org",
      "time": "Wed Oct 30 00:58:34 2019"
    },
    "commit": "91c8be959941b7fc6156954844c0518d67361c02",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Tue Nov 05 18:59:24 2019"
    },
    "subject": "[DevTools] Implemented DevTools protocol API to retrieve V8 RunTime Call Stats.",
    "milestone": 80
  },
  {
    "author": {
      "name": "Eric Leese",
      "email": "leese@chromium.org",
      "time": "Tue Nov 05 13:15:28 2019"
    },
    "commit": "5c23e6b5f2c43fa06348ac6b770846f2181912ed",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Tue Nov 05 14:53:45 2019"
    },
    "subject": "V8 Wasm locations should always be based on byte offsets",
    "milestone": 80
  },
  {
    "author": {
      "name": "Stefano Sanfilippo",
      "email": "ssanfilippo@chromium.org",
      "time": "Thu Oct 31 10:41:23 2019"
    },
    "commit": "6c0825aaa73ca3163f089ca161c1f6e15633f306",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Tue Nov 05 11:49:19 2019"
    },
    "subject": "[compiler, api] Allow modifying codegen hook to block non-strings.",
    "milestone": 80
  },
  {
    "author": {
      "name": "Bartek Nowierski",
      "email": "bartekn@chromium.org",
      "time": "Thu Oct 31 04:07:35 2019"
    },
    "commit": "63dc55568b6cf7da700d0e68c3d63030141209e0",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Fri Nov 01 00:57:40 2019"
    },
    "subject": "Add a debug v8 API SetDetachedWindowReason",
    "milestone": 80
  },
  {
    "author": {
      "name": "Andreas Haas",
      "email": "ahaas@chromium.org",
      "time": "Tue Oct 29 19:00:28 2019"
    },
    "commit": "bfe3d6bce734e596e312465e207bcfd55a59fe34",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Tue Oct 29 22:01:54 2019"
    },
    "subject": "[api] Deprecate [Shared]ArrayBuffer::Externalize/GetContents and constructors",
    "milestone": 80
  },
  {
    "author": {
      "name": "Anna Henningsen",
      "email": "anna@addaleax.net",
      "time": "Sat Oct 26 12:03:14 2019"
    },
    "commit": "2f9a967369a000604eae9e7c888ab391f3d51873",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Mon Oct 28 12:28:08 2019"
    },
    "subject": "[api] Fix SuppressMicrotaskExecutionScope constructor",
    "milestone": 80
  },
  {
    "author": {
      "name": "Anna Henningsen",
      "email": "anna@addaleax.net",
      "time": "Thu Oct 24 09:45:03 2019"
    },
    "commit": "6b0a9535e6983a626420d864b45582167cd61540",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Thu Oct 24 10:56:03 2019"
    },
    "subject": "[api] Add possibility for BackingStore to keep Allocator alive",
    "milestone": 80
  },
  {
    "author": {
      "name": "Jakob Gruber",
      "email": "jgruber@chromium.org",
      "time": "Thu Oct 17 08:33:01 2019"
    },
    "commit": "b1c1a81faf9c153163d620b6e9d8198997bcf5b1",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Wed Oct 23 11:23:04 2019"
    },
    "subject": "[regexp] Expose RegExp::Exec through the API",
    "milestone": 80
  },
  {
    "author": {
      "name": "Jakob Gruber",
      "email": "jgruber@chromium.org",
      "time": "Mon Oct 21 14:16:38 2019"
    },
    "commit": "b0fadf7f70e36bee6981444430d934b69ef1b38e",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Wed Oct 23 10:14:08 2019"
    },
    "subject": "[regexp] Expose RegExp::NewWithBacktrackLimit through the API",
    "milestone": 80
  },
  {
    "author": {
      "name": "Jakob Gruber",
      "email": "jgruber@chromium.org",
      "time": "Tue Oct 22 13:47:40 2019"
    },
    "commit": "6f1de28834a44a81d0bf2bf62eabac70a53c06f5",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Wed Oct 23 08:06:17 2019"
    },
    "subject": "[regexp] Add use counters for slow exec and replace calls",
    "milestone": 80
  },
  {
    "author": {
      "name": "Ulan Degenbaev",
      "email": "ulan@chromium.org",
      "time": "Tue Oct 22 11:09:27 2019"
    },
    "commit": "10b5e80637bc026415dfe8718078f5912fa1b0b2",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Tue Oct 22 15:36:42 2019"
    },
    "subject": "[api] Add v8::BackingStore::IsShared",
    "milestone": 80
  },
  {
    "author": {
      "name": "Simon Zünd",
      "email": "szuend@chromium.org",
      "time": "Tue Oct 22 12:38:15 2019"
    },
    "commit": "6f7eeec89d94e6a1caef53ce80a2e60896eb462e",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Tue Oct 22 13:42:12 2019"
    },
    "subject": "Introduce 'replMode' flag for Runtime.evaluate",
    "milestone": 80
  },
  {
    "author": {
      "name": "Ulan Degenbaev",
      "email": "ulan@chromium.org",
      "time": "Tue Oct 22 10:42:23 2019"
    },
    "commit": "bba5f1f43d59cf06e6043eb94d689021cc94a4e2",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Tue Oct 22 12:00:02 2019"
    },
    "subject": "[api] Add API functions for constructing standalone BackingStores",
    "milestone": 80
  },
  {
    "author": {
      "name": "Jakob Gruber",
      "email": "jgruber@chromium.org",
      "time": "Tue Oct 22 04:59:35 2019"
    },
    "commit": "c4f502ed4d53320e5405502817b501213f331227",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Tue Oct 22 07:48:05 2019"
    },
    "subject": "Remove JS natives support, step 3",
    "milestone": 80
  },
  {
    "author": {
      "name": "Daniel Clark",
      "email": "daniec@microsoft.com",
      "time": "Mon Oct 21 17:26:16 2019"
    },
    "commit": "777fa98cc47ac32f0fde3d9aafd830949deb5d23",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Mon Oct 21 20:32:04 2019"
    },
    "subject": "Make SetSyntheticModuleExport throw instead of crash for nonexistent export name",
    "milestone": 80
  },
  {
    "author": {
      "name": "Seth Brenith",
      "email": "seth.brenith@microsoft.com",
      "time": "Tue Oct 15 15:42:06 2019"
    },
    "commit": "edd7434b3dba10ca3b704199f1c1a708001771b5",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Mon Oct 21 16:09:40 2019"
    },
    "subject": "Update Unwinder to handle JSEntry frame on Windows ARM64",
    "milestone": 80
  },
  {
    "author": {
      "name": "Clemens Backes",
      "email": "clemensb@chromium.org",
      "time": "Mon Oct 21 11:43:14 2019"
    },
    "commit": "d0ae6031e76a56dc940695e7bd0890f5943b8104",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Mon Oct 21 13:07:56 2019"
    },
    "subject": "[api] Prepare removal of deprecated tasks API",
    "milestone": 80
  },
  {
    "author": {
      "name": "Clemens Backes",
      "email": "clemensb@chromium.org",
      "time": "Tue Oct 15 13:45:06 2019"
    },
    "commit": "11e50bc31ba1020036633ed87acb24278a3bf2ab",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Mon Oct 21 11:20:09 2019"
    },
    "subject": "Remove build support for gcc < 5",
    "milestone": 80
  },
  {
    "author": {
      "name": "Michael Lippautz",
      "email": "mlippautz@chromium.org",
      "time": "Fri Oct 18 07:15:01 2019"
    },
    "commit": "f3b29768bd113a405b2fd4bd4502ba5d85e04e27",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Fri Oct 18 19:55:26 2019"
    },
    "subject": "[api] Move forward deprecations in EmbedderHeapTracer and its references",
    "milestone": 80
  },
  {
    "author": {
      "name": "Clemens Backes",
      "email": "clemensb@chromium.org",
      "time": "Thu Oct 17 14:21:28 2019"
    },
    "commit": "503917b16e230f34bd75242db9ebfcba6e900edf",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Thu Oct 17 14:23:59 2019"
    },
    "subject": "Update V8 version to 8.0",
    "milestone": 80
  },
  {
    "author": {
      "name": "Zhou, Zhiguo",
      "email": "zhiguo.zhou@intel.com",
      "time": "Tue Oct 15 14:47:45 2019"
    },
    "commit": "ec5807099f40964190d10e9498a69f194d192129",
    "committer": {
      "name": "Commit Bot",
      "email": "commit-bot@chromium.org",
      "time": "Thu Oct 17 14:03:51 2019"
    },
    "subject": "Log debug info of WASM for Intel VTune Amplifier",
    "milestone": 80
  }
]