Szczegóły programowe:
Pyrex to język przeznaczony do tworzenia Pythona modułów rozszerzeń napisanych w kodzie C.
Jest zaprojektowany w celu wypełnienia luki pomiędzy miłym, wysokim poziomie i łatwy w użyciu świat Python i niechlujny, niskopoziomowe świat C
Do podstawowych typów, takich jak numery i smyczki to nie jest tak źle, ale nic bardziej skomplikowanego i jesteś pod zbierając Python obiektów poza używając Python / C wywołań API, które wymaga, aby być skrupulatny o utrzymanie liczby odniesień, sprawdzanie błędów na każdym kroku i oczyszczanie prawidłowo, jeśli coś pójdzie nie tak
Co nowego w tym wydaniu:.
- Niektóre funkcje na współpracę z kodu C ++ zostały wprowadzone w tej wersji.
- nie ma już miejsca Pyrex złowione wyjątki w stanie gwintu. Gwarantuje to, że wyjątki i tracebacks nie wycieknie z wyjątkiem klauzuli, że ich złapać, chyba że coś się wyraźnie ich utrzymanie.
- Obecnie argument funkcji Pythona, który jest zadeklarowany jako typ rozszerzenia będzie domyślnie, może otrzymywać wartość None; aby temu zapobiec, należy zakwalifikować deklarację argumentów z "nie Brak".
- Teraz można definiować i rodzaj rozszerzenie z atrybutami Pythona, które nie uczestniczą w cyklicznych wywóz śmieci, za pomocą nowej opcji nogc.
- size_t jest teraz wbudowany rodzaj i typ zwracany jest przez operatora sizeof. Również rozmiary size_t i Py_ssize_t obecnie zakłada się, że gdzieś pomiędzy długo i długo, długo.
- Obsługa pomiędzy dwoma int typów tej samej rangi teraz zwracają nieoznaczoną wynik, jeśli jeden z argumentów jest podpisany; jeśli szeregi różnią, wynik ten sam typ jako szerszy ocenionym argumentu. Myślę, że to jest najlepsze przybliżenie zasad ANSI C, które jest możliwe bez znajomości dokładnych rozmiarów typów.
- PyString_InternFromString jest teraz wystawiony pod nazwą cintern zamiast stażysta, bo to nie jest pełne zastąpienie funkcji stażysta Pythona (nie może obsłużyć ciągi zawierające pustych bajtów).
- Sprawdzanie rozmiaru, który został wcześniej wygenerowany podczas importowania typ wewnętrzny został wyłączony przez jakiś czas, dopóki mogę wymyślić coś lepszego. Został generowania fałszywych alarmów zbyt wiele, na przykład z różnymi wersjami numpy.
- Opcja Konwencja __fastcall dzwoniąc jest obecnie obsługiwane. Ponadto, Pyrex nie zakłada, że __cdecl jest konwencja wywoływania domyślny. Aby zostać uznana za zgodną, dwa rodzaje funkcji musi albo być zadeklarowane w tej samej konwencji wywołującego lub oba muszą zostawić nieokreślony.
- Jak byłem grożąc przez jakiś czas, za pomocą __new__ jak nazwa metody inicjalizacji typu rozszerzenia stała się błąd, a nie tylko ostrzeżenie. W niektórych przyszłych wersjach, __new__ będzie przeinstalowanie z bardziej podobne do semantyki Pythona.
Ograniczenia :
nic nie znaleziono
Komentarze nie znaleziono