มีอะไรใหม่ใน V8 JavaScript engine เวอร์ชัน 7 ของ Google

เบต้า V8 เวอร์ชัน 7.4 พร้อมให้บริการแล้วโดยมีศักยภาพในการขยายขนาดของเครื่องยนต์ไปยังแพลตฟอร์มต่างๆเช่น Apple iOS V8 เป็นเครื่องมือ JavaScript และ WebAssembly โอเพ่นซอร์สของ Google สำหรับเบราว์เซอร์ Chrome เป็นหลักในเบราว์เซอร์ Chrome และรันไทม์ JavaScript ของ Node.js

จะดาวน์โหลด Google V8 ได้ที่ไหน

คุณสามารถดาวน์โหลด Google V8 เวอร์ชันที่ใช้งานจริงได้จากที่เก็บ Chromium V8

เวอร์ชันในอนาคต: มีอะไรใหม่ใน V8 เวอร์ชัน 7.4

Google V8 เบต้า 7.4 มีคุณสมบัติใหม่ดังต่อไปนี้:

  • JIT-less V8 ซึ่งรองรับการเรียกใช้งาน JavaScript โดยไม่ต้องจัดสรรหน่วยความจำที่รันได้ในรันไทม์ ซึ่งอาจทำให้ขยาย V8 ไปยังแพลตฟอร์มต่างๆเช่น Apple iOS, สมาร์ททีวีและเกมคอนโซล คอนฟิกูเรชันดีฟอลต์ของ V8 อาศัยความสามารถในการจัดสรรและแก้ไขหน่วยความจำที่รันได้ที่รันไทม์ แต่มีสถานการณ์ที่เป็นที่พึงปรารถนาที่จะเรียกใช้เอ็นจิ้นโดยไม่ต้องจัดสรรหน่วยความจำปฏิบัติการเช่นแพลตฟอร์มที่ห้ามการเข้าถึงการเขียนไปยังหน่วยความจำที่ไม่มีการเรียกใช้งานสำหรับแอปพลิเคชันที่ไม่มีสิทธิประโยชน์รวมถึง iOS นอกจากนี้การไม่อนุญาตให้เขียนไปยังหน่วยความจำที่เรียกใช้งานได้จะช่วยลดพื้นผิวการโจมตีของแอปพลิเคชันเพื่อหาช่องโหว่ ด้วยโหมด JIT-less V8 จะเปลี่ยนเป็นโหมดล่ามเท่านั้นสำหรับ JavaScript ขณะนี้ WebAssembly ไม่รองรับโหมดนี้ อย่างไรก็ตามโหมด JIT-less มาพร้อมกับการลงโทษด้านประสิทธิภาพ
  • WebAssembly Threads / Atomics เปิดใช้งานแล้วบนระบบปฏิบัติการที่ไม่ใช่ Android การย้ายนี้จะปลดล็อกการใช้งานคอร์หลาย ๆ คอร์ผ่าน WebAssembly เปิดใช้งานใหม่และใช้งานหนักในการคำนวณบนเว็บ
  • เพื่อปรับปรุงประสิทธิภาพเวอร์ชัน 7.4 จะข้ามการปรับตัวของอาร์กิวเมนต์ในบางกรณีโดยลดค่าใช้จ่ายในการโทรลง 60 เปอร์เซ็นต์
  • ได้รับการปรับปรุงประสิทธิภาพสำหรับการโทรไปยังตัวเข้าถึงเนทีฟซึ่งเป็นตัวเข้าถึง DOM
  • ปรับปรุงประสิทธิภาพของ Preparser โดยการลบการขจัดข้อมูลซ้ำซ้อนที่เกี่ยวข้องกับชื่อคุณสมบัติ นอกจากนี้ปัญหาด้านประสิทธิภาพได้รับการแก้ไขที่เกี่ยวข้องกับการถอดรหัส UTF-8 แบบกำหนดเองที่สตรีมต้นทางใช้
  • เพื่อลดค่าใช้จ่ายของหน่วยความจำได้มีการใช้การสนับสนุนสำหรับการล้าง bytecode ที่คอมไพล์จากฟังก์ชันระหว่างการรวบรวมขยะหากไม่ได้ดำเนินการเมื่อเร็ว ๆ นี้
  • เพื่อรองรับฟิลด์คลาสส่วนตัวนักพัฒนาสามารถทำเครื่องหมายฟิลด์ว่าเป็นส่วนตัวได้โดยเติม#คำนำหน้าไว้ล่วงหน้า

