wabt icon indicating copy to clipboard operation
wabt copied to clipboard

Mac ARM support

Open andreaTP opened this issue 1 year ago • 15 comments

Hi 👋 and thanks for the great project!

For generating the tests of our Java WASM interpreter we are relying heavily on wast2json, sadly there are no releases for Mac ARM, and people need to recompile this project locally to get a working version of the executable.

Do you have any plans to release for Mac ARM?

andreaTP avatar Jan 12 '24 15:01 andreaTP

Can folks use the homebrew version: https://formulae.brew.sh/formula/wabt ?

sbc100 avatar Jan 12 '24 18:01 sbc100

Yes we worked around this way for now, unfortunately this way we cannot control the wabt installed version and it can give issues. It would be nice to have a GH official release of the packages for all of the architectures.

andreaTP avatar Jan 12 '24 21:01 andreaTP

If you would like to contribute a github CI recipe to publish an arm64 macOS build that would be most welcome.

sbc100 avatar Jan 12 '24 22:01 sbc100

Make sense, unfortunately, I'm extremely not familiar with this project build and tools, I have attempted to use the new apple silicon runners but they are available only for enterprise accounts.

It should be anyhow possible to do something with Qemu or similar, it would be great if you have any reference or link to spare to get me started @sbc100 🙏

andreaTP avatar Jan 13 '24 10:01 andreaTP

@andreaTP Hi, I'm the CEO and co-founder of FlyCI. You can also try the FlyCI's M1 and M2 runners. We have a free tier of 500 minutes/month on M1.

Easily replace your M1 runners:

jobs:
 ci:
-    runs-on: macos-latest
+    runs-on: flyci-macos-large-latest-m1
   steps:
   - name: 👀 Checkout repo
     uses: actions/checkout@v4

Exclusive M2 runners:

jobs:
  ci:
-    runs-on: macos-latest
+    runs-on: flyci-macos-large-latest-m2
    steps:
      - name: 👀 Checkout repo
        uses: actions/checkout@v4

They're up to 2x faster and up to 2x cheaper than GitHub's. We'll be very happy to have you on board.

kgantchev avatar Jan 15 '24 06:01 kgantchev

Hi @kgantchev and thanks for your proposal, I'll wait for this repo maintainer's feedback and guidance 👍

andreaTP avatar Jan 15 '24 09:01 andreaTP

If somebody wants to send a PR that does this (but doesn't cost anything) feel free to do so.

In the mean time it seems reasonable to suggest that folks just use homebrew (or for more complex use cases like your just build your own binaries).

sbc100 avatar Jan 16 '24 22:01 sbc100

My own opinion is that I'd love to focus on having our deliverable be source code (like a typical old-school FLOSS project), and let downstream distributors (Linux distributions, PPAs, MacPorts, Homebrew, etc.) be the ones to prepare binaries. If Homebrew isn't preparing binaries in a way that serves the needs of Mac users, that seems like a great topic to bring up with them...

But, sure, if there's a PR that makes people happy and doesn't cost us anything, great.

keithw avatar Jan 16 '24 23:01 keithw

@kgantchev I attempted to run on FlyCI: https://github.com/andreaTP/wabt/actions/runs/7658941205/job/20872958046#step:2:6

Apparently, the CI definition needs more tweaks than I initially thought, this is very low priority for me, if you want to pick it up it would be great!

andreaTP avatar Jan 25 '24 18:01 andreaTP

@andreaTP

I think I got the setup correctly, but some of the tests are not passing. Perhaps one of the other (more experienced) contributors can pick it up from here?

kgantchev avatar Jan 25 '24 19:01 kgantchev

Looks like only two tests are failing, both related to SIMD. But this seems quite close.

The simd_address failure is expected as we have a TODO for this (https://github.com/WebAssembly/wabt/blob/main/src/template/wasm2c_simd.declarations.c#L6); somebody will need to give us the appropriate asm constraint on arm64.

The simd_i8x16_arith2 failure is less expected and seems to indicate an arm64 issue with the simd-everywhere library that wasm2c uses; I would try updating the third_party/simde submodule to the latest simd-everywhere commit, and if that fixes it, great. Otherwise somebody needs to report this upstream to https://github.com/simd-everywhere/simde

keithw avatar Jan 25 '24 19:01 keithw

Thanks @keithw... I trust that you guys got it from here.

The change is pretty simple tho. Let me know if you run into any issues with our MacOS arm64 runners. Our team is standing by should you have any problems.

Best Regards, Kiril Gantchev CEO and co-founder of FlyCI

Web: flyci.net | Twitter: flyciapp | LinkedIn: FlyCI | Discord: FlyCI

kgantchev avatar Jan 25 '24 19:01 kgantchev

I think we probably could talk ourselves into merging the CI change without the tests 100% passing on arm64 yet, but somebody needs to submit it as a Pull Request for me (or any of us) to review it.

keithw avatar Jan 25 '24 19:01 keithw

@keithw I'm not sure if that's an invitation for me to make the PR... :)

However, I made a draft PR. I'll be happy to contribute with it if that's the direction you were thinking about.

One thing to consider is that FlyCI app should be installed on this account and it should be granted permission to this repo, otherwise, none of the FlyCI jobs will be picked up by our workers. The install instructions are in the draft PR. Once that's ready, I'll make the draft into an actual PR.

kgantchev avatar Jan 25 '24 19:01 kgantchev

M1 runners are now available for open-source projects on GH Action: https://github.blog/changelog/2024-01-30-github-actions-introducing-the-new-m1-macos-runner-available-to-open-source/

andreaTP avatar Feb 01 '24 10:02 andreaTP