Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mac ARM support #2366

Closed
andreaTP opened this issue Jan 12, 2024 · 15 comments · Fixed by #2406
Closed

Mac ARM support #2366

andreaTP opened this issue Jan 12, 2024 · 15 comments · Fixed by #2406

Comments

@andreaTP
Copy link

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?

@sbc100
Copy link
Member

sbc100 commented Jan 12, 2024

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

@andreaTP
Copy link
Author

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.

@sbc100
Copy link
Member

sbc100 commented Jan 12, 2024

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

@andreaTP
Copy link
Author

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 🙏

@kgantchev
Copy link

@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.

@andreaTP
Copy link
Author

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

@sbc100
Copy link
Member

sbc100 commented Jan 16, 2024

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).

@keithw
Copy link
Member

keithw commented Jan 16, 2024

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.

@andreaTP
Copy link
Author

andreaTP commented Jan 25, 2024

@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!

@kgantchev
Copy link

@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?

@keithw
Copy link
Member

keithw commented Jan 25, 2024

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

@kgantchev
Copy link

kgantchev commented Jan 25, 2024

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

@keithw
Copy link
Member

keithw commented Jan 25, 2024

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.

@kgantchev
Copy link

kgantchev commented Jan 25, 2024

@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.

@andreaTP
Copy link
Author

andreaTP commented Feb 1, 2024

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/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants