Product SiteDocumentation Site

4. Zmiany w Fedorze dla programistów

4.1. Przegląd programowania

Fedora zawiera szeroki zakres narzędzi do tworzenia oprogramowania we wszystkich popularnych językach. Ta sekcja omawia niektóre nowe funkcje w Fedorze 14.

4.1.1. Nowy język programowania

Fedora 14 wprowadza obsługę D, języka programowania systemów łączącego możliwości i wysoką wydajność języków C/C++ z wydajnością programowania nowoczesnych języków, takich jak Ruby i Python.
Więcej informacji można znaleźć na stronie Języka programowania D.

4.1.2. Obsługa środowiska GNUStep

Środowisko programistyczne GNUStep pojawiło się w Fedorze, umożliwiając łatwe tworzenie wieloplatformowych aplikacji na Fedorze używając API i narzędzi Cocoa (poprzednio NeXTSTEP/OpenStep). Głównym językiem programowania środowiska GNUStep jest Objective-C, ale nie jest do tego ograniczone.

4.1.3. Inne ulepszenia

  • Aktualizacje języków Python, Erlang i Perl oraz środowisk programistycznych NetBeans i Eclipse
  • Debuger GDB został rozszerzony nowymi poleceniami, które ułatwiają śledzenie i naprawianie nadmiernego użycia pamięci w programach i bibliotekach, a także indeksem, który znacznie przyspiesza debugowanie.
Te funkcje uzupełnia bogaty zestaw narzędzi programistycznych rozszerzający możliwości programistów. Pełna lista setek zaktualizowanych składników programistycznych znajduje się w Technicznych informacjach o Fedorze 14 na stronie http://docs.fedoraproject.org.

4.2. Czas uruchamiania

4.2.1. boost

Pakiet bibliotek języka C++ boost został zaktualizowany do wersji 1.44, która zawiera liczne zmiany. Informacje można znaleźć na stronach:
Niektóre kluczowe funkcje obejmują nowe biblioteki dla adapterów UML2 FSMs, Polygons, Factory i Forward oraz bibliotekę UUID. Istniejące biblioteki zostały zaktualizowane wieloma nowymi funkcjami, a także ulepszeniami wydajności.

4.2.2. libjpeg-turbo

Biblioteka libjpeg została zastąpiona biblioteką libjpeg-turbo, która posiada to samo API/ABI, ale jest co najmniej dwa razy szybsza na wszystkich głównych architekturach i prawie 25% szybsza na architekturach drugorzędnych. Więcej informacji można znaleźć na stronie libjpeg-turbo na wiki Fedory.

4.3. Narzędzia programistyczne

4.3.1. Język programowania D

D jest nowym językiem programowania systemów. Skupia się on na połączeniu możliwości i wysokiej wydajności języków C/C++ z wydajnością programowania nowoczesnych języków, takich jak Ruby i Python. Język D jest pisany statycznie i kompilowany bezpośrednio do kodu maszynowego. Obsługuje wiele paradygmatów, więc można używać wiele stylów programowania: imperatywny, zorientowany obiektowo i metaprogramowanie. Jest członkiem rodziny składniowej C, a jego wygląd jest bardzo podobny do języka C++.
  • Kompilator LLVM języka D
    LDC to kompilator języka programowania D. Został oparty na najnowszym interfejsie DMD i używa LLVM jako zaplecza. LLVM dostarcza szybkie i nowoczesne zaplecze do tworzenia kodu wysokiej jakości.
  • Biblioteka
    Tango to wieloplatformowa biblioteka oprogramowania open source, napisana w języku programowania D dla programistów tego języka. Została zaprojektowana jako spójna i wyczerpująca biblioteka ogólnego przeznaczenia, wspierana przez rosnącą liczbę znanych entuzjastów języka D. Dostępność solidnej i obszernej dokumentacji reprezentuje główny czynnik dostępności biblioteki, czyli skupienie na tworzeniu dokumentacji na równi z dostarczaniem najlepszej funkcjonalności.
Więcej informacji:

4.3.2. Python

Systemowy stos języka Python 2 został zaktualizowany do wersji 2.7. Lista zmian znajduje się na stronie Nowości w wersji 2.7.
4.3.2.1. Ograniczenie: PyCObject i ostrzeżenia
Język Python dostarcza różne API do użycia przez moduły rozszerzeń C. Jedno z nich, PyCObject, zostało oznaczone jako przestarzałe w języku Python 2.7, ale wiele kluczowych modułów nie zostało jeszcze przeniesionych na nowszy odpowiednik.
Domyślnie ostrzeżenia o przestarzałych funkcjach są ignorowane, więc nie powoduje to problemów.
Mimo tego, jeśli standardowe ustawienia ostrzeżeń zostały zastąpione, mogą w tych modułach wystąpić problemy. W szczególności ustawienie ostrzeżeń na "error" może spowodować przerwanie lub nawet naruszenie ochrony pamięci interpretera języka Python podczas importowania tych modułów.
Jeśli wymagane jest włączenie błędów zamiast ostrzeżeń, należy dodać zastąpienie, aby PendingDeprecationWarning powodowało zarejestrowanie zamiast wywołania wyjątku:
>>> import warnings
>>> warnings.simplefilter('error')
>>> warnings.simplefilter('default', PendingDeprecationWarning)

