กลับไปหน้าบทความ

อ่าน 5 นาที

V8 (เอนจิน JavaScript)

V8เป็น เอ็นจิ้น JavaScriptและWebAssemblyที่พัฒนาโดยGoogleสำหรับ เบราว์ เซอร์Chrome V8 เป็นซอฟต์แวร์โอเพนซอร์สฟรี (FOSS) และเป็นส่วนหนึ่งของ โครงการ...

V8 (เอนจิน JavaScript)

วี8
นักพัฒนาGoogle [ 1 ]
ปล่อย2 กันยายน 2551 ( 2 กันยายน 2551 )
เวอร์ชันเสถียร
11.4 [ 2 ] แก้ไขข้อมูลนี้บนวิกิดาต้า / 24 พฤษภาคม 2023 ( 24 พฤษภาคม 2566 )
เขียนเป็นC++ [ 1 ]
แพลตฟอร์มIA-32 , x86-64 , ARM 32 บิต , AArch64 , MIPS 32 บิต , MIPS64 , PowerPC , IBM ESA/390 , z/Architecture
พิมพ์JavaScriptและWebAssembly engine
ใบอนุญาตBSD-3-Clause [ 3 ]
เว็บไซต์v8 .dev แก้ไขข้อมูลนี้บนวิกิดาต้า
ที่เก็บข้อมูล
  • chromium.googlesource.com/v8/v8

V8เป็น เอ็นจิ้น JavaScriptและWebAssemblyที่พัฒนาโดยGoogleสำหรับ เบราว์ เซอร์Chrome [ 1 ] [ 4 ] V8 เป็นซอฟต์แวร์โอเพนซอร์สฟรี (FOSS) และเป็นส่วนหนึ่งของ โครงการ Chromiumนอกจากนี้ยังใช้ในบริบทที่ไม่ใช่เบราว์เซอร์ โดยเฉพาะอย่างยิ่งในระบบรันไทม์Node.js [ 1 ]รันไทม์ JavaScript ฝั่งเซิร์ฟเวอร์อื่นๆ ใช้เอ็นจิ้นทางเลือก เช่นBun (ซึ่งใช้JavaScriptCore ) และ Hermes (ที่ใช้โดยReact Native )

ประวัติศาสตร์

Google สร้าง V8 สำหรับเบราว์เซอร์ Chrome ดังนั้นการเปิดตัวครั้งแรกของ V8 จึงตรงกับการเปิดตัวครั้งแรกของ Chrome ในปี 2551 [ 4 ]โดยตั้งชื่อตามเอนจิ้น V8และนักพัฒนาหลักคือLars Bak [ 5 ] เป็นเวลาหลายปีที่ Chrome ทำงานได้เร็วกว่าเบราว์เซอร์อื่นๆ ในการประมวลผล JavaScript [ 6 ] [ 7 ] [ 8 ]

ตัวประกอบภาษาแอสเซมเบลอร์ V8 ใช้พื้นฐานจากตัวประกอบภาษาแอสเซมเบลอร์Strongtalk [ 9 ]เมื่อวันที่ 7 ธันวาคม 2010 โครงสร้างพื้นฐานการคอมไพล์ใหม่ชื่อ Crankshaft ได้ถูกปล่อยออกมาพร้อมกับการปรับปรุงความเร็ว[ 10 ]ใน Chrome เวอร์ชัน 41 ในปี 2015 ได้มีการเพิ่มโปรเจกต์ TurboFan เพื่อเพิ่มประสิทธิภาพการทำงานให้ดียิ่งขึ้นสำหรับงานที่ท้าทายก่อนหน้านี้ เช่นasm.js [ 11 ] การพัฒนา V8 ส่วนใหญ่ได้รับแรงบันดาลใจอย่างมากจากJava HotSpot Virtual Machineที่พัฒนาโดยSun Microsystemsโดยไปป์ไลน์การดำเนินการใหม่นั้นคล้ายคลึงกับของ HotSpot มาก

การสนับสนุนภาษา WebAssembly เริ่มขึ้นในปี 2015 [ 12 ]

ในปี 2016 มีการเพิ่มตัวแปล Ignition ลงใน V8 โดยมีเป้าหมายในการออกแบบเพื่อลด การใช้ หน่วยความจำบน โทรศัพท์ Android ที่มีหน่วยความจำน้อย เมื่อเทียบกับ TurboFan และ Crankshaft [ 13 ] Ignition เป็นเครื่องจักรแบบใช้รีจิสเตอร์และมีรูปแบบการออกแบบที่คล้ายคลึงกัน (แม้จะไม่เหมือนกันทุกประการ) กับตัวแปลเทมเพลตที่ใช้โดย HotSpot

ในปี 2017 V8 ได้จัดส่งไปป์ไลน์ คอมไพเลอร์ใหม่เอี่ยมซึ่งประกอบด้วย Ignition ( ตัวแปลภาษา ) และ TurboFan (คอมไพเลอร์ที่ปรับแต่งประสิทธิภาพ ) เริ่มต้นด้วย V8 เวอร์ชัน 5.9 Full-codegen (คอมไพเลอร์พื้นฐานรุ่นแรก) และ Crankshaft จะไม่ถูกใช้ใน V8 สำหรับการดำเนินการ JavaScript อีกต่อไป เนื่องจากทีมงานเชื่อว่าไม่สามารถตามทันคุณสมบัติภาษา JavaScript ใหม่ ๆ และการปรับแต่งประสิทธิภาพที่คุณสมบัติเหล่านั้นต้องการได้อีกต่อไป[ 14 ]

