-
Notifications
You must be signed in to change notification settings - Fork 954
Comparing changes
Open a pull request
base repository: tinygo-org/tinygo
base: release
head repository: tinygo-org/tinygo
compare: threading-rp2040-2
- 9 commits
- 48 files changed
- 1 contributor
Commits on Jan 21, 2025
-
Configuration menu - View commit details
-
Copy full SHA for 2599db2 - Browse repository at this point
Copy the full SHA 2599db2View commit details -
runtime: refactor GC mark phase into gcMarkReachable
This is a small refactor to prepare GC marking for multithreaded stop-the-world.
Configuration menu - View commit details
-
Copy full SHA for 8659b18 - Browse repository at this point
Copy the full SHA 8659b18View commit details -
runtime: make conservative and precise GC MT-safe
Using a global lock may be slow, but it is certainly simple and safe. If this global lock becomes a bottleneck, we can of course look into making the GC truly support multithreading.
Configuration menu - View commit details
-
Copy full SHA for c9bb33a - Browse repository at this point
Copy the full SHA c9bb33aView commit details -
Move common functions to scheduler.go. They will be used both from the cooperative and from the threads scheduler.
Configuration menu - View commit details
-
Copy full SHA for 3cc9c44 - Browse repository at this point
Copy the full SHA 3cc9c44View commit details -
sync: implement RWMutex using futexes
Somewhat surprisingly, this results in smaller code than the old code with the cooperative (tasks) scheduler. Probably because the new RWMutex is also simpler.
Configuration menu - View commit details
-
Copy full SHA for 8d6e160 - Browse repository at this point
Copy the full SHA 8d6e160View commit details -
runtime: map every goroutine to a new OS thread
This is not a scheduler in the runtime, instead every goroutine is mapped to a single OS thread - meaning 1:1 scheduling. While this may not perform well (or at all) for large numbers of threads, it greatly simplifies many things in the runtime. For example, blocking syscalls can be called directly instead of having to use epoll or similar. Also, we don't need to do anything special to call C code - the default stack is all we need.
Configuration menu - View commit details
-
Copy full SHA for 3767dec - Browse repository at this point
Copy the full SHA 3767decView commit details -
runtime: implement NumCPU for -scheduler=threads
For the threads scheduler, it makes sense to have NumCPU available. For all other schedulers, the number of available CPUs is practically limited to one by the scheduler (even though the system might have more CPUs).
Configuration menu - View commit details
-
Copy full SHA for cce44b5 - Browse repository at this point
Copy the full SHA cce44b5View commit details
Commits on Jan 22, 2025
-
Configuration menu - View commit details
-
Copy full SHA for 04242fd - Browse repository at this point
Copy the full SHA 04242fdView commit details
Commits on Apr 1, 2025
-
Configuration menu - View commit details
-
Copy full SHA for ea2f0e4 - Browse repository at this point
Copy the full SHA ea2f0e4View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff release...threading-rp2040-2