V8 (рушій JavaScript): відмінності між версіями

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
[перевірена версія][очікує на перевірку]
Вилучено вміст Додано вміст
Виправлено джерел: 3; позначено як недійсні: 1. #IABot (v2.0beta10ehf1)
MrPuVo (обговорення | внесок)
Функція пропозицій посилань: додано 2 посилання.
Мітки: Візуальний редактор Редагування з мобільного пристрою Редагування через мобільну версію Розширене редагування з мобільного Завдання новачку Пропоноване: додати посилання
 
(Не показані 18 проміжних версій 11 користувачів)
Рядок 1: Рядок 1:
{{About|рушій JavaScript||V8}}
{{Infobox software
{{Infobox software
| name = V8 JavaScript Engine
| name = V8 JavaScript Engine
Рядок 8: Рядок 9:
| operating system = [[Багатоплатформність|Багатоплатформний]]
| operating system = [[Багатоплатформність|Багатоплатформний]]
| released = {{start date and age|2008|9|2}}
| released = {{start date and age|2008|9|2}}
| latest release version = 5.8<ref>{{cite web|url=https://v8project.blogspot.com/2017/03/v8-release-58.html|title=V8 Release 5.8|publisher=V8 Project}}</ref><ref>{{cite web|url=https://chromereleases.googleblog.com/2017/04/stable-channel-update-for-desktop.html|title=Stable Channel Update for Desktop|publisher=Google Chrome Team}}</ref>
| latest release version = 5.8<ref>{{cite web|url=https://v8project.blogspot.com/2017/03/v8-release-58.html|title=V8 Release 5.8|publisher=V8 Project|accessdate=1 червня 2017|archive-date=30 березня 2017|archive-url=https://web.archive.org/web/20170330180515/https://v8project.blogspot.com/2017/03/v8-release-58.html}}</ref><ref>{{cite web|url=https://chromereleases.googleblog.com/2017/04/stable-channel-update-for-desktop.html|title=Stable Channel Update for Desktop|publisher=Google Chrome Team|accessdate=1 червня 2017|archive-date=18 травня 2017|archive-url=https://web.archive.org/web/20170518083953/https://chromereleases.googleblog.com/2017/04/stable-channel-update-for-desktop.html}}</ref>
| latest release date = {{start date and age|2017|04|19}}
| latest release date = {{start date and age|2017|04|19}}
| size =
| size =
| programming language = [[C++]],<ref name="V8">{{cite web|url=https://code.google.com/p/v8/|title=V8 JavaScript Engine|publisher=[[Google Code]]}}</ref> [[JavaScript]]<ref name="V8"/>
| programming language = [[C++]],<ref name="V8">{{cite web|url=https://code.google.com/p/v8/|title=V8 JavaScript Engine|publisher=[[Google Code]]|accessdate=22 травня 2013|archive-date=15 травня 2013|archive-url=https://web.archive.org/web/20130515132628/https://code.google.com/p/v8/}}</ref> [[JavaScript]]<ref name="V8"/>
| platform = [[IA-32]], [[x86-64]], [[ARM (архітектура)|ARM]]<ref name=google_dev>https://developers.google.com/v8/intro</ref>, [[MIPS]]<ref>Офіційна підтримка з версії 3.8.2</ref>
| platform = [[IA-32]], [[x86-64]], [[ARM (архітектура)|ARM]]<ref name=google_dev>{{Cite web |url=https://developers.google.com/v8/intro |title=Архівована копія |accessdate=22 травня 2013 |archive-date=4 квітня 2017 |archive-url=https://web.archive.org/web/20170404171153/https://developers.google.com/v8/intro }}</ref>, [[MIPS]]<ref>Офіційна підтримка з версії 3.8.2</ref>
| status = активний
| status = активний
| genre = [[рушій JavaScript]]
| genre = [[рушій JavaScript]]
| license = [[BSD licences|BSD]]<ref>{{cite web|url=https://github.com/v8/v8/blob/master/LICENSE.v8|title=v8/LICENSE.v8 at master|publisher=Github}}</ref>
| license = [[Ліцензія BSD|BSD]]<ref>{{cite web|url=https://github.com/v8/v8/blob/master/LICENSE.v8|title=v8/LICENSE.v8 at master|publisher=Github|accessdate=1 червня 2017|archive-date=7 серпня 2021|archive-url=https://web.archive.org/web/20210807222036/https://github.com/v8/v8/blob/master/LICENSE.v8}}</ref>
| website = {{URL|https://developers.google.com/v8}}
| website = {{URL|https://developers.google.com/v8}}
}}
}}


'''V8'''&nbsp;— [[рушій JavaScript]] з [[відкрите програмне забезпечення|відкритим]] [[сирцевий код|сирцевим кодом]]. Розроблений данським відділенням компанії [[Google]] та розповсюджується за [[ліцензія BSD|ліцензією BSD]].
'''V8'''&nbsp;— [[рушій JavaScript]] з [[відкрите програмне забезпечення|відкритим]] [[початковий код|початковим кодом]]. Розроблений данським відділенням компанії [[Google]] та розповсюджується за [[ліцензія BSD|ліцензією BSD]].


== Огляд ==
== Огляд ==
Розробка JavaScript-рушія ''V8// почалася у данському відділенні Google в місті [[Орхус]]. Провідним розробником став Ларс Бак (Lars Bak).
Розробка JavaScript-рушія V8 почалася у данському відділенні Google в місті [[Орхус]]. Провідним розробником став Ларс Бак (Lars Bak).


Основними проблемами, які розв'язували розробники були швидкодія та масштабованість<ref name=Lars>[http://googlerussiablog.blogspot.com/2009/12/google_24.html Ларс Бак в Санкт-Петербурге]{{ref-ru}}</ref>. Перша лабораторна версія рушія з'явилася 3 липня 2008<ref>[https://code.google.com/p/v8/source/detail?r=2 V8 JavaScript Engine initial export]</ref>, а вже 2 вересня було офіційно представлена ​​версія 0.2.5, яка увійшла в перший публічний реліз [[Chromium]]<ref>[http://googlecode.blogspot.com/2008/09/google-chrome-chromium-and-v8-launch.html Запуск V8, Chromium и Google Chrome]{{ref-en}}</ref>.
Основними проблемами, які розв'язували розробники були швидкодія та масштабованість<ref name=Lars>[http://googlerussiablog.blogspot.com/2009/12/google_24.html Ларс Бак в Санкт-Петербурге] {{Webarchive|url=https://web.archive.org/web/20130308045235/http://googlerussiablog.blogspot.com/2009/12/google_24.html |date=8 березня 2013 }}{{ref-ru}}</ref>. Перша лабораторна версія рушія з'явилася 3 липня 2008<ref>{{Cite web |url=https://code.google.com/p/v8/source/detail?r=2 |title=V8 JavaScript Engine initial export |accessdate=22 травня 2013 |archive-date=3 жовтня 2014 |archive-url=https://web.archive.org/web/20141003132056/https://code.google.com/p/v8/source/detail?r=2 }}</ref>, а вже 2 вересня було офіційно представлена ​​версія 0.2.5, яка увійшла в перший публічний реліз [[Chromium]]<ref>[http://googlecode.blogspot.com/2008/09/google-chrome-chromium-and-v8-launch.html Запуск V8, Chromium и Google Chrome] {{Webarchive|url=https://web.archive.org/web/20150313050757/http://googlecode.blogspot.com/2008/09/google-chrome-chromium-and-v8-launch.html |date=13 березня 2015 }}{{ref-en}}</ref>.


Ларс Бак вважав<ref>[http://blog.chromium.org/2008/09/google-chromes-need-for-speed_02.html Огляд можливостей]{{ref-en}}</ref>, що ''V8'' має особливості:
Ларс Бак вважав<ref>[http://blog.chromium.org/2008/09/google-chromes-need-for-speed_02.html Огляд можливостей] {{Webarchive|url=https://web.archive.org/web/20101203112340/http://blog.chromium.org/2008/09/google-chromes-need-for-speed_02.html |date=3 грудня 2010 }}{{ref-en}}</ref>, що ''V8'' має особливості:
* [[Компілятор|Компіляція]] [[сирцевий код|сирцевого коду]] [[JavaScript]] безпосередньо у власний [[машинний код]], минаючи стадію проміжного [[байт-код]]у.
* [[Компілятор|Компіляція]] [[початковий код|початкового коду]] [[JavaScript]] безпосередньо у власний [[машинний код]], минаючи стадію проміжного [[байт-код]]у.
* Ефективна система керування пам'яттю, яка дозволяє швидко резервувати місця для об'єкту та зменшити очікування на [[прибирання сміття]]<ref>[https://developers.google.com/v8/design#garb_coll Ефективне збирання «сміття»]{{ref-en}}</ref>
* Ефективна система керування пам'яттю, яка дозволяє швидко резервувати місця для об'єкту та зменшити очікування на [[прибирання сміття]]<ref>[https://developers.google.com/v8/design#garb_coll Ефективне збирання «сміття»] {{Webarchive|url=https://web.archive.org/web/20130917191010/https://developers.google.com/v8/design#garb_coll |date=17 вересня 2013 }}{{ref-en}}</ref>
** V8 зупиняє виконання коду під час виконання прибирання сміття.
** V8 зупиняє виконання коду під час виконання прибирання сміття.
** V8 може точно визначати, де містяться в пам'яті [[Об'єкт (програмування)|об'єкти]] й [[вказівники|посилання], що дозволяє уникнути витоку пам'яті при помилковій ідентифікації об'єктів як посилань.
** V8 може точно визначати, де містяться в пам'яті [[Об'єкт (програмування)|об'єкти]] й [[вказівники|посилання]], що дозволяє уникнути [[Витік пам'яті|витоку пам'яті]] при помилковій ідентифікації об'єктів як посилань.
* Введення прихованих класів й вбудованих кешів, які прискорюють доступ до властивостей та виклики функцій.
* Введення прихованих класів й вбудованих кешів, які прискорюють доступ до властивостей та виклики функцій.


''V8'' виконує JavaScript-сценарії в особливих «контекстах», які по суті є окремими [[віртуальна машина|віртуальними машинами]]. Але в одному процесі може працювати тільки одна віртуальна машина, незважаючи на можливість використання декількох [[нить|потоків]]<ref name=sysoev>[http://sysoev.ru/prog/v8.html Огляд можливостей рушія V8 на серверах] {{ref-ru}}</ref>. У Chromium це обходиться мультипроцесовою архітектурою, підвищується також стабільність і безпека через реалізацію механізму «пісочниці»<ref>[http://dev.chromium.org/developers/design-documents/multi-process-architecture Огляд мультипроцесорної архітектури]{{ref-en}}</ref>.
''V8'' виконує JavaScript-сценарії в особливих «контекстах», які по суті є окремими [[віртуальна машина|віртуальними машинами]]. Але в одному процесі може працювати тільки одна віртуальна машина, незважаючи на можливість використання декількох [[нить|потоків]]<ref name=sysoev>[http://sysoev.ru/prog/v8.html Огляд можливостей рушія V8 на серверах] {{Webarchive|url=https://web.archive.org/web/20130729165257/http://sysoev.ru/prog/v8.html |date=29 липня 2013 }} {{ref-ru}}</ref>. У Chromium це обходиться мультипроцесовою архітектурою, підвищується також стабільність і безпека через реалізацію механізму «пісочниці»<ref>[http://dev.chromium.org/developers/design-documents/multi-process-architecture Огляд мультипроцесорної архітектури] {{Webarchive|url=https://web.archive.org/web/20130519103928/http://dev.chromium.org/developers/design-documents/multi-process-architecture |date=19 травня 2013 }}{{ref-en}}</ref>.


Рушій ''V8'' відрізняється від інших рушіїв ([[JScript]], [[SpiderMonkey]], [[JavaScriptCore]], [[Nitro]]) високою швидкодією та продуктивністю<ref>[https://developers.google.com/v8/design Design Elements]{{ref-en}}</ref><ref>[http://news.cnet.com/8301-17939_109-10030888-2.html Speed test: Google Chrome beats Firefox, IE, Safari]{{ref-en}}</ref><ref>[https://www.google.com/intl/ru/chrome/browser/features.html#speed Быстрый запуск веб-приложений]{{ref-ru}}</ref><ref>[http://www.webmonkey.com/2010/09/mozilla-asks-are-we-fast-yet/ Mozilla порівнює продуктивність рушіїв] {{ref-en}}</ref><ref>Перевірити продуктивність рушія JavaScript, що використовується браузером, можна запустивши тести [https://v8.googlecode.com/svn/data/benchmarks/v6/run.html V8 Benchmark Suite] {{Webarchive|url=https://web.archive.org/web/20130304102552/http://v8.googlecode.com/svn/data/benchmarks/v6/run.html |date=4 березень 2013 }}, [http://www.webkit.org/perf/sunspider-0.9.1/sunspider-0.9.1/driver.html SunSpider], [http://krakenbenchmark.mozilla.org/ Kraken]</ref>.
Рушій ''V8'' відрізняється від інших рушіїв ([[JScript]], [[SpiderMonkey]], [[JavaScriptCore]], [[Nitro]]) високою швидкодією та продуктивністю<ref>[https://developers.google.com/v8/design Design Elements] {{Webarchive|url=https://web.archive.org/web/20130917191010/https://developers.google.com/v8/design |date=17 вересня 2013 }}{{ref-en}}</ref><ref>[http://news.cnet.com/8301-17939_109-10030888-2.html Speed test: Google Chrome beats Firefox, IE, Safari] {{Webarchive|url=https://web.archive.org/web/20111006002918/http://news.cnet.com/8301-1001_3-10030888-92.html |date=2011-10-06 }}{{ref-en}}</ref><ref>[https://www.google.com/intl/ru/chrome/browser/features.html#speed Быстрый запуск вебприложений] {{Webarchive|url=https://web.archive.org/web/20130809163917/https://www.google.com/intl/ru/chrome/browser/features.html#speed |date=9 серпня 2013 }}{{ref-ru}}</ref><ref>[http://www.webmonkey.com/2010/09/mozilla-asks-are-we-fast-yet/ Mozilla порівнює продуктивність рушіїв] {{Webarchive|url=https://web.archive.org/web/20100911072832/http://www.webmonkey.com/2010/09/mozilla-asks-are-we-fast-yet/ |date=11 вересня 2010 }} {{ref-en}}</ref><ref>Перевірити продуктивність рушія JavaScript, що використовується браузером, можна запустивши тести [https://v8.googlecode.com/svn/data/benchmarks/v6/run.html V8 Benchmark Suite] {{Webarchive|url=https://web.archive.org/web/20130304102552/http://v8.googlecode.com/svn/data/benchmarks/v6/run.html |date=4 березня 2013 }}, [http://www.webkit.org/perf/sunspider-0.9.1/sunspider-0.9.1/driver.html SunSpider] {{Webarchive|url=https://web.archive.org/web/20121227092305/http://www.webkit.org/perf/sunspider-0.9.1/sunspider-0.9.1/driver.html |date=27 грудня 2012 }}, [http://krakenbenchmark.mozilla.org/ Kraken] {{Webarchive|url=https://web.archive.org/web/20200701180928/https://krakenbenchmark.mozilla.org/ |date=1 липня 2020 }}</ref>.


== Продукти, що використовують V8 ==
== Продукти, що використовують V8 ==
Рушій ''V8'' використовується в:
Рушій ''V8'' використовується в:
* браузерах ([[Chrome]] та [[Chromium]]);
* браузерах ([[Google Chrome]] та [[Chromium]]);
* в складі серверних платформ [[Node.js]]<ref>{{cite web|url=http://mashable.com/2011/03/10/node-js/|title=Why Everyone Is Talking About Node|author=Jolie O'Dell|date=March 10, 2011|publisher=Mashable}}</ref>;
* в складі серверних платформ [[Node.js]]<ref>{{cite web|url=http://mashable.com/2011/03/10/node-js/|title=Why Everyone Is Talking About Node|author=Jolie O'Dell|date=10 березня 2011|publisher=Mashable|accessdate=14 червня 2014|archive-date=2 серпня 2017|archive-url=https://web.archive.org/web/20170802015237/http://mashable.com/2011/03/10/node-js/}}</ref>;
* в складі десктоп-програм, наприклад, на платформі .NET/Mono.
* в складі десктоп-програм, наприклад, на платформі .NET/Mono.


=== Браузери ===
=== Браузери ===
* [[Chromium]]&nbsp;— [[веб-браузер]] з відкритим кодом, на основі якого створюються низка браузерів
* [[Chromium]]&nbsp;— [[веббраузер]] з відкритим кодом, на основі якого створюються низка браузерів
* [[Google Chrome]]&nbsp;— веб-браузер від Google
* [[Google Chrome]]&nbsp;— веббраузер від Google
* [[Opera]] від версії 13
* [[Opera]] від версії 13
* [[CoolNovo]]&nbsp;— веб-браузер від Maple Studios, що розширює можливості Chromium
* [[CoolNovo]]&nbsp;— веббраузер від Maple Studios, що розширює можливості Chromium
* [[SRWare Iron]]&nbsp;— веб-браузер від компанії SRWare, випущені через те, що Google Chrome відправляє компанії Google відомості про користувача
* [[SRWare Iron]]&nbsp;— веббраузер від компанії SRWare, випущені через те, що Google Chrome відправляє компанії Google відомості про користувача
* [[Comodo Dragon]]&nbsp;— веб-браузер від Comodo з додатковими функціями, що підвищують безпеку та конфіденційність
* [[Comodo Dragon]]&nbsp;— веббраузер від Comodo з додатковими функціями, що підвищують безпеку та конфіденційність
* [[Flock]]&nbsp;— веббраузер, націлений на роботу з соціальними мережами<ref name=autogenerated1>[http://beta.flock.com/powered_by_chromium Flock меняет основу] {{Webarchive|url=https://web.archive.org/web/20120307082107/http://beta.flock.com/powered_by_chromium |date=7 березня 2012 }}{{ref-en}}</ref>
* [[Рамблер Ніхром]]&nbsp;— веб-браузер від [[Рамблер]] з сервісами компанії<ref>[http://nichrome.rambler.ru/ Рамблер. Нихром&nbsp;— браузер на базе Chromium]</ref>
* [[Maxthon]]&nbsp;— веббраузер з вбудованим блокатором реклами, що використовує два рушії рендеринга: WebKit і Trident<ref>[http://finance.yahoo.com/news/Maxthon-30-Dual-Display-prnews-1482484669.html;_ylt=AvZRUtT7djovO187LoYlUrSscq9_;_ylu=X3oDMTFkZ3NqZTFtBHBvcwM1BHNlYwNuZXdzSHViQXJ0aWNsZUxpc3QEc2xrA21heHRob24zMGR1YQ--?x=0 Реліз Maxthon 3 з рушієм Google V8] {{Webarchive|url=https://web.archive.org/web/20101008135441/http://finance.yahoo.com/news/Maxthon-30-Dual-Display-prnews-1482484669.html |date=8 жовтня 2010 }}.{{ref-en}}</ref>
* [[Flock]]&nbsp;— веб-браузер, націлений на роботу з соціальними мережами<ref name=autogenerated1>[http://beta.flock.com/powered_by_chromium Flock меняет основу]{{Недоступне посилання|date=лютий 2019 |bot=InternetArchiveBot }}{{ref-en}}</ref>
* Браузер Android&nbsp;— [[мобільний браузер]], що входить до Android OS<ref>[http://www.gadgetsnreviews.com/here-gets-launched-the-android-2-2-froyo-update-for-nexus-one-‘officially’-by-google/2397.html Включення рушія V8 у мобільний браузер Froyo] {{Webarchive|url=https://web.archive.org/web/20110101175737/http://www.gadgetsnreviews.com/here-gets-launched-the-android-2-2-froyo-update-for-nexus-one-%e2%80%98officially%e2%80%99-by-google/2397.html |date=1 січня 2011 }}{{ref-en}}</ref>
* [[Maxthon]]&nbsp;— веб-браузер з вбудованим блокатором реклами, що використовує два рушії рендеринга: WebKit і Trident<ref>[http://finance.yahoo.com/news/Maxthon-30-Dual-Display-prnews-1482484669.html;_ylt=AvZRUtT7djovO187LoYlUrSscq9_;_ylu=X3oDMTFkZ3NqZTFtBHBvcwM1BHNlYwNuZXdzSHViQXJ0aWNsZUxpc3QEc2xrA21heHRob24zMGR1YQ--?x=0 Реліз Maxthon 3 з рушієм Google V8].{{ref-en}}</ref>
* [[Opera для Android]]<ref>[http://www.opennet.ru/opennews/art.shtml?num=36981 Первый стабильный выпуск основанного на WebKit браузера Opera для Android] {{Webarchive|url=https://web.archive.org/web/20130607203849/http://www.opennet.ru/opennews/art.shtml?num=36981 |date=7 червня 2013 }} // [[opennet.ru]] 21.05.2013</ref>
* Браузер Android&nbsp;— мобільний браузер, що входить до Android OS<ref>[http://www.gadgetsnreviews.com/here-gets-launched-the-android-2-2-froyo-update-for-nexus-one-‘officially’-by-google/2397.html Включення рушія V8 у мобільний браузер Froyo]{{ref-en}}</ref>
* [[Vivaldi]]&nbsp;— вебоглядач від групи колишніх працівників компанії Opera Software
* [[Opera для Android]]<ref>[http://www.opennet.ru/opennews/art.shtml?num=36981 Первый стабильный выпуск основанного на WebKit браузера Opera для Android] // [[opennet.ru]] 21.05.2013</ref>
* [[Vivaldi]]&nbsp;— веб-оглядач від групи колишніх працівників компанії Opera Software


=== Операційні системи ===
=== Операційні системи ===
Рядок 69: Рядок 69:


== Посилання ==
== Посилання ==
* [https://code.google.com/p/v8/ Офіційний сайт проекту] {{ref-en}}
* [https://code.google.com/p/v8/ Офіційний сайт проекту] {{Webarchive|url=https://web.archive.org/web/20130515132628/https://code.google.com/p/v8/ |date=15 травня 2013 }} {{ref-en}}
* [https://developers.google.com/v8/intro Документація Google V8] {{ref-en}}
* [https://developers.google.com/v8/intro Документація Google V8] {{Webarchive|url=https://web.archive.org/web/20170404171153/https://developers.google.com/v8/intro |date=4 квітня 2017 }} {{ref-en}}
* [https://web.archive.org/web/20130304102552/http://v8.googlecode.com/svn/data/benchmarks/v6/run.html Тестування продуктивності JavaScript-рушія за допомогою V8 Benchmark Suite] {{ref-en}}
* [https://web.archive.org/web/20130304102552/http://v8.googlecode.com/svn/data/benchmarks/v6/run.html Тестування продуктивності JavaScript-рушія за допомогою V8 Benchmark Suite] {{ref-en}}
* [https://web.archive.org/web/20101224173240/http://mansio.ru/benchmark Комплексне тестування за допомогою SunSpider, Kraken і V8 Benchmark швидкодії JavaScript-рушіїв]
* [https://web.archive.org/web/20101224173240/http://mansio.ru/benchmark Комплексне тестування за допомогою SunSpider, Kraken і V8 Benchmark швидкодії JavaScript-рушіїв]
* [https://channel9.msdn.com/shows/Going+Deep/Expert-to-Expert-Erik-Meijer-and-Lars-Bak-Inside-V8-A-Javascript-Virtual-Machine/ V8&nbsp;— Віртуальна машина JavaScript] {{ref-en}}
* [https://channel9.msdn.com/shows/Going+Deep/Expert-to-Expert-Erik-Meijer-and-Lars-Bak-Inside-V8-A-Javascript-Virtual-Machine/ V8&nbsp;— Віртуальна машина JavaScript] {{Webarchive|url=https://web.archive.org/web/20130521190551/http://channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Erik-Meijer-and-Lars-Bak-Inside-V8-A-Javascript-Virtual-Machine |date=21 травня 2013 }} {{ref-en}}


[[Категорія:Рушії JavaScript]]
[[Категорія:Рушії JavaScript]]
[[Категорія:Віртуальні машини]]
[[Категорія:Віртуальні машини]]
[[Категорія:Node.js]]
[[Категорія:Програмне забезпечення на C++]]
[[Категорія:Програмне забезпечення на C++]]
[[Категорія:Вільні компілятори та інтерпретатори]]
[[Категорія:Програмне забезпечення, що використовує ліцензію BSD]]

Поточна версія на 03:20, 30 листопада 2023

V8 JavaScript Engine
Типрушій JavaScript
РозробникиThe Chromium Project
Перший випуск2 вересня 2008; 15 років тому (2008-09-02)
Стабільний випуск5.8[1][2] (19 квітня 2017; 7 років тому (2017-04-19))
ПлатформаIA-32, x86-64, ARM[3], MIPS[4]
Операційна системаБагатоплатформний
Мова програмуванняC++,[5] JavaScript[5]
Стан розробкиактивний
ЛіцензіяBSD[6]
Репозиторійchromium.googlesource.com/v8/v8
Вебсайтdevelopers.google.com/v8

V8 — рушій JavaScript з відкритим початковим кодом. Розроблений данським відділенням компанії Google та розповсюджується за ліцензією BSD.

Огляд

[ред. | ред. код]

Розробка JavaScript-рушія V8 почалася у данському відділенні Google в місті Орхус. Провідним розробником став Ларс Бак (Lars Bak).

Основними проблемами, які розв'язували розробники були швидкодія та масштабованість[7]. Перша лабораторна версія рушія з'явилася 3 липня 2008[8], а вже 2 вересня було офіційно представлена ​​версія 0.2.5, яка увійшла в перший публічний реліз Chromium[9].

Ларс Бак вважав[10], що V8 має особливості:

  • Компіляція початкового коду JavaScript безпосередньо у власний машинний код, минаючи стадію проміжного байт-коду.
  • Ефективна система керування пам'яттю, яка дозволяє швидко резервувати місця для об'єкту та зменшити очікування на прибирання сміття[11]
    • V8 зупиняє виконання коду під час виконання прибирання сміття.
    • V8 може точно визначати, де містяться в пам'яті об'єкти й посилання, що дозволяє уникнути витоку пам'яті при помилковій ідентифікації об'єктів як посилань.
  • Введення прихованих класів й вбудованих кешів, які прискорюють доступ до властивостей та виклики функцій.

V8 виконує JavaScript-сценарії в особливих «контекстах», які по суті є окремими віртуальними машинами. Але в одному процесі може працювати тільки одна віртуальна машина, незважаючи на можливість використання декількох потоків[12]. У Chromium це обходиться мультипроцесовою архітектурою, підвищується також стабільність і безпека через реалізацію механізму «пісочниці»[13].

Рушій V8 відрізняється від інших рушіїв (JScript, SpiderMonkey, JavaScriptCore, Nitro) високою швидкодією та продуктивністю[14][15][16][17][18].

Продукти, що використовують V8

[ред. | ред. код]

Рушій V8 використовується в:

  • браузерах (Google Chrome та Chromium);
  • в складі серверних платформ Node.js[19];
  • в складі десктоп-програм, наприклад, на платформі .NET/Mono.

Браузери

[ред. | ред. код]
  • Chromium — веббраузер з відкритим кодом, на основі якого створюються низка браузерів
  • Google Chrome — веббраузер від Google
  • Opera від версії 13
  • CoolNovo — веббраузер від Maple Studios, що розширює можливості Chromium
  • SRWare Iron — веббраузер від компанії SRWare, випущені через те, що Google Chrome відправляє компанії Google відомості про користувача
  • Comodo Dragon — веббраузер від Comodo з додатковими функціями, що підвищують безпеку та конфіденційність
  • Flock — веббраузер, націлений на роботу з соціальними мережами[20]
  • Maxthon — веббраузер з вбудованим блокатором реклами, що використовує два рушії рендеринга: WebKit і Trident[21]
  • Браузер Android — мобільний браузер, що входить до Android OS[22]
  • Opera для Android[23]
  • Vivaldi — вебоглядач від групи колишніх працівників компанії Opera Software

Операційні системи

[ред. | ред. код]
  • Android — операційна система від Google, призначена для комунікаторів, нетбуків і планшетів. Використовується в браузері, починаючи з Froyo
  • Open webOS — операційна система від Hewlett-Packard для комунікаторів, нетбуків і планшетів. Рушій V8 використовується в браузері
  • Google Chrome OS — операційна система від Google на базі проекту Chromium, орієнтована на хмарні сервіси. V8 є важливим компонентом ОС

Серверні платформи

[ред. | ред. код]

Виноски

[ред. | ред. код]
  1. V8 Release 5.8. V8 Project. Архів оригіналу за 30 березня 2017. Процитовано 1 червня 2017.
  2. Stable Channel Update for Desktop. Google Chrome Team. Архів оригіналу за 18 травня 2017. Процитовано 1 червня 2017.
  3. Архівована копія. Архів оригіналу за 4 квітня 2017. Процитовано 22 травня 2013.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  4. Офіційна підтримка з версії 3.8.2
  5. а б V8 JavaScript Engine. Google Code. Архів оригіналу за 15 травня 2013. Процитовано 22 травня 2013.
  6. v8/LICENSE.v8 at master. Github. Архів оригіналу за 7 серпня 2021. Процитовано 1 червня 2017.
  7. Ларс Бак в Санкт-Петербурге [Архівовано 8 березня 2013 у Wayback Machine.](рос.)
  8. V8 JavaScript Engine initial export. Архів оригіналу за 3 жовтня 2014. Процитовано 22 травня 2013.
  9. Запуск V8, Chromium и Google Chrome [Архівовано 13 березня 2015 у Wayback Machine.](англ.)
  10. Огляд можливостей [Архівовано 3 грудня 2010 у Wayback Machine.](англ.)
  11. Ефективне збирання «сміття» [Архівовано 17 вересня 2013 у Wayback Machine.](англ.)
  12. Огляд можливостей рушія V8 на серверах [Архівовано 29 липня 2013 у Wayback Machine.] (рос.)
  13. Огляд мультипроцесорної архітектури [Архівовано 19 травня 2013 у Wayback Machine.](англ.)
  14. Design Elements [Архівовано 17 вересня 2013 у Wayback Machine.](англ.)
  15. Speed test: Google Chrome beats Firefox, IE, Safari [Архівовано 2011-10-06 у Wayback Machine.](англ.)
  16. Быстрый запуск вебприложений [Архівовано 9 серпня 2013 у Wayback Machine.](рос.)
  17. Mozilla порівнює продуктивність рушіїв [Архівовано 11 вересня 2010 у Wayback Machine.] (англ.)
  18. Перевірити продуктивність рушія JavaScript, що використовується браузером, можна запустивши тести V8 Benchmark Suite [Архівовано 4 березня 2013 у Wayback Machine.], SunSpider [Архівовано 27 грудня 2012 у Wayback Machine.], Kraken [Архівовано 1 липня 2020 у Wayback Machine.]
  19. Jolie O'Dell (10 березня 2011). Why Everyone Is Talking About Node. Mashable. Архів оригіналу за 2 серпня 2017. Процитовано 14 червня 2014.
  20. Flock меняет основу [Архівовано 7 березня 2012 у Wayback Machine.](англ.)
  21. Реліз Maxthon 3 з рушієм Google V8 [Архівовано 8 жовтня 2010 у Wayback Machine.].(англ.)
  22. Включення рушія V8 у мобільний браузер Froyo [Архівовано 1 січня 2011 у Wayback Machine.](англ.)
  23. Первый стабильный выпуск основанного на WebKit браузера Opera для Android [Архівовано 7 червня 2013 у Wayback Machine.] // opennet.ru 21.05.2013

Посилання

[ред. | ред. код]