Sealang este un set imbunatatit de legaturi Python pentru libclang.

Mentinatorii din amonte ai libclang nu au reactionat in mod deosebit la patch-uri care abordeaza probleme precum compatibilitatea Python 3 si omisiunile semnificative din API (cum ar fi extragerea literelor si operatorilor).

Acest pachet este o bifurcare a legaturilor oficiale Python pentru libclang, corecte pentru a corecta aceste probleme.

Instalare

Pentru a compila Sealang, va trebui sa:

  1. Instalati LLVM (cu clang)
  2. Setati cateva variabile de mediu
  3. Instalati Sealang

Comenzile exacte necesare vor varia intre platforme.

OS X

Desi OS X ofera Clang, nu ofera toate antetele de dezvoltare, asa ca va trebui. Homebrew este cel mai simplu mod de a face acest lucru. Urmati instructiunile de instalare de pe pagina principala Homebrew; dupa ce ati instalat Homebrew, puteti rula:

$ brew install llvm –with-clang –with-asan

pentru a obtine o instalare functionala a llvm cu clang.

Apoi, va trebui sa setati urmatoarele variabile de mediu:

$ export LLVM_HOME = / usr / local / opt / llvm $ export DYLD_LIBRARY_PATH = $ LLVM_HOME / lib

In cele din urma, puteti instala Sealang:

$ pip instaleaza sealang

Ubuntu

Pentru a compila sub Ubuntu 14.04 (Trusty), va trebui sa obtineti o versiune actualizata a LLVM:

$ sudo apt-get install libclang-3.6 clang-3.6 -y

Pentru Ubuntu 16.04 (Xenial), poate fi necesar si sa instalati pachete de programe suplimentare:

$ sudo apt-get install zlib1g-dev libncurses5-dev -y

Apoi, va trebui sa setati urmatoarele variabile de mediu:

$ export LLVM_HOME = / usr / lib / llvm-3.6 $ export LD_LIBRARY_PATH = $ LLVM_HOME / lib

In cele din urma, puteti instala Sealang:

$ pip instaleaza sealang

Alte platforme

Instructiunile de instalare pe alte platforme ar trebui sa fie similare. Daca dezvoltati instructiuni de constructie pentru o platforma, va rugam sa trimiteti o cerere de extragere.

Utilizare

Sealang ofera un superset al functionalitatii oferite de libclang. Aceste caracteristici sunt:

Cum functioneaza

Sealang este un pic cam prost. libclang este un set de legaturi C la un API C ++; Tipurile Python sunt apoi utilizate pentru a infasura API-ul C. Cu toate acestea, in timp ce API-ul C ++ este destul de bogat, libclang este mai putin.

Sealang elimina acest decalaj oferind invelitori C in jurul apelurilor C ++ care ofera functionalitatea utila. Aceasta biblioteca de functii C este infasurata ca un modul Python C pentru livrare – acest modul C nu contine obiecte sau metode Python expuse , dar deoarece este un modul, fisierul compilat sealang.so este usor de gasit. tipurile sunt apoi utilizate pentru a expune functiile de impachetare sealang;

Pe plan intern, Sealang reproduce cateva piese minore din API-ul libclang; acestea sunt metode (cum ar fi metodele de creare si manipulare a sirurilor) care nu sunt expuse ca simboluri pentru utilizarea tertilor.

Toate aceste functionalitati pot fi transmise in amonte catre libclang.

Relatia cu Clang

Acest proiect isi propune sa reflecte ceea ce este disponibil in prezent in legaturile Python la libclang. Numarul versiunii pentru acest proiect este extras din versiunea si revizuirea SVN a depozitului oficial clang.

Orice modificare facuta in amonte la libclang va fi reflectata aici; orice schimbari facute aici vor fi, acolo unde este posibil, impinse in amonte catre libclang.

Comunitate

Sealang face parte din suita BeeWare. Puteti vorbi cu comunitatea prin:

  • @pybeeware pe Twitter
  • Lista de e-mail a utilizatorilor BeeWare, pentru intrebari despre cum sa utilizati suita BeeWare.
  • Lista de distributie a dezvoltatorilor BeeWare, pentru a discuta despre dezvoltarea de noi caracteristici in suita BeeWare si idei pentru noi instrumente pentru suita.

Contribuind

Daca aveti probleme cu Sealang, conectati-le pe GitHub. Daca doriti sa contribuiti cu codul, va rugam sa il codificati si sa trimiteti o cerere de extragere.