- 
                Notifications
    You must be signed in to change notification settings 
- Fork 308
Apple Silicon Support with Fibers Working #483
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
Conversation
| A clone @@test("b") | ||
| yield; yield; yield; yield; | ||
| assertEquals("a1.b1.a2.b2.", A s asString) | ||
| assertEquals("a1.b1.a2.a2.", A s asString) | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This change is incorrect. The original assert is correct; test is failing on MacOS (actually on AARCH64 Linux too) in release mode though it passes (for me anyway) in debug mode.
I have a patch to fix this but it is not quite ready yet (more testing needed)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah sorry this is my bad 😞 Forgot to undo this 😔
| Just my opinion but I think this needs more scrutiny. For example the commit 92dff38 "fix object tests" makes the test pass by matching the "expected" value to the incorrect "observed" value And, Io was working on Apple Silicon before - at least I have been running it on my M4 Mac. (since #476 I guess?) | 
| @pedro-w I agree, improving current code would be nice an encouraged if any problem is identified, but that lack of testing in multiple platforms scares me. Especially because these changes are VERY platform and ISA dependent. | 
| For background I did contribute a tiny bit to Io many years ago (2016?) and 'rediscovered' it recently; it's a neat project. I have a few patches on the go but they need sorting out before I can do PRs, briefly 
 On this PR specifically I am not criticising but I would like to understand better what it is doing as some of the commits don't seem to match their description or the aim of the PR. Thanks. | 
| 
 I can test Windows 32 and 64 bit, WSL (Debian 64 bit) and MacOS M4, also ARM32 Debian on Raspberry Pi. I don't have anything on FreeBSD / OpenBSD. | 
| I actually thought that Io is dead for good and then tried to revive it to work on my system and felt of it as a shot in the dark using many patchy work and GPT help. I'm happy to see this is not! @pedro-w would you contribute your changes to the Io then? The official build needs Rosetta 2 and feels wrong. | 
| P.S. Given your comments, I'll close this one since there seems to be better fixes. | 
| Pouyakary, Just wanted to let you know that I value your PRs and I'm sorry that I haven't been more active here. | 
| Likewise I apologise if my reply was offputting, I wrote it in a rush and the tone perhaps wasn't what I wanted. 
 Maybe not dead but "moribund" 😉 . I think Io is a really nice code base and I just would like to see it get a polish up for modern platforms. | 
Description
Port the coroutine subsystem to a custom ARM64 context implementation so Io builds and runs natively on Apple Silicon macOS, removing the old Rosetta-only guidance.
Type of Change
Related Issues
Fixes #465
Changes Made
USE_ARM64_CONTEXThandling and anIoCoroARM64Contextfield so coroutines can store native register state on macOS arm64 (libs/coroutine/source/Coro.h:12).libs/coroutine/source/Coro_arm64.c:1).libs/coroutine/source/arm64-ucontext.h:1,README.md:200).Testing
Test Commands