Разработчики Bottles недавно раскрыли в своем блоге подробности о работе над Bottles Next — инициативой, направленной на полную переработку архитектуры и кодовой базы проекта.
В заявлении отмечается, что текущая версия Bottles, написанная на Python с использованием интерфейса на основе GTK, сталкивается со значительными ограничениями , которые препятствуют внедрению новых функций, таких как поддержка macOS, и создают проблемы, которые могут быть решены только путем глубоких структурных изменений.
Более года назад мы анонсировали Bottles Next — полную переработку проекта Bottles. Первоначально идея заключалась в том, чтобы использовать веб-технологии для достижения желаемого опыта для наших пользователей. Однако, как это часто бывает, проводились обширные исследования, дебаты, эксперименты и постоянная переоценка.
Зачем проходить через все эти неприятности? Ну, чтобы убедиться, что мы принимаем правильные решения.
После анонса мы начали экспериментировать со многими технологиями, но прежде всего мы прислушивались к отзывам сообщества, особенно касающимся Electron. Это побудило нас искать другие пути, которые привели нас к созданию прототипов фреймворка, адаптированных к конкретным потребностям Bottles Next.
И вот мы здесь сегодня.
Именно поэтому новый подход разделяет приложение на три основных компонента:
- Клиент: отвечает за графический интерфейс
- Сервер: отвечает за логику запуска приложений и управления префиксами Wine.
- Агент: который работает в Wine и напрямую взаимодействует с Windows API.
Хотя изначально рассматривалась возможность реализации клиентской части с использованием веб-технологий, таких как Electron и VueJS, а серверной — на Go, реакция сообщества и результаты, полученные с помощью прототипов, заставили разработчиков отказаться от этой идеи.
Поэтому в итоге было решено использовать Rust как для клиента, так и для сервера, а графический интерфейс будет основан на фреймворке libcosmic. Этот фреймворк, используемый в среде рабочего стола COSMIC, является расширением библиотеки iced , которая упрощает создание современных и масштабируемых графических интерфейсов. Libcosmic использует реактивную модель программирования и следует архитектуре, аналогичной декларативному языку Elm, что облегчает понимание для разработчиков, знакомых с этим подходом.

Хотя разработчики предпочли бы работать с языком Go, в конечном итоге они выбрали Rust из-за ограниченной доступности высококачественных инструментов для разработки графических интерфейсов на Go. Несмотря на этот переход, новая архитектура также включает планы по сохранению классической версии интерфейса в качестве опции, предлагая пользователям привычный опыт, адаптируясь при этом к новым стандартам и технологиям.
Что касается рендеринга, Bottles Next будет поддерживать такие движки, как Vulkan, Metal, DX12, OpenGL 2.1+ и OpenGL ES 2.0+, обеспечивая широкую адаптацию к различным системам и оборудованию. Этот редизайн обещает улучшить производительность, расширить кроссплатформенную совместимость и обеспечить более надежную основу для дальнейшего развития Bottles.
Это обновление затрагивает как Bottles Legacy (текущую версию Bottles), так и Bottles Next. В ближайшие недели будет завершена работа над первой версией cpak. Это портативный дедуплицированный формат распространения программного обеспечения, полностью основанный на образах OCI.
Также упоминается, что агент Bottles Next, работающий в среде Windows, созданной Wine, будет написан на C# с использованием .NET. Этот выбор отвечает специфическим потребностям сервиса WineBridge, которому необходима эффективная интеграция с API Windows в эмулируемой среде.
Что касается разработки, то в ближайшие недели ожидается выпуск контейнера для тестирования первоначального прототипа Bottles Next, полностью написанного на Rust . На данный момент доступна только базовая демо-версия, позволяющая пользователям получить предварительное представление о возможностях и направлении проекта. Переход на Bottles Next обещает значительные улучшения в функциональности, совместимости и производительности.
Наконец, если вас интересует более подробная информация по этому вопросу , вы можете найти ее по следующей ссылке.