Po roku prac wydano wersję 0.3.12 systemu ReactOS – darmowego, otwartoźródłowego systemu operacyjnego wzorowanego na Windows XP/2003. Pracę nad tą wersją trwały rok i jest to wydanie w którym doszło do największej ilości zmian w kodzie.
Przez rok naprawiono 259 błędów, w tym 61 regresji, z których część pochodziła jeszcze z czasów wydania 0.3.7. Dziesięć naprawionych błędów miało więcej niż trzy lata, a najstarszy z nich, błąd #969 – ponad pięć.
Poniższa lista zawiera bardzo skrócony zarys najważniejszych zmian w bieżącym wydaniu:
- Menedżer Pamięci – intensywnie rozwijany przez ekipę ARM, której szczególnie ciężka praca wymaga stopniowego zastępowania starych elementów – nowymi, przy jednoczesnym zachowaniu funkcjonalności tego krytycznego dla funkcjonowania całego systemu modułu. Mimo, że w wydaniu 0.3.12 nadal nie doszło do przejścia na nową wersję Menedżera, rozliczne zmiany i poprawki w widoczny sposób poprawiły prędkość i stabilność pracy systemu.
- Wsparcie NMI – ten mało znany fragment, ze swoim Red Screen of Death, jest niezbędny do prawidłowej obsługi błędów sprzętowych, wykrywanych przez procesor czy chipset. Dodatkowo, zastosowane wsparcie dla wielu niestandardowych wywołań zwrotnych NMI może być wykorzystane w bardziej zaawansowanym sprzęcie serwerowym. Ostatnim z elementów jest generowanie zrzutów awaryjnych NMI, zaimplementowane na razie częściowo.
- Mechanizm obsługi pułapek – Cała obsługa błędów CPU, pułapek, przerwań i wywołań systemowych została przepisana od nowa w C, zamiast dotychczas używanego Asemblera. Przy okazji udało się usunąć przestarzałe i niepotrzebne algorytmy a także wyłączyć domyślnie te procedury testowe, które szczególnie źle mogłyby odbić się na wydajności. Przejście na C umożliwiło współdzielenie znacznego fragmentu kodu do tej pory dostępnego tylko dla x86, również dla ARM i AMD64. Sam kod jest nie tylko bardziej czytelny, ale i lepiej uporządkowany, a także może być poddany optymalizacjom w procesie kompilacji, które w chwili obecnej zapewniają o wiele większy przyrost wydajności niż najlepiej zaprojektowany przez człowieka kod Asemblera, dostępny wyłącznie dla określonej grupy procesorów. Nadal trwają prace nad kilkoma pozostałymi procedurami.
- EMS – czyli Emergency Management System również został częściowo zaimplementowany. Dostępne są udokumentowane przez Microsoft flagi bootowania, jak i przesyłanie pewnych informacji dla debugera na port szeregowy. Trwające prace mają na celu wprowadzenie pełnego logowania jak i przeniesienia dotychczasowego debugera (KDBG) do EMS. Równolegle są prowadzone prace nad obsługą sterownika SAC (Special Administration Console).
- Moduł PnP – wprowadzono szereg zmian, mających poprawić kompatybilność ze sprzętem i sterownikami NT.
- Moduł ACPI – Ekipa ARM stworzyła podstawowy sterownik dla obsługi baterii, współpracujący z rozmaitymi sterownikami firm trzecich do baterii i UPS. Sterownik ten, zgodny ze specyfikacją ACPI Composite Battery, nie jest na razie aktywny ze względu na niezakończone prace nad obsługą ACPI.
- Nowy sterownik PCI – Ekipa ARM pracowała równolegle również nad stworzeniem nowego sterownika PCI. Używany dotychczas w ReactOS jest bardzo uproszczony a jego braki utrudniają testy urządzeń i sterowników firm trzecich. Nowy sterownik będzie też umożliwiał obsługę bardziej zaawansowanych technologii, takich chociażby jak mosty PCI-do-PCI. Prace nadal trwają, jednak już teraz można się spodziewać po nim o wiele większej wydajności i lepszej kompatybilności z rzeczywistym sprzętem.
- Wsparcie dla SxS – Kod Side-by-side wraz z wsparciem dla plików manifestów jest niezbędny przy uruchamianiu wielu nowych aplikacji, nawet jeśli jego implementacja jest wciąż niepełna.
- Korupcja puli pamięci – jednym z najtrudniejszych zadań podczas etapu stabilizacji kodu, było usunięcie błędów, powodujących korupcję pul pamięci. Nowy menedżer tej struktury, zaimplementowany przez ekipę ARM, będąc bardziej restrykcyjny w tym względzie, spowodował serię bardzo niepokojących, lecz co gorsze – losowych i bliżej nieokreślonych kraks podczas testów systemu. Dzięki innowacyjnej metodzie, korzystając ze zmodyfikowanej wersji QEMU, udało się wyśledzić rozmaite, często drobne z pozoru błędy kodu, które prowadziły to fatalnych w skutkach awarii. Do tej pory uchodziły na pozór niezauważone, jednak z pewnością były przyczyną wielu bliżej nieokreślonych i niewyjaśnionych błędów.
- Mechanizm zarządzania wiadomościami i timery – nieprawidłowa obsługa wiadomości niekolejkowanych często prowadziła do blokowania się wielu aplikacji. Nowa implementacja tych mechanizmów pozwoliła uporać się z tymi awariami, naprawiając przy okazji słynny błąd, z powodu którego pobieranie plików i stron w Firefoksie możliwe było wyłącznie podczas poruszania myszką.
- Port x64 – Mimo, że nadal niekompletny oraz nie działający prawidłowo, port AMD64 w chwili obecnej kompiluje się już bez znaczących błędów, tak samo jak główne drzewo kodu ReactOS. Nie spodziewajcie się jednak uruchomić system w tej wersji. Głównym celem doprowadzenia do poprawnej kompilacji w x64, była możliwość utrzymania tego stanu i pilnowania by nowy kod również był z AMD64 kompatybilny.
Należy pamiętać, że ReactOS 0.3.12 nadal jest w wersji alfa. Jest to najprawdopodobniej ostatnie wydanie z linii 0.3.x, gdyż następne wydanie ma mieć wersję 0.4, która również będzie wersja alfa. Dopiero wydania z serii 0.5.x będą już nosiły miano bety.
System można pobrać tutaj.
Dodaj komentarz