notcurses v1.4.1 chiqarildi - zamonaviy matn interfeyslari uchun kutubxona


notcurses v1.4.1 chiqarildi - zamonaviy matn interfeyslari uchun kutubxona

notcurses v1.4.x kutubxonasining yangi versiyasi chiqdi “doston davom etmoqda! wu-tang! wu-tang!"

Notcurses - zamonaviy terminal emulyatorlari uchun TUI kutubxonasi. So'zma-so'z tarjima qilingan - la'natlar emas. U C++-xavfsiz sarlavhalar yordamida C tilida yozilgan. O'rash uchun mavjud zang, C ++ и Python.

Bu nima: zamonaviy terminal emulyatorlarida murakkab TUI-larni soddalashtiradigan kutubxona, yorqin ranglar va Unicode-ni maksimal darajada qo'llab-quvvatlaydi. La'natlarga topshirilgan ko'plab vazifalar notcurses yordamida bajarilishi mumkin (va aksincha).

Bu nima emas: X/Open la'natlarining mos keluvchi tatbiqi yoki mavjud tizimlarda ncurses o'rniga.

Notcurses Yagona UNIX spetsifikatsiyasining bir qismi sifatida taqdim etilgan X/Open Curses API-ni bekor qiladi. Ushbu spetsifikatsiya uzoq vaqtdan beri eskirgan va, masalan, indekslanmagan 24-bit rang kabi terminal funksiyalarini qo'llab-quvvatlamaydi. Shunday qilib, notcurses la'natlarni almashtirmaydi. U kamroq portativ va, albatta, kamroq uskunada sinovdan o'tgan.
Iloji bo'lsa, notcurses ncurses bilan ta'minlangan terminfo kutubxonasidan foydalanadi va uning ko'chma imkoniyatlaridan katta foyda oladi.
Notcurses ish stantsiyalari, telefonlar, noutbuklar va planshetlarda foydalanuvchilar bilan muloqot qilish uchun ilg'or funksiyalarni ochadi.

Nima uchun bu nostandart kutubxonadan foydalanish kerak?

  • Ko'p tarmoqli dasturlarda iplar xavfsizligi va samarali foydalanish boshidanoq dizayn masalasi bo'lib kelgan.

  • X/Open bilan solishtirganda yanada yaxshi formatlangan API:

    • Eksport qilingan identifikatorlar nomlar maydoni to'qnashuvini oldini olish uchun prefiksli.

    • Kutubxona ob'ekt fayli belgilarning minimal to'plamini eksport qiladi. Amaliy hollarda, statik kod faqat satr sarlavhalari uchun ishlatiladi. Bu kompilyatorni optimallashtirishni osonlashtiradi va yuklash vaqtini qisqartiradi.

  • Barcha APIlar universal belgilar to'plamini (Unicode) qo'llab-quvvatlaydi. Hujayra API kontseptsiyasiga asoslanadi Unicode kengaytirilgan grafik klasteri.

  • Tasvirlar, shriftlar, videolar, yuqori kontrastli matnlar, spritlar va shaffof joylarni o'z ichiga olgan vizual xususiyatlar. Barcha APIlar terminal tomonidan kerak bo'lganda kvantlangan 24 bitli rangni qo'llab-quvvatlaydi.

  • Apache2 litsenziyasidan farqli o'laroq dramalar bir nechta aktlarda, ya'ni ncurses litsenziyasi (ikkinchisi "MIT-X11 ning islohoti" sifatida umumlashtirilgan).

Oldingi muhim 1.1.0 versiyasidan beri juda ko'p xususiyatlar qo'shildi. Asosiy o'zgarishlar:

  • O'qish satrlari bilan bog'langan erkin shakldagi satrlarni kiritish uchun o'qish vidjeti

  • Pastki jarayonni yaratish, uni boshqarish va natijalarini orqaga uzatish uchun kichik jarayon vidjeti.

  • Linux 5.3+ yangi clone3+pidfd mexanizmidan jarayonlarni musobaqasiz boshqarish uchun ishlatadi.

  • Fdplane vidjeti ixtiyoriy fayl deskriptorini tekislikka (pastki jarayon qurilgan) oqimlash uchun. Ikkalasi ham qayta qo'ng'iroqlarga matnni uslublash yoki boshqa usulda boshqarish imkonini beradi.

  • Samolyotlarning aylanishi va vizual effektlar. Xotiradan vizualizatsiya yuklanmoqda. Tasodifiy RGBA/BGRx blitting.

  • Menyu yuqori va pastki tekisliklarning biriga (yoki ikkalasiga) joylashtirilishi mumkin.

  • To'g'ridan-to'g'ri rejimda katta yaxshilanishlar.

  • Polyfills, gradientlar va yuqori kontrastli matn.

  • Misol sifatida Tetris qo'shildi.

  • Marek Habersack'dan C++ o'ramlari endi istisnolarni tashlash imkoniyatiga ega (agar kerak bo'lsa).

  • Python va Rust FFI yangilandi va sinovdan o'tkazildi.

Muallifning sharhlari bilan video demo
Kitob “Sayyorani buzish! Notcourses bilan" muallifidan

Manba: linux.org.ru

a Izoh qo'shish