จะดาวน์โหลด V8 7.4 beta ได้ที่ไหน

คุณสามารถดาวน์โหลด V8 เบต้าจากที่เก็บ Chromium Git ของ Google

เวอร์ชันปัจจุบัน: มีอะไรใหม่ใน V8 เวอร์ชัน 7.3

คุณสมบัติใหม่ใน V8 7.3 ได้แก่ :

  • --async-stack-tracesธงเปิดอยู่โดยค่าเริ่มต้น
  • การติดตามสแต็ก async ที่ไม่เสียค่าใช้จ่ายทำให้ง่ายต่อการวินิจฉัยปัญหาในการผลิตด้วยรหัสอะซิงโครนัส stackคุณสมบัติมักจะถูกส่งไปยังแฟ้มบันทึกและการให้บริการในขณะนี้ให้เข้าใจมากขึ้นในปัญหา
  • เร็วขึ้นawaitโดยมีการ--harmony-await-optimizationเปิดธงโดยค่าเริ่มต้น --async-stack-tracesนี้เป็นสิ่งที่จำเป็นสำหรับ
  • เริ่มต้นสำหรับ WebAssembly เร็วขึ้นผ่านการปรับให้เหมาะสม สำหรับเวิร์กโหลดส่วนใหญ่การคอมไพล์จะดีขึ้น 15 เปอร์เซ็นต์ถึง 25 เปอร์เซ็นต์
  • คุณลักษณะของ JavaScript เช่นfromEntries()API เพื่อดำเนินการผกผันObject.entriesและ  String.prototype.MatchallAPI เพื่อให้ง่ายต่อการนำนิพจน์ทั่วไปแบบโกลบอลหรือแบบติดหนึบไปใช้กับสตริงและวนซ้ำผ่านการจับคู่ทั้งหมด

เวอร์ชันปัจจุบัน: มีอะไรใหม่ใน Google V8 เวอร์ชัน 7.2

V8 เวอร์ชัน 7.2 ของเดือนมกราคม 2019 ปรับปรุงการแยกวิเคราะห์ JavaScript รูปแบบไบนารี WebAssembly และหน่วยความจำ

เพื่อปรับปรุงความเร็วในการแยกวิเคราะห์ V8 เวอร์ชัน 7.2 รวมสิ่งที่ Google เรียกว่าโปรแกรมแยกวิเคราะห์ JavaScript ที่เร็วที่สุดเท่าที่เคยมีมาของเอ็นจิ้นทำให้โหลดหน้าเว็บได้เร็วขึ้นและหน้าตอบสนองมากขึ้น ตั้งแต่ V8 เวอร์ชัน 7.0 ความเร็วในการแยกวิเคราะห์เดสก์ท็อปดีขึ้นประมาณ 30 เปอร์เซ็นต์ Google กล่าว

สำหรับหน่วยความจำบิวด์อินแบบฝังที่บันทึกหน่วยความจำโดยการแชร์โค้ดที่สร้างขึ้นในหลายไอโซเลทได้รับการสนับสนุนและเปิดใช้งานโดยค่าเริ่มต้นบนสถาปัตยกรรม IA32

สำหรับ WebAssembly V8 7.2 มีการปรับปรุงการสร้างโค้ดรวมถึงการเปิดใช้งานการแยกโหนดในตัวกำหนดตารางเวลาของคอมไพเลอร์ที่ปรับให้เหมาะสมและการหมุนลูปในส่วนหลัง นอกจากนี้การแคชของ Wrapper ยังได้รับการปรับปรุงและมีการนำ Wrapper แบบกำหนดเองมาใช้เพื่อลดค่าใช้จ่ายเมื่อเรียกใช้ฟังก์ชันคณิตศาสตร์ JavaScript ที่นำเข้า

การเปลี่ยนแปลงการออกแบบตัวจัดสรรรีจิสเตอร์จะปรับปรุงประสิทธิภาพสำหรับรูปแบบรหัสที่จะปรากฏในรุ่นต่อไป นอกจากนี้ตัวจัดการกับดักในเวอร์ชัน 7.2 จะปรับปรุงทรูพุตของโค้ด WebAssembly มีการใช้งานบน Windows, MacOS และ Linux ใน Chromium จะเปิดใช้งานบน Linux โดย MacO และ Windows จะปฏิบัติตามเมื่อยืนยันความเสถียรแล้ว แผนยังเรียกร้องให้พวกเขาพร้อมใช้งานบน Android

