ΠŸΡƒΡΠΊΠ°Π½Π΅ Π½Π° вградСния JavaScript Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π» Duktape 2.4.0

ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΈ ВСрсия Π½Π° двигатСля Π½Π° JavaScript Duktape 2.4.0, насочСн към Π²Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π² ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ‚Π° Π±Π°Π·Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° C/C++. ДвигатСлят Π΅ с ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΈ, висока прСносимост ΠΈ ниска консумация Π½Π° рСсурси. Π˜Π·Ρ…ΠΎΠ΄Π½ΠΈΡΡ‚ ΠΊΠΎΠ΄ Π½Π° двигатСля Π΅ написан Π½Π° C ΠΈ разпространСниС ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·Π° Π½Π° MIT.

ΠšΠΎΠ΄ΡŠΡ‚ Duktape Π·Π°Π΅ΠΌΠ° ΠΎΠΊΠΎΠ»ΠΎ 160 kB ΠΈ консумира само 70 kB RAM, Π° Π² Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ниска консумация Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ 27 kB RAM. Π—Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° Duktape Π² C/C++ ΠΊΠΎΠ΄ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ duktape.c ΠΈ duktape.h към ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ API Π½Π° Duktape Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° JavaScript Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ C/C++ ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ. Π—Π° освобоТдаванС Π½Π° Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΎΡ‚ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡŠΠ±ΠΈΡ€Π°Ρ‡ Π½Π° Π±ΠΎΠΊΠ»ΡƒΠΊ с Ρ„ΠΈΠ½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€, ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° комбинация Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ прСброяванС Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠΈ с Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ Π·Π° ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½Π΅ (Mark and Sweep). ДвигатСлят сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° JavaScript Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° NetSurf.

ΠžΡΠΈΠ³ΡƒΡ€ΡΠ²Π° пълна ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ със спСцификациитС Π½Π° Ecmascript 5.1 ΠΈ частична ΠΏΠΎΠ΄ΠΊΡ€Π΅ΠΏΠ° Ecmascript 2015 ΠΈ 2016 (E6 ΠΈ E7), Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° прокси ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π·Π° виртуализация Π½Π° собствСност, въвСдСни масиви, ArrayBuffer, Node.js Π±ΡƒΡ„Π΅Ρ€, API Π·Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅, символСн ΠΎΠ±Π΅ΠΊΡ‚ ΠΈ Π΄Ρ€. Π’ΠΎΠΉ Π²ΠΊΠ»ΡŽΡ‡Π²Π° Π²Π³Ρ€Π°Π΄Π΅Π½ Π΄Π΅Π±ΡŠΠ³Π΅Ρ€, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° рСгулярСн ΠΈΠ·Ρ€Π°Π· ΠΈ подсистСма Π·Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Unicode. ΠžΡΠΈΠ³ΡƒΡ€Π΅Π½ΠΈ са ΠΈ спСцифични Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ, ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΡΡŠΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ, Π²Π³Ρ€Π°Π΄Π΅Π½Π° Ρ€Π°ΠΌΠΊΠ° Π·Π° рСгистриранС, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° CommonJS, ΠΈ систСма Π·Π° ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ Π½Π° Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄, която Π²ΠΈ позволява Π΄Π° Π·Π°ΠΏΠ°Π·Π²Π°Ρ‚Π΅ ΠΈ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Ρ‚Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π’ Π½ΠΎΠ²ΠΎΡ‚ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ изпълнСни Π½ΠΎΠ²ΠΈ извиквания към duk_to_stacktrace() ΠΈ duk_safe_to_stacktrace() Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° слСди Π½Π° стСка, duk_push_bare_array() Π·Π° добавянС Π½Π° нСзависими СкзСмпляри Π½Π° масив. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ duk_require_constructable() ΠΈ duk_require_constructor_call() са ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎ достояниС. ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ със спСцификацията ES2017. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π° Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° с масиви ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ. Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ опция β€ž--no-auto-completeβ€œ към интСрфСйса duk CLI, Π·Π° Π΄Π° сС Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° въвСТданС.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€