ROS Newsletter97

Материал из Русский WINE
Перейти к: навигация, поиск

Выпуск новостей ReactOS №97

Поддержка C++

Одна из самых значимых проблем со сборкой ReactOS в среде Visual Studio была связана с поддержкой C++. В ReactOS компонентом, содержащим наибольшее количество кода на C++, является Проводник, без которого пользователи не смогут увидеть графическую оболочку после завершения загрузки операционной системы. Для обеспечения поддержки C++ мало просто иметь компилятор, способный скомпилировать код на C++, необходимо ещё иметь в системе стандартную библиотеку шаблонов (Standard Template Library, STL) C++. Разработчики, первым языком программирования которых был C++, очень часто используют STL, и в их продуктах практически гарантированно эта библиотека будет скомпонована по-умолчанию, причём чаще всего вне зависимости от того, используется она или нет. Когда какой-либо код собирается при помощи GCC, то используется встроеннаая в GCC реализация STL, однако в Visual Studio используется другой подход. В Visual Studio, библиотека C времени выполнения и STL связаны воедино, так что компоновка одной из них означает компоновку сразу обеих. Всё это приводит к проблемам c собственной реализацией библиотеки C времени выполнения в ReactOS, так что нам было необходимо найти альтернативное решение. И вот, недавно в нашу кодовую базу была импортирована библиотека STLport, которая предназначена для обеспечения ReactOS версией STL, которую можно использовать как совместно с GCC, так и с VC++. Однако это решение также имеет несколько недостатков, и Томас Фабер (Thomas Faber) попытался их исправить. Как результат, теперь почти все компоненты ReactOS можно собрать при помощи инструментария разработчика от Microsoft.

USB

В код компонентов системы, предназначенных для поддержки USB, было добавлено немало исправлений, которые, однако, не вошли в состав версии 0.3.15 из-за заморозки кодовой базы, а авторами большинства из этих исправлений были Йоханнес Андервальд (Johannes Anderwald) и Томас Фабер. Изначально Томас хотел использовать ReactOS при работе над своей диссертацией и изучал возможность воздействия на USB-стек с целью вмешательства в его работу, попутно выявив несколько ошибок в его реализации. В своей тестовой сборке Томас воспользовался встроенной в VirtualBox функцией поддержки сквозной передачи данных с порта USB, и его устройства успешно обнаруживались не только во время работы ReactOS, но даже и во время процесса поиска устройств при запуске системы. В ходе работы над USB Томас обнаружил множество ошибок, информацию о которых вместе с соответствующими протоколами отладки он передал Йоханнесу, чтобы помочь ему в обнаружении и исправлении ошибок. Такой подход к тестированию USB предоставляет довольно интересную возможность по снижению сложности тестирования ReactOS на реальном оборудовании. USB-устройства это, несомненно, реальное аппаратное обеспечение, однако зачастую на реальном компьютере бывает довольно сложно получить отладочные данные от них. Тестирование же устройств при использовании сквозной передачи данных от порта USB в виртуальных машинах позволяет успешно избежать этой проблемы, и, в то же самое время, предоставляет возможность произвести стресс-тестирование ReactOS в условиях наличия множества реальных устройств для порта USB.

NTVDM

Поддержка 16-битных приложений Windows, по мнению разработчиков проекта, никогда не входила в список задач, которые необходимо выполнить для обеспечения совместимости с архитектурой NT5.2, поэтому практически никто и никогда не работал над NTVDM, особенно с учётом наличия в системе множества других, гораздо более важных компонентов. Однако ReactOS – это проект с открытым исходным кодом, и помимо всего прочего это означает, что мы крайне редко отвергаем предложения о помощи в разработке. И вот, когда участник сообщества по имени Александар Андрейевич (Aleksandar Andrejevic) предложил свою помощь в реализации этого компонента, разработчики проекта с радостью предоставили ему возможность работы с нашим SVN-сервером. На настоящий момент он уже создал диспетчер памяти DOS и реализовал возможность загрузки исполняемых файлов. Поскольку в коде компонента отсутствует ещё достаточно много функций, пока что большинство программ завершают свою работу сразу же после запуска, поэтому следующей задачей Александара станет разработка поддержки функций файлового ввода/вывода. Однако приложение "Hello World" уже работает довольно неплохо, и это означает, что на настоящий момент Александар достиг неплохих успехов в своей работе.

Самодостаточность

Обычно, когда в мире программного обеспечения говорят о самодостаточности чего-либо, зачастую имеют ввиду, что это что-то может быть собрано при помощи самого же себя. Для компиляторов это означает, например, что GCC может быть собран при помощи GCC. Для операционных систем это означает, что ReactOS можно собрать в самой ReactOS. По факту ReactOS уже достигла этой стадии своего развития, однако недавние изменения в скрипте configure.cmd всё несколько усложнили. Для решения этой проблемы Сильвейн Петреолль (Sylvain Petreolle) создал реализацию функции GetLocalDateTime инструментария управления Windows (Windows Management Instrumentation, WMI), используемой в новой версии скрипта. Хотя всё то, что делает configure.cmd можно выполнить и вручную, однако всё же это очень полезный скрипт, предназначенный для упрощения процесса сборки системы. Результаты работы Сильвейна над WMI были отправлены в Wine, и впоследствии во время синхронизации кодовой базы они попадут в ReactOS, однако кое над чем всё же предстоит ещё поработать. Как только все проблемы будут устранены, сборка ReactOS в ReactOS будет столь же простой, как сборка ReactOS в Windows.

Newsletters
30-39 #30#31#32#33#34#35#36#37#38#39
40-49 #40#41#42#43#44#45#46#47#48#49
50-59 #50#51#52#53#54#55#56#57#58#59
60-69 #60#61#62#63#64#65#66#67#68#69
70-79 #70#71#72#73#74#75#76#77#78#79
80-89 #80#81#82#83#84#85#86#87#88#89
90-99 #90#91#92#93#94#95#96#97#98#99