This keeps track of the hackathons I attended during my study in UU in reverse chronological order:
Migrated to the last runtime from Pony at that time. The biggest change is that one extra argument is passed in for all Pony APIs. Changed the code generator to accommodate it. One less obvious fix required is to update its value on resuming paused message, for it’s resumed by a different thread, while this extra argument contains thread local info.
Couldn’t attend the hackathon, due to a paper deadline.
Merging latest runtime from upstream, which, in theory, fixes all the broken tests. However, a serious of bugs are discovered after some testing. Lessons learned is to keep the build green as much as possible. One known bug could shadow tons of other unknown bugs.
Found a workaround for the bug on mac, which I used to believe would take enormous effort to fix. The hack is to put thread local accesses into one “un-inlinable” function, and call it after resuming the suspended context.
Felt a bit clumsy, for we basically changed the code in-place; merging with upstream is not as smooth as it could be. “The journey of a thousand miles begins with one step.”