Pe 13 martie, după patru luni de dezvoltare, a fost lansată versiunea 2.7.0 a bibliotecii de înaltă performanță lexbor, destinată procesării formatelor HTML 5 și CSS.
Caracteristicile principale ale proiectului:
- sprijin complet pentru specificațiile WHATWG, W3C și Unicode: HTML5, CSS Syntax 3, Encoding, URL, Unicode Standard Annex #15, Unicode Technical Standard #46, Punycode, Unicode Standard Annex #15, Unicode Technical Standard #46;
- manipularea elementelor și atributelor DOM: adăugare, modificare, ștergere și altele;
- sprijin pentru analiza fragmentelor HTML;
- trecerea tuturor testelor de construcție a arborilor DOM;
- testat pe mai mult de 200 de milioane de pagini HTML utilizând ASAN;
- sprijin pentru determinarea codificării pe baza fluxului de biți;
- analiza stilurilor CSS în atributele etichetelor și în eticheta ;
- căutarea elementelor HTML utilizând selectori CSS;
- sprijin pentru 40 de codificări în procesul de codificare și decodificare;
- sprijin pentru codificarea și decodificarea în mod nebufferizat și bufferizat;
- scris în limbajul C (standard C99) fără dependențe externe și distribuit sub licența Apache 2.0;
- biblioteca este împărțită în module (Core, CSS, DOM, Encoding, Engine, HTML, NS, Punycode, Selectors, Tag, Unicode, URL, Utils), care pot fi compilate și utilizate ca biblioteci separate (cu opțiunea CMake LEXBOR_BUILD_SEPARATELY=ON);
- bindinguri externe și wrapper-e pentru limbaje Crystal, D, Elixir, Julia, PHP, Python și Ruby.
Modificări principale:
- A fost adăugat suport pentru amalgamare (combinarea fișierelor sursă într-un singur fișier). Aceasta simplifică integrarea bibliotecii în proiecte – este suficient să se conecteze un singur fișier în loc de a utiliza întregul sistem de compilare. Detalii pot fi găsite în documentation.
- A fost realizată o revizuire pe scară largă a codului responsabil pentru analiza CSS, pregătindu-se pentru implementarea layout-ului.
- A fost adăugată verificarea fluxului de intrare în parserul HTML (acest lucru este necesar exclusiv pentru a genera erori de analiză conform specificației). Dezactivată implicit, mai multe detalii pot fi găsite în html/#tokenizer-options.
- Pregătirea codului pentru lansarea motorului de layout.
- Îmbunătățiri generale și corecturi de erori.
Sursa: linux.org.ru
