2010-06-03 14 views
16

Z mojego rozumowania Perl tradycyjnie zawiera tylko podstawową funkcjonalność, a ludzie instalują dodatkowe biblioteki, aby wykonywać wszelkiego rodzaju przydatne (a czasem bardzo podstawowe) rzeczy. Ale w pewnym momencie pojawiły się "podstawowe biblioteki", które domyślnie są dostarczane z Perlem - więc możesz używać tych bibliotek bez instalowania ich.W jaki sposób zarządzane są podstawowe biblioteki Perla?

Pochodzę z Pythona Ciekawi mnie, jak to się dzieje. W szczególności:

  1. W jaki sposób wybierane są biblioteki?
  2. Czy biblioteki nadal mają własne numery wersji i harmonogramy wydań?
  3. Jakie są gwarancje kompatybilności wstecznej podczas korzystania z tych bibliotek?
  4. Czy powszechne jest uaktualnianie lub obniżanie wersji tych bibliotek w systemie? Czy jest to zrobione w całym systemie, czy bardziej szczegółowo?
  5. Jeśli istnieje błąd, który wymaga zmiany interfejsu API, jak to się dzieje?
  6. Jak funkcjonalność jest dodawana do tych podstawowych bibliotek (jeśli w ogóle jest)?

Odpowiedz

16
  1. Obecnie tylko bibliotek, które są niezbędne do bootstrap/zainstalować inne biblioteki przejść do core list.
  2. Niektóre są tylko w repozytorium gif Perla. Niektóre mają podwójne życie w CPAN i repo. Czasami błędy są naprawiane w repozytorium, a zmiany są przenoszone do wersji CPAN. Czasami pojawia się nowa wersja na CPAN, a opiekun Perla sprawdza moduł w repozytorium.
  3. Możesz polegać na module rdzeniowym. Przed usunięciem jeden z nich ma bardzo długi okres przestoju, a ostatnim ważnym przykładem jest Switch.
  4. Packagers (np. Ludzie, którzy budują RPM dla dystrybucji Linuksa) nigdy nie byli w stanie tego zrobić; zła kolejność ścieżek dołączania (@INC), a nie ich wina, i finally fixed with 5.12. To jest powód, dla którego rekomendacja pochodzi od kompilacji twojego własnego perla i nie zadzieraj z instalacją systemu. W wersji 5.12, po prostu użyjesz CPAN do zainstalowania ulepszonej wersji modułu rdzeniowego i zostanie on zainstalowany dodatkowo do tego, który jest dostarczany wraz z systemem, ale ponieważ nowy pojawia się przed starym w ścieżce dołączania, nowy jeden zostanie załadowany, gdy go ustawisz.
  5. Określono w perlpolicy.
  6. Zaprogramuj funkcjonalność i testy, udokumentuj, następnie zwolnij na CPAN lub odpowiednio opiekun zastosuj zestaw zmian. Towarzyszy temu dyskusja na temat p5p.
+1

Dla 6, złożyłem łaty Core module (i pragma) przez http://perldoc.perl.org/perlbug.html. Możliwe jest również przesłanie nowych testów za pośrednictwem 'perlbug'. – toolic

+4

Ponadto, ponieważ 5.8.9 Perl zawiera narzędzie "corelist", które może ci powiedzieć, która wersja modułu podstawowego została dołączona do każdej wersji Perla. np .: corelist -a ExtUtils :: MakeMaker –

+0

corelist nie wydaje się być całkowicie dokładny; na przykład twierdzi, że "rodzic" znajduje się na liście głównej, kiedy nie jest. – Ether

Powiązane problemy