ในปี 2021 ได้มีการนำระบบการคอมไพล์แบบหลายระดับใหม่มาใช้ โดยเริ่มจากการเปิดตัวคอมไพเลอร์ SparkPlug ซึ่งเข้ามาเสริมคอมไพเลอร์ TurboFan ที่มีอยู่เดิมใน V8 ในลักษณะคู่ขนานโดยตรงกับคอมไพเลอร์ C1 สำหรับการวิเคราะห์ประสิทธิภาพที่ HotSpot ใช้

ในปี 2023 ได้มีการเพิ่มคอมไพเลอร์ Maglev SSAซึ่งช้ากว่า Sparkplug ถึง 10 เท่า แต่เร็วกว่า TurboFan ถึง 10 เท่า ทำให้ช่องว่างระหว่าง Sparkplug และ TurboFan แคบลงสำหรับลูปที่ทำงานไม่บ่อยนักและไม่ "ร้อน" พอที่จะได้รับการปรับให้เหมาะสมโดย TurboFan ซึ่งเป็นกรณีของเว็บแอปพลิเคชันส่วนใหญ่ที่ใช้เวลาในการโต้ตอบกับเบราว์เซอร์มากกว่าการประมวลผล JavaScript [ 15 ]

ออกแบบ

V8 สร้างโครงสร้างต้นไม้ไวยากรณ์นามธรรมด้วยตัวแยกวิเคราะห์ของตัวเอง ก่อน [ 16 ]จากนั้น Ignition จะสร้างไบต์โค้ดจากโครงสร้างต้นไม้ไวยากรณ์นี้โดยใช้รูปแบบไบต์โค้ด ภายในของ V8 [ 17 ] TurboFan จะคอมไพล์ไบต์โค้ดนี้เป็นโค้ดเครื่อง กล่าวอีกนัยหนึ่ง V8 คอมไพล์ECMAScriptโดยตรงเป็นโค้ดเครื่อง เนทีฟ โดยใช้ การคอมไพล์แบบทันที (just-in-time compilation)ก่อนที่จะดำเนินการ[ 18 ]โค้ดที่คอมไพล์แล้วจะได้รับการปรับให้เหมาะสม (และปรับให้เหมาะสมอีกครั้ง) แบบไดนามิกในระหว่างการทำงาน โดยอิงตามหลักการเชิงอนุมานของโปรไฟล์การทำงานของโค้ด เทคนิคการปรับให้เหมาะสมที่ใช้ ได้แก่การแทรกโค้ด (inlining)การละเว้นคุณสมบัติการทำงานที่มีราคาแพง และการแคชแบบแทรกโค้ด (inline caching ) ตัวเก็บขยะเป็นตัวเก็บขยะแบบเพิ่มทีละรุ่น[ 19 ]

การใช้งาน

V8 สามารถคอมไพล์เป็นสถาปัตยกรรมชุดคำสั่งx86 , ARMหรือMIPS ได้ทั้งใน เวอร์ชัน 32 บิตและ64 บิตนอกจากนี้ยังได้รับการพอร์ตไปยังPowerPC [ 20 ] [ 21 ]และไปยังIBM ESA/390และz/Architecture [ 22 ] [ 20 ] เพื่อใช้ในเซิร์ฟเวอร์[ 23 ]

V8 สามารถใช้งานในเว็บเบราว์เซอร์หรือบูรณาการเข้ากับโปรเจ็กต์อิสระได้ V8 ถูกนำไปใช้ในซอฟต์แวร์ต่อไปนี้:

ดูเพิ่มเติม

  • เว็บไซต์อย่างเป็นทางการแก้ไขข้อมูลนี้ได้ที่วิกิดาต้า
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=V8_(JavaScript_engine)&oldid=1359864285 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ V8 (เอนจิน JavaScript)

V8เป็น เอ็นจิ้น JavaScriptและWebAssemblyที่พัฒนาโดยGoogleสำหรับ เบราว์ เซอร์Chrome V8 เป็นซอฟต์แวร์โอเพนซอร์สฟรี (FOSS) และเป็นส่วนหนึ่งของ โครงการ...

ประวัติศาสตร์

Google สร้าง V8 สำหรับเบราว์เซอร์ Chrome ดังนั้นการเปิดตัวครั้งแรกของ V8 จึงตรงกับการเปิดตัวครั้งแรกของ Chrome ในปี 2551 [ 4 ] โดยตั้งชื่อตาม เอนจิ้น V8 และนักพัฒนาหลักคือ Lars Bak [ 5 ] เป็น เวลาหลายปีที่ Chrome ทำงานได้เร็วกว่าเบราว์เซอร์อื่นๆ ในการประมวลผล...

ออกแบบ

V8 สร้างโครงสร้าง ต้นไม้ไวยากรณ์นามธรรม ด้วยตัวแยกวิเคราะห์ของตัวเอง ก่อน [ 16 ] จากนั้น Ignition จะสร้าง ไบต์โค้ด จากโครงสร้างต้นไม้ไวยากรณ์นี้โดยใช้รูปแบบ ไบต์โค้ด ภายในของ V8 [ 17 ] TurboFan จะคอมไพล์ไบต์โค้ดนี้เป็นโค้ดเครื่อง กล่าวอีกนัยหนึ่ง V8 คอมไพล์...

การใช้งาน

V8 สามารถคอมไพล์เป็น สถาปัตยกรรมชุดคำสั่ง x86 , ARM หรือ MIPS ได้ ทั้งใน เวอร์ชัน 32 บิต และ 64 บิต นอกจากนี้ยังได้รับการพอร์ตไปยัง PowerPC [ 20 ] [ 21 ] และไปยัง IBM ESA/390 และ z/Architecture [ 22 ] [ 20 ] เพื่อ ใช้ในเซิร์ฟเวอร์ [ 23 ]