notcurses v1.4.1 is uitgebracht - een bibliotheek voor moderne tekstinterfaces


notcurses v1.4.1 is uitgebracht - een bibliotheek voor moderne tekstinterfaces

Er is een nieuwe versie van de notcurses v1.4.x-bibliotheek uitgebracht “de saga gaat door! wu-tang! wu-tang!”

Notcurses is een TUI-bibliotheek voor moderne terminalemulators. Letterlijk vertaald – geen vloeken. Het is geschreven in C, met behulp van C++-veilige headers. Wrappers beschikbaar voor Roest, C + + и Python.

Wat is het: een bibliotheek die complexe TUI's op moderne terminalemulators vereenvoudigt en heldere kleuren en Unicode maximaal ondersteunt. Veel taken die aan curses zijn gedelegeerd, kunnen worden uitgevoerd met behulp van notcurses (en vice versa).

Wat het niet is: een compatibele implementatie van X/Open-vloeken of een vervanging voor ncurses op bestaande systemen.

Notcurses beëindigt de X/Open Curses API die wordt geleverd als onderdeel van de Single UNIX-specificatie. Deze specificatie is al lang achterhaald en ondersteunt bijvoorbeeld geen terminalfunctionaliteit zoals niet-geïndexeerde 24-bits kleuren. Als zodanig is notcurses geen vervanging voor vloeken. Het is minder draagbaar en zeker getest op minder hardware.
Waar mogelijk gebruikt notcurses de terminfo-bibliotheek die bij ncurses wordt geleverd, waardoor hij enorm profiteert van de draagbaarheid ervan.
Notcurses ontgrendelt geavanceerde functionaliteit voor interactie met gebruikers op werkstations, telefoons, laptops en tablets.

Waarom deze niet-standaardbibliotheek gebruiken?

  • Draadveiligheid en efficiënt gebruik in programma's met meerdere threads zijn vanaf het begin een ontwerpoverweging geweest.

  • Beter geformatteerde API vergeleken met X/Open:

    • Geëxporteerde ID's krijgen een voorvoegsel om botsingen tussen de naamruimten te voorkomen.

    • Het bibliotheekobjectbestand exporteert een minimale set tekens. Waar praktisch mogelijk wordt alleen statische code gebruikt voor regelkoppen. Dit maakt het eenvoudiger om de compiler te optimaliseren en de laadtijden te verkorten.

  • Alle API's ondersteunen standaard de universele tekenset (Unicode). De cel-API is gebaseerd op het concept Unicode's uitgebreide grafeemcluster.

  • Visuele functies, waaronder afbeeldingen, lettertypen, video's, tekst met hoog contrast, sprites en transparante gebieden. Alle API's ondersteunen standaard 24-bits kleuren, indien nodig gekwantiseerd door de terminal.

  • Apache2-licentie, in tegenstelling tot drama's in verschillende handelingen, namelijk de ncurses-licentie (de laatste wordt samengevat als een "herformulering van MIT-X11").

Sinds de vorige belangrijke release 1.1.0 is er een groot aantal functies toegevoegd. Belangrijkste wijzigingen:

  • Leeswidget voor het invoeren van tekenreeksen in vrije vorm die zijn gekoppeld aan leesreeksen

  • Een subproceswidget voor het voortbrengen van een subproces, het beheren ervan en het terugstreamen van de resultaten ervan.

  • Linux 5.3+ gebruikt het nieuwe clone3+pidfd-mechanisme om processen te beheren zonder raceconditie.

  • Fdplane-widget voor het streamen van een willekeurige bestandsdescriptor naar het vlak (waarop het subproces is gebouwd). Beide maken callbacks mogelijk om tekst te stylen of anderszins te manipuleren.

  • Rotatie van vlakken en visuele effecten. Visualisaties uit het geheugen laden. Willekeurige RGBA/BGRx-blitting.

  • Het menu kan op een van de boven- en ondervlakken (of op beide) worden geplaatst.

  • Grote verbeteringen in de Direct-modus.

  • Polyfills, verlopen en tekst met hoog contrast.

  • Tetris toegevoegd als voorbeeld.

  • C++-wrappers van Marek Habersack hebben nu de mogelijkheid om uitzonderingen te genereren (indien nodig).

  • Python en Rust FFI bijgewerkt en getest.

Videodemo met commentaar van de auteur
Het boek “Het hacken van de planeet! met Notcourses" van de auteur

Bron: linux.org.ru

Voeg een reactie