คุณสมบัติใหม่อื่น ๆ ใน V8 7.2 ได้แก่ :

  • ประสิทธิภาพขององค์ประกอบการแพร่กระจายได้รับการปรับปรุงเมื่อสิ่งเหล่านี้เกิดขึ้นที่ด้านหน้าของตัวอักษรอาร์เรย์
  • เร็วขึ้นasync/ await การใช้งานถูกเปิดใช้งานโดยค่าเริ่มต้น การเปลี่ยนแปลงนี้อาจรวมเข้ากับข้อกำหนด ECMAScript อย่างเป็นทางการ
  • การติดตามสแต็ก async แบบ Zero-coast เสริมstackคุณสมบัติด้วยเฟรมการโทรแบบอะซิงโครนัส ความสามารถนี้มีอยู่หลัง--async-stack-tracesแฟล็กบรรทัดคำสั่ง
  • รองรับฟิลด์คลาสสาธารณะซึ่งขยายไวยากรณ์ JavaScript เพื่อให้ง่ายขึ้น
  • ListFormatข้อเสนอสำหรับ localizing การจัดรูปแบบของรายการ
  • stringify ตอนนี้เอาต์พุตลำดับการหลบหนีสำหรับตัวแทนคนเดียวทำให้ Unicode เอาต์พุตถูกต้อง

เวอร์ชันก่อนหน้า: มีอะไรใหม่ใน Google V8 เวอร์ชัน 7.1

เวอร์ชัน 7.1 ของ V8 เดือนพฤศจิกายน 2018 มีการปรับปรุงหน่วยความจำและประสิทธิภาพพร้อมกับการปรับปรุงสำหรับทั้ง JavaScript และรูปแบบไบนารี WebAssembly สำหรับหน่วยความจำตอนนี้ bytecodes สำหรับอินเทอร์พรีเตอร์จะถูกฝังลงในไบนารีซึ่งประหยัดได้ประมาณ 200KB โดยเฉลี่ยต่อไอโซเลท เพื่อปรับปรุงประสิทธิภาพการวิเคราะห์ Escape ในคอมไพลเลอร์ TurboFan ได้รับการปรับปรุงเพื่อจัดการบริบทฟังก์ชันโลคัลสำหรับฟังก์ชันลำดับที่สูงขึ้นเมื่อตัวแปรจากบริบทรอบข้างหนีไปสู่การปิดโลคัล ด้วยการวิเคราะห์การหลีกเลี่ยงการแทนที่สเกลาร์จะดำเนินการสำหรับอ็อบเจ็กต์โลคัลไปยังหน่วยการเพิ่มประสิทธิภาพ

คุณสมบัติใหม่อื่น ๆ ใน V8 เวอร์ชัน 7.1:

  • สำหรับ JavaScript RelativeTimeformatAPI ที่นำเสนอในการอัปเกรดช่วยให้สามารถจัดรูปแบบเวลาสัมพัทธ์ในภาษาท้องถิ่นเช่น "เมื่อวาน" โดยไม่ทำให้ประสิทธิภาพลดลง นอกจากนี้เวอร์ชัน 7.1 ยังสนับสนุนGlobalThisข้อเสนอนี้โดยจัดให้มีกลไกสากลในการเข้าถึงอ็อบเจ็กต์ส่วนกลางแม้ในฟังก์ชันหรือโมดูลที่เข้มงวดโดยไม่คำนึงถึงแพลตฟอร์ม
  • สำหรับรูปแบบ bytecode WebAssembly postMessageได้รับการสนับสนุนสำหรับโมดูล ลักษณะการทำงานนี้กำหนดขอบเขตไว้สำหรับผู้ปฏิบัติงานบนเว็บและไม่ได้ขยายไปยังสถานการณ์จำลองข้ามกระบวนการ

เวอร์ชันก่อนหน้า: มีอะไรใหม่ใน Google V8 เวอร์ชัน 7.0

