Skip to content

Compatibility ru RU

ArchiBot edited this page Feb 11, 2023 · 73 revisions

Совместимость

ASF - это приложение на C#, работающее на .NET платформе. Это означает, что ASF не компилируется напрямую в машинный код, который исполняется на вашем ЦП, а в код CIL, которому для работы требуется CIL-совместимая среда выполнения.

Этот подход имеет очень весомые преимущества, поскольку CIL независим от платформы, Именно поэтому ASF может запускаться на многих доступных ОС, особенно Windows, Linux и macOS. Нет необходимости не только в эмуляции, но и в поддержке всех оптимизаций, связанных с платформой и оборудованием, таких как CPU SSE инструкции. Благодаря этому, ASF может достигать превосходной производительности и оптимизации, и при этом оставаться полностью совместимым и надёжным.

Это также означает, что ASF не имеет особых требований к ОС, поскольку всё, что он требует - это работающую среду выполнения на этой ОС, а не саму ОС. As long as that runtime is executing ASF code properly, it does not matter whether underlying OS is Windows, Linux, macOS, BSD, Sony Playstation 4, Nintendo Wii or your toaster - as long as there is .NET for it, there is ASF for it (in generic variant).

Однако, независимо от того, где вы запускаете ASF, вы должны убедиться, что на вашей целевой платформе установлены необходимые компоненты .NET. Это низкоуровневые библиотеки, необходимые для функционирования среды выполнения и ядра ASF. Вполне возможно, что некоторые (или даже все) из них у вас уже установлены.


Пакеты ASF

ASF поставляется в 2 основных вариациях - универсальный пакет и пакеты под конкретные ОС. С точки зрения функциональности они ничем не отличаются, и оба способны обновляться автоматически. Единственная разница в том, содержится ли там только универсальный (generic) пакет, или с ним поставляется среда выполнения под конкретную ОС.


Универсальный пакет

Универсальный (generic) пакет - это платформо-независимая сборка, не включающая в себя никакого машинно-ориентированного кода. Этот вариант требует, чтобы в вашей ОС уже была установлена требуемая версия среды выполнения .NET Core . Все мы знаем, как сложно бывает поддерживать все зависимости в актуальном состоянии, поэтому этот пакет предназначен в основном для людей, которые уже используют .NET Core и не хотят дублировать среду выполнения только для ASF, если можно использовать ту, которая уже установлена. Основной пакет также позволяет вам запустить ASF везде, где вы можете получить рабочую реализацию .NET runtime, независимо от того, существует ли сборка AFS под конкретную ОС, или нет.

Не рекомендуется использовать универсальный пакет, если вы начинающий или даже продвинутый пользователь, желающий просто запустить ASF и не вдаваться в технические подробности, связанные с .NET Core. Другими словами - если вы знаете что это, можете пользоваться, иначе вам лучше взять пакет под конкретную ОС, как описано ниже.

Пакет для .NET Framework

В дополнение к универсальному пакету, описанному выше, существует также пакет generic-netf основанный на .NET Framework (а не на .NET Core). Этот пакет - устаревшая версия и оставлен для поддержки совместимости со времён ASF версии 2.x.x.x, и может быть запущен, например, с помощью Mono, чего пакет generic, основанный на .NET Core, на данный момент не позволяет.

В общем, вам следует по возможности избегать использования этого пакета, поскольку большинство операционных систем прекрасно (и гораздо лучше) работают с пакетом generic, упомянутым выше. Фактически, этот пакет имеет смысл использовать только на платформах, под которые отсутствует работоспособная реализация среды выполнения .NET Core, но при этом имеется работающая реализация Mono. Примерами таких платформ могут служить linux-x86 (32-разрядный linux i386/i686), а также linux-armel (платы на базе ARMv6, например Raspberry Pi 0 & 1), для которых на сегодняшний день нет официальной работоспособной среды выполнения .NET Core.

Поскольку со временем всё больше платформ начнут поддерживаться .NET Core и всё меньше будет совместимость между .NET Framework и .NET Core, пакет generic-netf будет полностью заменён пакетом generic когда-нибудь в будущем. Пожалуйста, не используйте его, если вы можете использовать любой .NET пакет, так как generic-netf имеет сильно ограниченную функциональность и совместимость по сравнению с версиями .NET, и со временем этого функционала будет становиться все меньше. Мы оказываем поддержку этого пакета только на машинах, на которых невозможно использовать вариант generic, описанный выше (например, linux-x86), и только с актуальной средой выполнения (например, последней версией Mono).


