Zrzucić skórę

Zrzucić skórę
Oryginalni autorzy Marka Dufoura i innych
Pierwsze wydanie 2005
Wersja stabilna
0.9.6 / 10 grudnia 2022 r .; 3 miesiące temu ( 2022-12-10 )
Magazyn
Napisane w Pythona , C++
System operacyjny Wieloplatformowość : Linux , Mac OS X , Windows
Dostępne w Pyton
Typ Kompilator ze źródła do źródła
Licencja GPLv3 , BSD , MIT
Strona internetowa shedskin .github .io

Shed Skin to eksperymentalny kompilator języka programowania Python (3.8+) ograniczony do C++ . Może tłumaczyć czyste, ale niejawnie napisane statycznie programy Pythona na zoptymalizowany C++. Może generować samodzielne programy lub moduły rozszerzeń, które można importować i używać w większych programach Pythona.

Shed Skin to projekt typu open source, w który zaangażowanych jest wiele osób, jednak głównym autorem jest Mark Dufour. Prace nad Shed Skin trwają od 2005 roku.

Cechy

od 2011 roku obsługiwanych jest około 20 popularnych modułów, takich jak random , itertools i re ( wyrażenia regularne ). Ponadto nie wszystkie funkcje Pythona, takie jak funkcje zagnieżdżone i obsługiwane są zmienne liczby argumentów. Wiele introspekcyjnych dynamicznych części języka nie jest obsługiwanych. Na przykład funkcje takie jak getattr i hasattr nie są obsługiwane.

Od maja 2011 r. Unicode nie jest obsługiwany.

Według stanu na czerwiec 2016 dla zestawu 75 nietrywialnych programów testowych (łącznie ponad 25 000 linii kodu), pomiary pokazują typowe przyspieszenie 2-20 razy w porównaniu z Psyco i 2-200 razy w porównaniu z CPythonem . Shed Skin jest wciąż na wczesnym etapie rozwoju, więc wiele innych programów nie skompiluje się bez modyfikacji.

Shed Skin może być używany do generowania samodzielnych plików wykonywalnych, które potrzebują tylko bibliotek wykonawczych C++. Może być również używany do generowania modułów CPython. Pozwala to na kompilowanie części większych programów za pomocą Shed Skin, podczas gdy inne części są uruchamiane przy użyciu zwykłego CPythona.

Innym zastosowaniem było opakowywanie klas C++ za pomocą Shed Skin, aby umożliwić używanie klas C++ jako klas Pythona.

Licencja kodu źródłowego Shed Skin jest podzielona na dwie części. Główny kod kompilatora jest objęty Powszechną Licencją Publiczną GNU (GPL). Kod pomocniczy, którego używa jako biblioteki wykonawczej, jest objęty BSD lub MIT , w zależności od modułu. Pozwala to na kompilację zarówno programów GPL, jak i innych niż GPL.

Wpisz wnioskowanie

Shed Skin łączy kartezjański algorytm produktu (CPA) Ole Agesena z polimorficzną częścią danych Iterative Flow Analysis (IFA) Johna Plevyaka. Wersja 0.6 wprowadziła ulepszenia skalowalności, które wielokrotnie analizują większe wersje programu (oprócz wspomnianych technik), aż do pełnej analizy. Dzięki temu Shed Skin może wnioskować o typie w większych programach niż poprzednio. Zasadniczo zaczyna się od pustego wykresu połączeń i powoli dodaje do niego, aż do dodania całego wykresu połączeń. Autor opublikował wykres pokazujący czasy analizy dla 50 przykładowych programów, w sumie około 15 000 linii.

Moduły

W przypadku wersji 0.9 w dużej mierze obsługiwanych jest 25 następujących modułów. Kilka z nich, takich jak os.path, zostało skompilowanych do C++ przy użyciu Shed Skin.

  • szyk
  • binascii
  • przepoławiać
  • kolekcje (defaultdict, deque)
  • ConfigParser (bez SafeConfigParser)
  • Kopiuj
  • sys. kolorów
  • csv (bez dialektu, sniffera)
  • datagodzina
  • fndopasowanie
  • getopt
  • kula ziemska
  • sterta
  • itertools (bez mapy gwiezdnej)
  • matematyka
  • mmap
  • os
  • os.ścieżka
  • losowy
  • Odnośnie
  • gniazdo elektryczne
  • strunowy
  • struct (bez struktury, pack_into, unpack_from)
  • sys
  • czas

Należy pamiętać, że każdy inny moduł, taki jak pygame, pyqt lub pickle, może być używany w połączeniu z modułem rozszerzeń generowanym przez Shed Skin . Aby zapoznać się z przykładami, zobacz przykłady zrzucanej skóry .

Zobacz też

Linki zewnętrzne