V8 เวอร์ชัน 7.0 ของเดือนตุลาคม 2018 แสดงตัวอย่างเธรด WebAssembly ซึ่งจัดเตรียมแบบดั้งเดิมสำหรับการคำนวณแบบขนาน ในการใช้เธรดในเบราว์เซอร์ Chrome ซึ่งใช้ V8 นักพัฒนาสามารถเปิดใช้งานผ่านchrome://flags/#enable-webassembly-threadsหรือสมัครใช้งาน Origin Trial เพื่อทดลองใช้คุณลักษณะใหม่ของเว็บ WebAssembly หรือที่เรียกว่า Wasm ช่วยให้สามารถรวบรวมโค้ดที่เขียนในภาษาต่างๆเพื่อทำงานบนเว็บได้

คุณสมบัติใหม่อื่น ๆ ใน V8 7.0 ได้แก่ :

  • สำหรับ JavaScript descriptionคุณสมบัติจะถูกเพิ่มเข้าไปเพื่อprototypeให้สามารถเข้าถึงคำอธิบายได้ตามหลักสรีรศาสตร์ นอกจากนี้ยังArray.prototype.sortมีความเสถียรในเวอร์ชัน 7.0
  • ส่วนขยายของบิวท์อินที่ฝังไว้ซึ่งช่วยประหยัดหน่วยความจำโดยการแบ่งปันรหัสที่สร้างขึ้นในหลาย ๆ แยก V8 เวอร์ชัน 6.9 เปิดใช้งานบิวด์อินบนสถาปัตยกรรม X64 ในขณะที่เวอร์ชัน 7.0 ขยายไปยังแพลตฟอร์มที่เหลือยกเว้น IA-32

เวอร์ชันก่อนหน้า: มีอะไรใหม่ใน Google V8 เวอร์ชัน 6.9

V8 เวอร์ชัน 6.9 ของเดือนกันยายน 2018 มุ่งเน้นไปที่การปรับปรุงหน่วยความจำและประสิทธิภาพสำหรับเครื่องมือ JavaScript ของ Google

เพื่อการประหยัดหน่วยความจำเวอร์ชัน 6.9 นำเสนอแบบฝังในตัวสำหรับคอมพิวเตอร์ที่ใช้ x64 ฟังก์ชันเหล่านี้เป็นฟังก์ชันที่ใช้ร่วมกันโดยแยกทั้งหมดและฝังลงในไบนารีเองแทนที่จะถูกคัดลอกไปยังฮีป JavaScript ดังนั้นจึงมีอยู่ในหน่วยความจำเพียงครั้งเดียวโดยไม่คำนึงถึงจำนวนไอโซเลตที่กำลังทำงานอยู่ นักออกแบบของ V8 ได้เห็นการลดขนาดฮีปลงโดยเฉลี่ย 9 เปอร์เซ็นต์ในเว็บไซต์ 10,000 อันดับแรกบนคอมพิวเตอร์ x64 การสนับสนุนสำหรับแพลตฟอร์มอื่น ๆ จะตามมาในรุ่นต่อ ๆ ไป

สำหรับประสิทธิภาพ V8 เวอร์ชัน 6.9 จะลดเวลาหยุดการรวบรวมขยะ Mark-Compact โดยปรับปรุงการWeakMapประมวลผล ขณะนี้สามารถประมวลผลการทำเครื่องหมายพร้อมกันและแบบเพิ่มหน่วยWeakMapsได้ ก่อนหน้านี้งานนี้ทำในการหยุดการรวบรวมขยะแบบ Mark-Compact ขั้นสุดท้ายในอะตอม ขณะนี้การรวบรวมขยะยังทำงานได้มากขึ้นควบคู่ไปกับเวลาหยุดชั่วคราวที่ลดลง

สำหรับประสิทธิภาพDataViewวิธีการได้ถูกนำมาใช้ใหม่ใน V8 Torque ซึ่งประหยัดค่าใช้จ่ายในการเรียกใช้ C ++ เมื่อเทียบกับการใช้งานรันไทม์ก่อนหน้านี้ นอกจากนี้การเรียกใช้DataViewเมธอดในขณะนี้จะถูกอินไลน์เมื่อคอมไพล์ JavaScript ลงในคอมไพเลอร์เพิ่มประสิทธิภาพ TurboFan สิ่งนี้ให้ประสิทธิภาพสูงสุดที่ดีกว่าสำหรับรหัสร้อน

