Sytuacja kobiet w IT w 2024 roku
7.05.20213 min
Bulldogjob

Bulldogjob

Instagram opublikował szybką wersję Pythona

Instagram opublikował własną wersję Pythona, która skupia się na prędkości i wydajności pisanego kodu.

Instagram opublikował szybką wersję Pythona

Cinder to fork Pythona 3.8, który skupia się na znacznym poprawieniu wydajności oryginalnego języka. Instagram rozwijał go dotychczas wewnętrznie do własnych celów, ponieważ oryginalna technologia była zbyt wolna. Cinder pojawił się jednak ostatnio w otwartym repozytorium na GitHubie, które nosi nazwę Facebook Incubator. Pomimo tego, sama implementacja nie jest wspierana i przeznaczona dla ogólnego użytku - twórcy twierdzą, że opublikowanie kodu wewnętrznie rozwijanego narzędzia ma pomóc w rozwoju jednolitego i bardziej wydajnego CPythona (oficjalna implementacja Pythona).

Cindera stworzono i przetestowano na Linuksie x64. Twórcy mówią, że nie będzie on niestety działał na innych platformach.

Cinder vs CPython?

Twórcy piszą, że Cinder nie posiada żadnej oficjalnej dokumentacji. Co więcej, nie dadzą rady znaleźć ani przestrzeni, ani środków, aby utrzymywać Cindera jako niezależny projekt open-source. Zaznaczają też zdecydowanie, że nie chcą, aby ich technologia rywalizowała, czy zastąpiła w jakiś sposób CPython. 

Jeśli chodzi natomiast o samą potrzebę szybszego Pythona, to sam Guido Van Rossum stwierdził w 2014, że w jego języku chodzi o posiadanie najprostszego kompilatora, jaki może istnieć, a jeśli ktoś chce pisać szybki i wydajny kod, to powinien korzystać m.in. z języka C albo z implementacji o nazwie PyPy, która jest podobno o 4,2 razy szybsza od CPython. Pomimo tego w świecie technologii istnieje wyraźna potrzeba powstania szybkiego Pythona.

Przyjrzyjmy się teraz temu, co takiego sprawia, że Cinder jest bardziej wydajny.

Usprawnienia Cindera

Cinder posiada autorską funkcję, którą określono w repozytorium mianem “Shadowcode” albo “shadow bytecode”. Jest to implementacja inline cache. Jej działanie polega na obserwowaniu wykonania generycznego opcode Pythona i dynamicznego zastępowania go wyspecjalizowanymi wersjami, tam, gdzie to możliwe.

Kolejnym usprawnieniem Cindera jest funkcja szybkiego uruchamiania współprogramów. Jeśli wywołanie funkcji asynchronicznej zatrzymuje się na oczekiwaniu, to funkcja ta jest natychmiast wykonywana, aż do momentu pojawienia się pierwszego await. Jeśli wywołana funkcja osiągnie return bez konieczności oczekiwania, to będziemy mogli zwrócić tę wartość bezpośrednio, nawet bez tworzenia obiektu coroutine lub opóźniania pętli zdarzeń. Co więcej, twórcy twierdzą, że funkcja ta daje optymalizację procesora na poziomie około 5%, jeśli mamy naprawdę spory nakład pracy. 

Cinder JIT to kompilator JIT typu method-at-time, który pomaga w usprawnieniu działania napisanego kodu. Zaimplementowano go w C++, a uruchamia się go dzięki fladze -X jit lub zmiennej środowiskowej PYTHONJIT=1. Innym usprawnieniem jest jeszcze eksperymentalny kompilator kodu bajtowego, który wykorzystuje adnotacje typów do emitowania takiego kodu bajtowego, który będzie działał lepiej w JIT. 

Podsumowanie

Twórcy Cindera nie chcą rywalizować w żaden sposób z Pythonem - zachęcają jednak do kontaktu, jeśli ktoś ma jakiejś pomysły dotyczące usprawniania narzędzia rozwijanego przez Instagrama. To wszystko ma pomóc w tworzeniu ujednoliconej wersji CPythona, w którym będzie można pisać szybszy i bardziej wydajny kod - pomimo tego, że sami twórcy Pythona nigdy nie mieli takiego zamiaru.

Niemniej jednak, pomimo zapewnień zespołu Instagrama, w świat idzie następująca wiadomość: lubimy Pythona, ale jest tak wolny, że musieliśmy zrobić z tym porządek. Nie jest to zresztą nowość: często jest tak, że pojawia się potrzeba wprowadzenia do danej technologii nowych rzeczy i to nawet wbrew temu, czego pierwotnie chcieli jej twórcy. 

<p>Loading...</p>