4.3.3. python-migrate

Pakiet python-migrate został zaktualizowany do wersji 0.6. Nowe funkcje obejmują obsługę baz danych SQLAlchemy 0.6 i Firebird, własne szablony oraz użycie dziennika języka Python. Nowa wersja wprowadza także pewne zmiany niezgodne z poprzednimi wersjami:
  • Funkcje porównania api.test() i schematów akceptują teraz adres URL jako pierwszy parametr i repozytorium jako drugi.
  • Skrypty aktualizacji/instalowania poprzedniej wersji języka Python nie importują migrate_engine automatycznie, ale pobierają mechanizm jako jedyny parametr funkcji (tzn. def upgrade(migrate_engine):).
  • Column.alter nie akceptuje już current_name, tylko wydobywa nazwę z poprzedniej kolumny.
Pełna lista zmian znajduje się w dzienniku zmian.

4.3.4. Erlang

W Fedorze 14 dostępna jest nowa wersja języka Erlang/OTP. Szczegóły znajdują się na stronie Erlang R14 na wiki Fedory.

4.3.5. GDB

Pakiet GDB został ulepszony, aby usunąć niepotrzebne wskaźniki z plików .debug, i zastąpić je indeksem, co znacznie zwiększa prędkość działania programu GDB.
Debuger GDB został rozszerzony nowymi poleceniami, które ułatwiają śledzenie i naprawianie nadmiernego użycia pamięci w programach i bibliotekach. Ta funkcjonalność została utworzona przez współtwórcę Fedory Davida Malcolma, i prawdopodobnie jest unikalna dla Fedory 14.
Więcej informacji można znaleźć na stronie Indeks GDB na wiki Fedory.

4.3.6. GNUStep

Ta funkcja oferuje możliwość tworzenia aplikacji GNUStep w Fedorze. GNUStep to reimplementacja open source środowiska NextSTEP. Dostarcza podstawową strukturę graficznego interfejsu użytkownika w języku programowania Objective-C.
Język programowania Objective-C jest częścią kolekcji kompilatorów GNU (GCC).
Listę aplikacji opartych na GNUStep można znaleźć na stronie Lista aplikacji GNUStep.
Szczegółowe wprowadzenie do projektu GNUStep można znaleźć w artykule Wprowadzenie do GNUStep.

4.3.7. Perl

Ważne zmiany w pakiecie Perl 5.12 obejmują:
  • Język Perl teraz bardziej zgadza się ze standardem Unicode. Dodatkowo, to wydanie zawiera aktualizację do wersji 5.2 tego standardu.
  • Nowe, eksperymentalne API umożliwia programistom rozszerzanie języka Perl "dołączalnymi" słowami kluczowymi i składnią.
  • Język Perl teraz posiada lepszą obsługę czasu i może utrzymywać dokładny czas także po barierze oku 2038.
  • Nowa składnia umożliwia programistom określenie numerów wersji pakietów bezpośrednio w zdaniu "package".
  • Język Perl teraz domyślnie ostrzega użytkownika o użyciu przestarzałych funkcji.
Perl 5.12.x zawiera liczne nowe funkcje, optymalizacje o poprawki błędów. Pełna lista tych zmian znajduje się na stronach:

4.3.8. Rakudo

Fedora dostarcza Rakudo Perl, implementację specyfikacji języka Perl 6 opartej na maszynie wirtualnej Parrot, umożliwiającą programistom napisanie nowych aplikacji lub przeniesienie istniejących do języka Perl 6. Aby zainstalować pakiet rakudo, należy użyć narzędzia Dodaj/usuń oprogramowanie lub wykonać polecenie: su -c 'yum install rakudo'. Informacje o opcjach wiersza poleceń: man perl6man rakudo
Więcej informacji można znaleźć na stronie Funkcja Fedory 14: Rakudo * .

4.3.9. Debuger basha

Źródła w języku Lisp dla debuger basha Emacsa, emacs-bashdb-el są teraz dołączone w Fedorze. Debuger został zaktualizowany do wersji 4.1_0.4.

4.3.10. Pyjamas

Nowością w Fedorze 14 jest pakiet pyjamas, platforma rozwijania bogatych aplikacji internetowych (RIA) zarówno dla sieci, jak i pulpitu. O tej nowej możliwości można przeczytać na stronie pyjs.org.

4.4. GCC

4.4.1. GCC