Особенности OC

Пакеты под конкретную ОС, помимо управляемого кода, присутствующего в универсальном пакете, также включают в себя машинный код для заданной платформы. Другими словами, в пакете под конкретную ОС уже присутствует правильная среда выполнения .NET, что позволяет вам полностью пропустить весь процесс установки и просто запустить ASF напрямую. Пакет под конкретную ОС, как понятно из названия, подходит только для одной ОС, и для каждой ОС нужна своя версия - например, для Windows требуется исполняемый файл ArchiSteamFarm.exe формата PE32+, а для Linux исполняемый файл ArchiSteamFarm формата Unix ELF. Как вы, возможно, знаете, эти два типа несовместимы между собой.

ASF на данный момент доступно для следующих вариантов ОС:

  • linux-arm works on 32-bit ARM-based (ARMv7+) GNU/Linux OSes with glibc 2.27 and newer. This variant covers platforms such as Raspberry Pi 2 (and newer), it will not work with older ARM architectures, such as ARMv6 found in Raspberry Pi 0 & 1, it will also not work with OSes that do not implement required GNU/Linux environment (such as Android).
  • linux-arm64 works on 64-bit ARM-based (ARMv8+) GNU/Linux OSes with glibc 2.23/musl 1.2.2 and newer. This variant covers platforms such as Raspberry Pi 3 (and newer), it will not work with 32-bit OSes that do not have required 64-bit libraries available (such as 32-bit Raspberry Pi OS), it will also not work with OSes that do not implement required GNU/Linux environment (such as Android).
  • linux-x64 works on 64-bit GNU/Linux OSes with glibc 2.17/musl 1.2.2 and newer.
  • osx-arm64 works on 64-bit ARM-based (Apple silicon) macOS OSes in version 11 and newer.
  • osx-x64 works on 64-bit macOS OSes in version 10.15 and newer.
  • win-arm64 works on 64-bit ARM-based (ARMv8+) Windows OSes in version 10, 11 and newer.
  • win-x64 works on 64-bit Windows OSes in version 10, 11, Server 2012+ and newer.

Разумеется, даже если под ваше сочетание ОС и архитектуры отсутствует готовый пакет, вы всегда можете самостоятельно установить подходящую среду выполнения .NET Core и запустить универсальный пакет ASF (generic), это и есть основная причина, почему он существует. Универсальный пакет ASF не зависим от платформы и будет работать на любой, на которой есть работоспособная среда выполнения .NET Core. Важно отметить - ASF требуется среда выполнения .NET Core, а не конкретная ОС или архитектура. К примеру, если вы пользуетесь 32-разрядной версией Windows, то несмотря на то, что нет отдельной версии ASF win-x86, вы всё равно можете установить .NET Core SDK версии win-x86 и без проблем запустить универсальный ASF. Мы просто не можем создать пакеты под все возможно используемые сочетания ОС-архитектура, поэтому приходится чем-то ограничиваться. x86 не попадает в это ограничение, поскольку это устаревшая архитектура как минимум с 2004 года.

Для просмотра полного списка поддерживаемых .NET Core 7.0 платформ и ОС, посетите раздел "release notes" в репозитории .NET Core.


Требования среды выполнения

Если вы используете пакет под конкретную ОС, вам не нужно беспокоиться о требуемой среде выполнения, поскольку ASF всегда включает в себя требуемую и актуальную среду исполнения, самое главное - чтобы у вас были установлены актуальные предусловия для .NET Core. Другими словами, вам не нужно устанавливать среду выполнения или SDK для .NET Core, поскольку пакеты под конкретную ОС требуют только присутствия необходимых библиотек в данной ОС (предусловий) и ничего более.

Однако, если вы пытаетесь запустить универсальный (generic) пакет ASF - вам следует убедиться, что среда .NET Core поддерживает необходимую ASF платформу.

ASF в данный момент основано на .NET 7.0 (net5.0), но в будущем может потребоваться более новая платформа. net7.0 is supported since 7.0.100 SDK (7.0.0 runtime), although ASF might prefer latest runtime at the moment of compilation, so you should ensure that you have latest SDK (or at least runtime) available for your machine. Универсальная версия ASF может не запуститься, если ваша среда выполнения более старая, чем минимальная (целевая) используемая в процессе компиляции.

Если есть сомнения - проверьте, что использует наша система непрерывной интеграции для компиляции и развертывания сборок ASF на GitHub. Вы можете найти вывод dotnet --info в каждой сборке как часть этапа проверки .NET.

Clone this wiki locally