ΠŸΡ€Π²ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° Blink, Π΅ΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€ со високи пСрформанси x86-64

ОбјавСно Π΅ ΠΏΡ€Π²ΠΎΡ‚ΠΎ Π·Π½Π°Ρ‡Π°Ρ˜Π½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ Blink, Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ˜ΡœΠΈ Π΅ΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€ Π½Π° процСсор x86-64 кој Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°Ρ‚Π΅ статички ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡ΠΊΠΈ ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ΠΈ Linux Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π²ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½Π° машина со Π΅ΠΌΡƒΠ»ΠΈΡ€Π°Π½ процСсор. Π‘ΠΎ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° Blink, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅ Π½Π° Linux составСни Π·Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° x86-64 ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°Π°Ρ‚ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΈ систСми ΠΊΠΎΠΌΠΏΠ°Ρ‚ΠΈΠ±ΠΈΠ»Π½ΠΈ со POSIX (macOS, FreeBSD, NetBSD, OpenBSD, Cygwin) ΠΈ Π½Π° Ρ…Π°Ρ€Π΄Π²Π΅Ρ€ со Π΄Ρ€ΡƒΠ³ΠΈ хардвСрски Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ (x86, ARM, RISC-V, MIPS , PowerPC, s390x). ΠšΠΎΠ΄ΠΎΡ‚ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ Π΅ напишан Π²ΠΎ C (ANSI C11) ΠΈ дистрибуиран ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Ρ†Π°Ρ‚Π° ISC. Од зависноститС, ΠΏΠΎΡ‚Ρ€Π΅Π±Π΅Π½ Π΅ само libc (POSIX.1-2017).

Π’ΠΎ однос Π½Π° функционалноста, Blink Π½Π°Π»ΠΈΠΊΡƒΠ²Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° qemu-x86_64, Π½ΠΎ сС Ρ€Π°Π·Π»ΠΈΠΊΡƒΠ²Π° ΠΎΠ΄ QEMU со ΠΏΠΎΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π΅Π½ дизајн ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π·Π³ΠΎΠ»Π΅ΠΌΡƒΠ²Π°ΡšΠ΅ Π½Π° пСрформанситС. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·Π²Ρ€ΡˆΠ½Π°Ρ‚Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° Blink Π·Π΅ΠΌΠ° само 221 KB (со скратСна Π³Ρ€Π°Π΄Π±Π° - 115 KB) намСсто 4 MB Π·Π° qemu-x86_64, Π° Π²ΠΎ однос Π½Π° пСрформанситС Π²ΠΎ Π½Π΅ΠΊΠΎΠΈ тСстови, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС Ρ€Π°Π±ΠΎΡ‚ΠΈ Π²ΠΎ Π΅ΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΎΡ‚ GCC ΠΈ ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π³ΠΎ прСстигнува QEMU Π·Π° ΠΎΠΊΠΎΠ»Ρƒ Π΄Π²Π° ΠΏΠ°Ρ‚ΠΈ.

Π—Π° Π΄Π° сС ΠΎΠ±Π΅Π·Π±Π΅Π΄Π°Ρ‚ високи пСрформанси, сС користи JIT ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€, кој Π³ΠΈ ΠΏΡ€Π΅Ρ‚Π²ΠΎΡ€Π° ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΡ‚Π΅ инструкции Π²ΠΎ машински ΠΊΠΎΠ΄ Π·Π° Ρ†Π΅Π»Π½Π°Ρ‚Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π²ΠΎ Π»Π΅Ρ‚. ΠŸΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½ΠΎ Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΡΡ‚Π°Ρ€Ρ‚ΡƒΠ²Π°ΡšΠ΅ Π²ΠΎ Π΅ΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΎΡ‚ Π½Π° ΠΈΠ·Π²Ρ€ΡˆΠ½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ Π²ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ‚Π΅ ELF, PE (Portable Executables) ΠΈ bin (Flat ΠΈΠ·Π²Ρ€ΡˆΠ½Π°), ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»ΠΈΡ€Π°Π½ΠΈ со стандарднитС C Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Cosmopolitan, Glibc ΠΈ Musl. Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½Π° ΠΌΠ°Ρ˜Ρ‡ΠΈΠ½ ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° 180 систСмски ΠΏΠΎΠ²ΠΈΡ†ΠΈ Π½Π° Linux ΠΈ Π΅ΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΎΠΊΠΎΠ»Ρƒ 600 x86 инструкции Π·Π° процСсорот ΡˆΡ‚ΠΎ Π³ΠΈ ΠΎΠΏΡ„Π°ΡœΠ° i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2 (MULX, PDEP, PEXT, X87, мноТСства Π½Π° инструкции ΠΈ RDTSCP.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ, Π°Π»Π°Ρ‚ΠΊΠ°Ρ‚Π° blinkenlights сС Ρ€Π°Π·Π²ΠΈΠ²Π° Π²Ρ€Π· основа Π½Π° Blink, која ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ Π·Π° Π²ΠΈΠ·ΡƒΠ΅Π»ΠΈΠ·ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° содрТината Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π°. Алатката ΠΌΠΎΠΆΠ΅ Π΄Π° сС користи ΠΊΠ°ΠΊΠΎ Π΄Π΅Π±Π°Π³Π΅Ρ€ кој Π³ΠΎ ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π° Ρ€Π΅ΠΆΠΈΠΌΠΎΡ‚ Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π΄Π΅Π±Π°Π³ΠΈΡ€Π°ΡšΠ΅ (ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎ-Π΄Π΅Π±Π°Π³ΠΈΡ€Π°ΡšΠ΅) ΠΈ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° сС Π²Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π½Π°Π·Π°Π΄ Π²ΠΎ ΠΈΡΡ‚ΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° Π½Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ ΠΈ Π΄Π° сС Π²Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π½Π° ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ ΠΈΠ·Π²Ρ€ΡˆΠ΅Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ°. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ Π΅ Ρ€Π°Π·Π²ΠΈΠ΅Π½ ΠΎΠ΄ Π°Π²Ρ‚ΠΎΡ€ΠΎΡ‚ Π½Π° Ρ‚Π°ΠΊΠ²ΠΈ ΡΠ»ΡƒΡ‡ΡƒΠ²Π°ΡšΠ° ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ C-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Cosmopolitan, ΠΏΡ€ΠΈΡΡ‚Π°Π½ΠΈΡˆΡ‚Π΅ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΡ‚ Π·Π° ΠΈΠ·ΠΎΠ»Π°Ρ†ΠΈΡ˜Π° Π½Π° Π·Π°Π»ΠΎΠ³ Π·Π° Linux ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€Π·Π°Π»Π½ΠΈΠΎΡ‚ ΠΈΠ·Π²Ρ€ΡˆΠ΅Π½ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π΅Π½ систСм Redbean.

ΠŸΡ€Π²ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° Blink, Π΅ΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€ со високи пСрформанси x86-64


Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€