V8 เวอร์ชัน 6.9 ยังรวมถึง Liftoff ซึ่งเป็นคอมไพเลอร์พื้นฐานสำหรับรูปแบบโค้ดพกพา WebAssembly เปิดใช้งานโดยค่าเริ่มต้นและมีวัตถุประสงค์เพื่อลดเวลาเริ่มต้นสำหรับแอปที่ใช้ WebAssembly โดยการสร้างโค้ดโดยเร็วที่สุด คุณภาพของโค้ดเป็นสิ่งสำคัญรองลงมาสำหรับ Liftoff โดยในที่สุดโค้ดจะถูกคอมไพล์ใหม่โดยคอมไพเลอร์ TurboFan ของ V8

Liftoff ได้รับการพัฒนาเพื่อแก้ไขปัญหาที่ส่วนหลังของกระบวนการคอมไพล์สำหรับ TurboFan ใช้เวลาและหน่วยความจำเป็นจำนวนมากทำให้ประสิทธิภาพของโค้ด WebAssembly ลดลง Liftoff หลีกเลี่ยงค่าใช้จ่ายด้านเวลาและหน่วยความจำของการเป็นตัวแทนระดับกลางสร้างรหัสเครื่องในการส่งผ่าน bytecode ของฟังก์ชัน WebAssembly เพียงครั้งเดียว Liftoff และ Turbofan ให้ V8 สองระดับการคอมไพล์โดย Liftoff เป็นคอมไพเลอร์พื้นฐานสำหรับการเริ่มต้นอย่างรวดเร็วและ TurboFan ให้การเพิ่มประสิทธิภาพสำหรับประสิทธิภาพ

Google ยังวางแผนที่จะปรับปรุงเวลาเริ่มต้นเพิ่มเติมลดการใช้หน่วยความจำและนำประโยชน์ของ Liftoff ไปสู่ผู้ใช้มากขึ้น แผนเหล่านี้เกี่ยวข้องกับพอร์ตไปยังโปรเซสเซอร์ ARM สำหรับใช้บนอุปกรณ์พกพา ปัจจุบัน Liftoff ใช้งานได้บนแพลตฟอร์ม Intel 32 และ 64 บิตเท่านั้น การปรับปรุงอื่น ๆ ที่อยู่ระหว่างการพิจารณา ได้แก่ :

  • การปรับใช้ระดับไดนามิกสำหรับอุปกรณ์มือถือเพื่อรองรับปริมาณหน่วยความจำที่ลดลงบนอุปกรณ์เหล่านี้ การทดสอบกำลังดำเนินการด้วยการรวมกันของการรวบรวมแบบ lazy กับ Liftoff และการเพิ่มระดับไดนามิกของฟังก์ชันร้อนใน TurboFan
  • การปรับปรุงประสิทธิภาพการสร้างโค้ด Liftoff และปรับปรุงโค้ดที่สร้างขึ้นด้วย

เวอร์ชันก่อนหน้า: มีอะไรใหม่ใน V8 เวอร์ชัน 6.8

Google V8 เวอร์ชัน 6.8 เปิดตัวในเดือนกรกฎาคม 2018 เน้นที่ประสิทธิภาพและการใช้งานหน่วยความจำ

ประสิทธิภาพได้รับการสนับสนุนจากการปรับปรุงการทำลายโครงสร้างอาร์เรย์ คอมไพลเลอร์ที่ปรับให้เหมาะสมไม่ได้สร้างโค้ดในอุดมคติสำหรับการทำลายโครงสร้างอาร์เรย์ดังนั้นผู้สร้าง V8 จึงบล็อกการวิเคราะห์การหลบหนีเพื่อกำจัดการจัดสรรชั่วคราวซึ่งทำให้การทำลายโครงสร้างอาร์เรย์ด้วยอาร์เรย์ชั่วคราวเร็วเท่ากับลำดับของการกำหนด

การใช้งาน Object.assign ใหม่ช่วยเพิ่มประสิทธิภาพผ่านการใช้งานเส้นทางด่วนสำหรับ JavaScript

ประสิทธิภาพของ TypedArrays เพิ่มขึ้นในอินสแตนซ์เมื่อการเรียงลำดับเสร็จสิ้นโดยใช้ฟังก์ชันเปรียบเทียบ

