アカウント名:
パスワード:
macOS Mojaveまでの対応で、M1対応は全く興味なしもうmacOS対応を謳うのはやめた方が良いと思う
> macOS Mojaveまでの対応で、M1対応は全く興味なし> もうmacOS対応を謳うのはやめた方が良いと思う
リリースノートに"M1に対応している"って明記されてます
原文はこれ
The new Apple Silicon Macs are supported, including running x86-64 binaries under Rosetta 2.
CPUはArm64ベースだけど、Appleが作った Rossetta 2経由でx86-64のコードを動かす。32bitへの対応は Linux版Wineと同じルーチンを使って、64bit-32bit変換レイヤをそのまま流用する。ってことだと思われます。
Wineは使っていませんが、M1 の macOS で
> CPUはArm64ベースだけど、Appleが作った Rossetta 2経由でx86-64のコードを動かす。> 32bitへの対応は Linux版Wineと同じルーチンを使って、64bit-32bit変換レイヤをそのまま流用する。> ってことだと思われます。
macOSの32bit互換機能はLinuxと同様の仕組みだったのですが、macOS Catalina以降は32bit対応が削除され64bitのみ対応になり32bitバイナリは動作しなくなりました。
Wine 7.0やそれ以前のWineはLinuxやmacOSの32bit互換機能を利用していて、Windows 64bit x86_64バイナリは64bit版Wineで、Windows32bit x86バイナリは32bit版Wineで動作させています。7.0の時点ではCatalina以降は64bit版Wineのみしか動かないのでWindows x86_64バイナリのみ対応でWindows x86バイナリは非対応です。ARMアーキテクチャのM1でRosetta2経由でWineを動作させる場合も同様に64bit x86_64 Wineのみ動作するので、Windows x86_64バイナリのみ動作します。M1上でARM64版Wineを使う場合はWindows ARM64バイナリが動作します。
CodeWeaver社の19以降のCrossOverでは、Catalinaで追加されたユーザーランドからグローバルディスクリプタテーブルを設定できるmacOSのシステムコール(Linuxには以前から存在)とWineからunixライブラリ呼び出しする部分の修正と独自改良のllvm+clangを使って、力技で64bitプロセス上で32bitバイナリを実行できる仕組みを導入しました。そのためCatalina以降でも64bit版CrossOverでWindows x86バイナリとx86_64バイナリ両方が動作するようになっています。M1でもRosetta2でx86_64版CrossOverを動作させることでWindows x86バイナリとx86_64バイナリ両方が動作します。
この仕組みの解説はWineのMLにあります。https://www.winehq.org/pipermail/wine-devel/2019-December/156602.html [winehq.org]
6.0以降のWineでは、CrossOverとは別にLinuxやmacOSの32bit互換機能を使わずWindowsのWOW64と同様の機構で32bitバイナリを64bitプロセス上で動作させる仕組みを開発していました。リリースノートにあるWineのDLLのPE化、WineからUnixライブラリの呼出しをNTシステムコールを模したもの経由すること、zlibやlibpngやlibjpeg等の内蔵化、WOW64の新アーキテクチャへの移行などがそれに当たります。これはWineの内部構造をWindows NT系列と可能な限り一致させるようにすることでWindowsとの互換性を高める作業の一環です。
ただこの作業が時間切れで7.0リリースまでに完了しなかったので、7.0の時点ではCatalina以降のWindows x86バイナリへの対応はできていません。Wine 8.0の開発版7.1以降のどこかでCatalina以降や32bit互換環境なしのLinuxでも64bit版Wineのみで32bit Windows x86バイナリの実行に対応するようになると思われます。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
コンピュータは旧約聖書の神に似ている、規則は多く、慈悲は無い -- Joseph Campbell
macOS対応? (スコア:0)
macOS Mojaveまでの対応で、M1対応は全く興味なし
もうmacOS対応を謳うのはやめた方が良いと思う
Re: (スコア:1)
> macOS Mojaveまでの対応で、M1対応は全く興味なし
> もうmacOS対応を謳うのはやめた方が良いと思う
リリースノートに"M1に対応している"って明記されてます
原文はこれ
CPUはArm64ベースだけど、Appleが作った Rossetta 2経由でx86-64のコードを動かす。
32bitへの対応は Linux版Wineと同じルーチンを使って、64bit-32bit変換レイヤをそのまま流用する。
ってことだと思われます。
Wineは使っていませんが、M1 の macOS で
Re:macOS対応? (スコア:1)
> CPUはArm64ベースだけど、Appleが作った Rossetta 2経由でx86-64のコードを動かす。
> 32bitへの対応は Linux版Wineと同じルーチンを使って、64bit-32bit変換レイヤをそのまま流用する。
> ってことだと思われます。
macOSの32bit互換機能はLinuxと同様の仕組みだったのですが、macOS Catalina以降は32bit対応が削除され
64bitのみ対応になり32bitバイナリは動作しなくなりました。
Wine 7.0やそれ以前のWineはLinuxやmacOSの32bit互換機能を利用していて、Windows 64bit x86_64バイナリは
64bit版Wineで、Windows32bit x86バイナリは32bit版Wineで動作させています。7.0の時点ではCatalina以降は
64bit版Wineのみしか動かないのでWindows x86_64バイナリのみ対応でWindows x86バイナリは非対応です。
ARMアーキテクチャのM1でRosetta2経由でWineを動作させる場合も同様に64bit x86_64 Wineのみ動作するので、
Windows x86_64バイナリのみ動作します。M1上でARM64版Wineを使う場合はWindows ARM64バイナリが動作します。
CodeWeaver社の19以降のCrossOverでは、Catalinaで追加されたユーザーランドからグローバルディスクリプタ
テーブルを設定できるmacOSのシステムコール(Linuxには以前から存在)とWineからunixライブラリ呼び出しする
部分の修正と独自改良のllvm+clangを使って、力技で64bitプロセス上で32bitバイナリを実行できる仕組みを
導入しました。そのためCatalina以降でも64bit版CrossOverでWindows x86バイナリとx86_64バイナリ両方が
動作するようになっています。M1でもRosetta2でx86_64版CrossOverを動作させることでWindows x86バイナリと
x86_64バイナリ両方が動作します。
この仕組みの解説はWineのMLにあります。
https://www.winehq.org/pipermail/wine-devel/2019-December/156602.html [winehq.org]
6.0以降のWineでは、CrossOverとは別にLinuxやmacOSの32bit互換機能を使わずWindowsのWOW64と同様の機構で
32bitバイナリを64bitプロセス上で動作させる仕組みを開発していました。リリースノートにあるWineのDLLのPE化、
WineからUnixライブラリの呼出しをNTシステムコールを模したもの経由すること、zlibやlibpngやlibjpeg等の内蔵化、
WOW64の新アーキテクチャへの移行などがそれに当たります。これはWineの内部構造をWindows NT系列と可能な限り
一致させるようにすることでWindowsとの互換性を高める作業の一環です。
ただこの作業が時間切れで7.0リリースまでに完了しなかったので、7.0の時点ではCatalina以降のWindows x86
バイナリへの対応はできていません。Wine 8.0の開発版7.1以降のどこかでCatalina以降や32bit互換環境なしの
Linuxでも64bit版Wineのみで32bit Windows x86バイナリの実行に対応するようになると思われます。