Strona główna | Informacje | Społeczność | Rozwój | mójReactOS | Kontakt
|
Community > ReactOS Newsletter Archive > ReactOS Newsletter: Biuletyn 60Biuletyn 60by Z98 on 2009-06-12 RBuild i MSVCKompilacja ReactOSa przy użyciu kompilatorów Microsoftu znajdowała się na listach życzeń kilku naszych deweloperów, ale nikt tak naprawdę nie chciał zająć się dziwolągiem, jakim stał się RBuild (odrębny system kompilacji ReactOSa - przyp. tłum.). KJK::Hyperion uznał, że będzie w stanie przetrwać tą walkę i od dłuższego czasu pracuje nad możliwością użycia kompilatora innego niż GCC. Dotychczasowe zmiany pozwalają RBuildowi wykryć obecność kompilatora VC++, czy to dostarczonego razem z Visual Studio, czy też wraz z jednym z kilku pakietów deweloperskich - SDK lub WDK. RBuild zaczyna wtedy kompilację systemu, ale chwilę później kończy pracę błędem. Pomiędzy pisaniem kodu dla GCC i MSVC (kompilatorem Microsoftu - przyp. tłum.) jest wiele mniejszych lub większych różnic, które muszą zostać usunięte, aby możliwe było pełne skompilowanie ReactOSa w obu kompilatorach. ROS jest systemem operacyjnym, dlatego (choć nie tylko z tego powodu) wiele rzeczy uznawanych przez twórców programów za oczywiste, musi zostać powielonych. Do tej pory funkcje zostały powielone dla GCC, ale nie dla MSVC. Następnym krokiem byłoby połączenie (ang. linking) wszystkich skompilowanych obiektów przy użycia konsolidatora (ang. linker) Microsoftu. Póki co, KJK nie udało się rozwiązać tego problemu, ponieważ opcje, jakie RBuild musi przekazać do narzędzi Microsoftu, różnią się od tych przesyłanych do GCC. Inne problemy są, wg niego "zbyt skomplikowane i zbyt specjalistyczne", dlatego będą opisane (jeśli w ogóle będą) w kolejnych biuletynach. Na chwilę obecną, reszta deweloperów będzie musiała próbować kompilacji ReactOSa przy użyciu MSVC i naprawiać błędy składni, które pojawią się w trakcie tworzenia systemu. topTestowanie regresji sterownikówObecnie projekt ReactOS używa testów Wine, aby upewniać się, czy zmiany w kodzie nie wprowadzają nowych problemów wśród komponentów w przestrzeni użytkownika. Brakowało natomiast podobnego rozwiazania w interfejsach kernela i sterowników. Michael Martin podczas badania kwestii przeładowywania sterowników zdecydował się na złożenie w całość kilku testów funkcji używanych przez sterowniki. Niespodziewanie okazało się, że źródłem problemu, który badał, było odwrócone sprawdzanie poprawności. O taki błąd bardzo łatwo, natomiast dużo trudniej jest z jego znalezieniem. Aby zapobiec niezauważonemu powstaniu podobnych problemów w przyszłości, Michael napisał do tej pory dwa sterowniki, które testują tworzenie urządzeń oraz ładowanie i usuwanie z pamięci sterowników, a także kilka pomocniczych funkcji w trybie kernela. Jego testy zdołały już uwidocznić brak lub niewłaściwe ustawianie flag w strukturach DRIVER_OBJECT, co zaowocowało kilkoma poprawkami w kodzie. Poza wspomnianymi dwoma sterownikami, Michael planuje napisać program ułatwiający dostęp do wyników testów. Testy te działają w przestrzeni kernela, co czyni debugowanie i przeglądanie ich trudniejszym, niż ma to miejsce w testach Wine. topRegresja systemu dźwiękowegoSzczątkowe wsparcie dla dźwięku w ReactOSie, choć zostało wprowadzone nie tak dawno temu, już zdążyło doświadczyć regresji z powodu błędu w menedżerze obiektów (ang. object manager). Johannes Anderwald pracował nad obsługą miksera, co pozwoliłoby na regulację głośności odtwarzanego dźwięku. Wszystkie karty dźwiękowe posiadają przynajmniej dwa urządzenia podrzędne, powiązane z nimi w systemie Windows: jedno obsługuje przechwytywanie i odtwarzanie dźwięku, drugie natomiast zajmuje się miksowaniem. Do tej pory ReactOS mógł porozumiewać się tylko z pierwszym, Johannes próbował więc skomunikować system z drugim z tych urządzeń. Problem objawiał się tym, że podczas wstępnej rejestracji podurządzeń w menedżerze obiektów, ich identyfikatory były ustawiane na NULL, co uniemożliwiało systemowi ich rozróżnienie, tak aby wysłać komunikaty czy komendy do właściwego adresata. Johannesowi udało się ominąć ten problem w mało elegancki sposób, co, jak otwarcie przyznaje, może utrudnić mu dalsze prace w niedalekiej przyszłości. Miejmy nadzieję, że problem w menedżerze obiektów zostanie szybko usunięty i Johannes będzie mógł poprawnie zaimplementować obsługę dźwięku. topPodziękowania dla Andrew GreenwoodaAndrew niedawno ogłosił odejście z projektu, tłumacząc, że nie był w stanie wnieść więcej w rozwój ReactOSa. Efekty jego dotychczasowej pracy znalazły jednak zastosowanie dzięki Johannesowi, który wykorzystał część systemu dźwięku w warstwie użytkownika, napisaną przez Andrew. Andrew wniósł także dużo w przygotowanie projektu na tegoroczny FOSDEM, m.in. wykonując wizytówki, czy też tworząc hybrydową płytę, łączącą LiveCD z wersją instalacyjną. Jego dziełem jest również film, służący jako dowód obłąkania niektórych deweloperów. Jako projekt, życzymy mu wszystkiego najlepszego w jego dalszym życiu oraz dziękujemy za jego wkład w rozwój ReactOSa. top |