คุณสมบัติใหม่อื่น ๆ ใน V8 เวอร์ชัน 6.8 ได้แก่ :

  • ในการปรับปรุงความเร็วในการดำเนินการด้วยรูปแบบโค้ดพกพา WebAssembly นักพัฒนาสามารถใช้การตรวจสอบขอบเขตตามกับดักการเพิ่มประสิทธิภาพการจัดการหน่วยความจำบนแพลตฟอร์ม Linux x64
  • การใช้หน่วยความจำของ SFIs ( SharedFunctionInfo) ลดลงเนื่องจากการบีบอัดและการลบช่องที่ไม่จำเป็นออก
  • นอกจากนี้เพื่อปรับปรุงความสามารถของหน่วยความจำการพึ่งพา SFIs ได้ถูกทำลายซึ่ง SFIs ถูกเก็บไว้โดยไม่จำเป็นซึ่งนำไปสู่ความเสี่ยงของการรั่วไหลของหน่วยความจำ

เวอร์ชันก่อนหน้า: มีอะไรใหม่ใน V8 เวอร์ชัน 6.7.2

V8 JavaScriptengine ของ Google กำลังได้รับการปรับปรุงสำหรับคุณสมบัติภาษาและความปลอดภัยด้วยสาขาเวอร์ชัน 6.7 ซึ่งตอนนี้อยู่ในรุ่นที่ใช้งานจริง

เครื่องยนต์ V8 6.7 BigIntเปิดใช้งานการสนับสนุนโดยค่าเริ่มต้น คาดว่าจะเป็น ECMAScript เวอร์ชันอนาคต  BigIntsทำหน้าที่เป็นตัวเลขดั้งเดิมใน JavaScript เพื่อแสดงจำนวนเต็มด้วยความแม่นยำโดยพลการ ด้วยBigIntจึงเป็นไปได้ที่จะคำนวณเลขคณิตจำนวนเต็มโดยไม่ล้น BigIntสามารถใช้เป็นพื้นฐานของBigDecimalการนำไปใช้ในที่สุดซึ่งมีประโยชน์สำหรับการแสดงผลรวมของเงินด้วยความแม่นยำของทศนิยม

นอกจากนี้ใน V8 6.7 ยังช่วยบรรเทาช่องโหว่ด้านข้างได้มากขึ้นโดยมีวัตถุประสงค์เพื่อป้องกันการรั่วไหลของข้อมูลไปยังโค้ดที่ไม่น่าเชื่อถือสำหรับ JavaScript และ WebAssembly

เวอร์ชันก่อนหน้า: มีอะไรใหม่ใน V8 เวอร์ชัน 6.6

เครื่องยนต์ V8 JavaScript ของ Google เวอร์ชัน 6.6 เน้นที่คุณลักษณะภาษา JavaScript และความสามารถในการแคชโค้ด

สำหรับ JavaScript Function.prototype.toString()จะส่งคืนส่วนของข้อความซอร์สโค้ดที่ตรงกันซึ่งรวมถึงช่องว่างและความคิดเห็น V8 เวอร์ชัน 6.6 String.prototype.trimStart() and String.prototype.trimEnd()นอกจากนี้ยังนำไปปฏิบัติ ความสามารถนี้มีให้ใช้งานโดยไม่เป็นมาตรฐานtrimLeft()และtrimRight()วิธีการซึ่งยังคงเป็นนามแฝงของวิธีการใหม่เพื่อเปิดใช้งานความเข้ากันได้แบบย้อนหลัง

นอกจากนี้สัญลักษณ์ตัวคั่นบรรทัดและย่อหน้าสามารถใช้ในตัวอักษรสตริงจึงจับคู่ JSON ก่อนหน้านี้สิ่งเหล่านี้ถูกถือว่าเป็นตัวยุติบรรทัดในตัวอักษรสตริงและการใช้งานทำให้เกิดข้อยกเว้น SyntaxError

Array.prototype.values วิธีการให้อาร์เรย์อินเตอร์เฟซที่ซ้ำเช่นเดียวกับ ECMAScript 2015 Map และSetคอลเลกชัน เหล่านี้สามารถมีความสัมพันธ์ไปโดยkeys,valuesหรือentriesโดยการเรียกวิธีการเดียวกันชื่อ การเปลี่ยนแปลงนี้อาจเข้ากันไม่ได้กับโค้ด JavaScript ที่มีอยู่ นักพัฒนาที่พบพฤติกรรมแปลก ๆ chrome://flags/#enable-array-prototype-valuesหรือหักในเว็บไซต์สามารถพยายามที่จะปิดใช้งานคุณลักษณะนี้ผ่านทาง