Fedora 14 zawiera wersję 4.5 pakietu GCC i różnych kompilatorów na nim opartych. Pełne informacje o zmianach można znaleźć w dziennikach zmian, ale poniżej opisano kilka głównych funkcji.
4.4.1.1. Przestarzała obsługa i funkcje
Następujące porty do poszczególnych systemów lub architektur zostały oznaczone jako przestarzałe:
  • Wydania systemu IRIX sprzed 6.5 (mips-sgi-irix5*, mips-sgi-irix6.[0-4])
  • Solaris 7 (*-*-solaris2.7)
  • Wydania systemu Tru64 UNIX sprzed V5.1 (alpha*-dec-osf4*, alpha-dec-osf5.0*)
  • Informacje o przestarzałych systemach IRIX, Solaris 7 i Tru64 UNIX można znaleźć w ogłoszeniu.
  • Obsługa klasycznej architektury POWER zaimplementowana pierwotnie w procesorach RIOS i RIOS2 starej linii produktów IBM RS/6000 w porcie rs6000 została oznaczona jako przestarzała. Nie wpływa to na architektury Power i PowerPC nowej generacji.
Usunięto obsługę wielu funkcji oznaczonych jako przestarzałe w wersji 4.4.

Zmniejszona wydajność przez zgodność z C99

Na celach x86, kod zawierający obliczenia zmiennoprzecinkowe może być wykonywany znacznie wolniej po skompilowaniu za pomocą GCC 4.5 w trybie ścisłej zgodności z C99, niż w poprzednich wersjach GCC. Wynika to ze ściślejszej zgodności kompilatora ze standardem i można jej uniknąć przez użycie opcji -fexcess-precision=fast.

4.4.2. Ulepszenie optymalizacji

  • Opcja -save-temps przyjmuje teraz opcjonalny parametr. Przełączniki -save-temps i -save-temps=cwd zapisują pliki tymczasowe w bieżącym katalogu roboczym w oparciu o oryginalny plik źródłowy. Przełącznik -save-temps=obj zapisuje pliki do katalogu podanego w opcji -o, a nazwy plików przejściowych są oparte na pliku wyjściowym.
  • Zrzuty debugowania są teraz tworzone w tym samym katalogu, co plik obiektu, zamiast w bieżącym katalogu roboczym.
  • Dodano nowy optymizator dowiązywania (-flto). Jeśli ta opcja jest używana, GCC tworzy reprezentację kodu bajtowego każdego pliku wejściowego i zapisuje je do specjalnych sekcji plików ELF w każdym pliku obiektu.
  • Automatyczne przejście równoległe zostało ulepszone, aby obsługiwało równoległą obsługą pętli zewnętrznych.
  • GCC może teraz optymalizować kod obsługi wyjątków.
Proszę zobaczyć stronę zmian wymienioną poniżej, aby uzyskać więcej informacji o tych oraz innych optymalizacjach.

4.4.3. Ulepszenia konkretnych języków

Dodano nowe funkcje języków Ada, C, C++, Fortran i Java.

4.4.4. Nowe cele

Dodano nowe procesory docelowe w rodzinach procesorów AIX, ARM, AVR, IA32, M68K, MeP, MIPS, RS/6000 oraz RX.

4.4.5. Zmiany w instalacji

Przejście na narzędzia autotools spowodowały powstanie artefaktów zmieniających katalogi, kiedy zostają znalezione. Więcej informacji, podobnie jak w przypadku powyższych zmian, można znaleźć na stronie zmian.

4.5. Java

4.5.1. NetBeans

NetBeans IDE 6.9 jest znaczącą aktualizacją programu NetBeans IDE 6.8.
NetBeans IDE 6.9 wprowadza funkcję współdziałania OSGi dla aplikacji platformy NetBeans i obsługę tworzenia wbudowanego OSGi za pomocą oprogramowania Maven; obsługę JavaFX SDK 1.3 za pomocą nowego składnika JavaFX Composer, wizualnego narzędzia projektowania do wizualnego budowania aplikacji graficznych JavaFX, podobnie do narzędzia do budowania interfejsów graficznych Swing dla aplikacji Java SE; obsługę struktury PHP Zend i Ruby on Rails 3.0; a także ulepszenia w Edytorze i Debugerze języka Java, śledzenie problemów i wiele więcej.

4.5.2. yydebug

yydebug, debuger dla kodu parsera utworzonego przez pakiet jay jest nowością w Fedorze. Pełne informacje znajdują się na stronie programu yyDebug na witrynie cs.rit.edu.

4.6. Haskell

Pakiet GHC został zaktualizowany do wersji 6.12.3, a pakiet haskell-platform do stabilnego wydania 2010.2.0.0.
Wprowadzono kilka innych ulepszeń do pakietów ghc-rpm-macros i cabal2spec, w tym połączono podpakiety -doc z podpakietami -devel.
Najłatwiejszym sposobem na zainstalowanie obsługi języka Haskell jest zainstalowanie grupy programu yum z programu Anaconda lub yum.
 yum install @haskell

4.7. Eclipse

Pakiet Eclipse został zaktualizowany do wydania "Helios". Nowe funkcje obejmują lepszą obsługą języków C/C++, sklep z aplikacjami, obsługę systemu git, platformę narzędzi WWW, ulepszoną obsługę języka JavaScript i wiele więcej.
Więcej informacji:

4.8. Jądro

Fedora 14 zawiera wersję 2.6.35 jądra Linux.