summaryrefslogtreecommitdiff
path: root/coroutine
AgeCommit message (Collapse)Author
2022-05-25Add support for address sanitizer for amd64 and arm64.Samuel Williams
Notes: Merged: https://github.com/ruby/ruby/pull/5926
2022-05-22Ruby31: add support for Darwin ppc/ppc64 (#5927)Sergey Fedorov
* add coroutines for ppc & ppc64 * fix universal coroutine to include ppc & ppc64 * add powerpc*-darwin to configure.ac * fix thread_pthread for older systems Notes: Merged-By: ioquatix <samuel@codeotaku.com>
2022-01-19[wasm] add coroutine/asyncify implementationYuta Saito
set the default coroutine_type as asyncify when wasi Notes: Merged: https://github.com/ruby/ruby/pull/5407
2021-07-02Ignore dead threads in `coroutine_join`.Samuel Williams
Notes: Merged: https://github.com/ruby/ruby/pull/4620
2021-07-01Replace copy coroutine with pthread implementation.Samuel Williams
2021-05-04Fix -Wundef warnings in coroutine/*/Context.hBenoit Daloze
* See [Feature #17752] Co-authored-by: xtkoba (Tee KOBAYASHI) <xtkoba+ruby@gmail.com> Notes: Merged: https://github.com/ruby/ruby/pull/4428
2021-04-01coroutine: Darwin on ARM64 needs alignment of 2^2David CARLIER
2021-03-30Support for native riscv64 coroutines.Samuel Williams
Notes: Merged: https://github.com/ruby/ruby/pull/4337
2021-03-22coroutine mac m1 update.David CARLIER
using proper link register and frame pointer which equal x30/x29. Notes: Merged: https://github.com/ruby/ruby/pull/4243
2021-03-05Generating note.GNU-stack section for FreeBSD on x86.David Carlier
Not enabling for ELF in general as not all platform support it (e.g. NetBSD, implictly stack never executable). Notes: Merged: https://github.com/ruby/ruby/pull/4239
2021-03-05coroutine arm64 generating note.GNU-stack section for linux.David Carlier
Notes: Merged: https://github.com/ruby/ruby/pull/4238
2021-01-23coroutine/emscripten/: Experimentally support emscripten fiber APIYusuke Endoh
2021-01-22Support coroutine on universal binaryNobuyoshi Nakada
2021-01-22Added include guards to coroutine headersNobuyoshi Nakada
2020-12-08Fix "Ruby is not properly fortified on armv7hl".Samuel Williams
See <https://bugs.ruby-lang.org/issues/16762> for more details. Notes: Merged: https://github.com/ruby/ruby/pull/3866
2020-12-05Protoized old pre-ANSI K&R style definitionsNobuyoshi Nakada
2020-12-05Proposed method for dealing with stack locals which have non-local lifetime.Samuel Williams
Notes: Merged: https://github.com/ruby/ruby/pull/3624
2020-12-05Rework the order of operations to avoid stack smashing.Samuel Williams
Notes: Merged: https://github.com/ruby/ruby/pull/3624
2020-07-05Prefix export symbol prefix to coroutine_transferNobuyoshi Nakada
2020-07-05Removed trailing spaces [ci skip]Nobuyoshi Nakada
2020-04-01Patch assembly so that it aligns properlyPaul Jordan
Notes: Merged: https://github.com/ruby/ruby/pull/2995
2020-02-06function pointers are not void*卜部昌平
The same as 8427fca49bd85205f5a8766292dd893f003c0e48. Notes: Merged: https://github.com/ruby/ruby/pull/2885
2019-12-28Remove "All Rights Reserved." from Copyright statement.Samuel Williams
2019-12-28Remove "All Rights Reserved." from Copyright statement.Samuel Williams
2019-12-27Fix coroutine copy implementation on OpenBSDJeremy Evans
OpenBSD is the only platform that uses this support by default, and it did not work because while OpenBSD supports alloca, it does not include alloca.h. This should be backported to Ruby 2.7. From George Koehler
2019-12-26decouple internal.h headers卜部昌平
Saves comitters' daily life by avoid #include-ing everything from internal.h to make each file do so instead. This would significantly speed up incremental builds. We take the following inclusion order in this changeset: 1. "ruby/config.h", where _GNU_SOURCE is defined (must be the very first thing among everything). 2. RUBY_EXTCONF_H if any. 3. Standard C headers, sorted alphabetically. 4. Other system headers, maybe guarded by #ifdef 5. Everything else, sorted alphabetically. Exceptions are those win32-related headers, which tend not be self- containing (headers have inclusion order dependencies). Notes: Merged: https://github.com/ruby/ruby/pull/2711
2019-12-05coroutine/ucontext/Context.c: define __EXTENSIONS__ explicitlyYusuke Endoh
instead of ruby/config.h, per samuel's request. https://github.com/ruby/ruby/commit/dbfd4b780e3914a3f27e92c2248254452bf0fd6b#diff-7fd78c3cc8a19b7e0637502983ec26ff
2019-12-04coroutine/ucontext/Context.c: Include "ruby/config.h" for SolarisYusuke Endoh
getcontext, makecontext, and swapcontext seem to be available only when `__EXTENSION__` is defined on Solaris.
2019-11-05Fix coroutine support on win32Lars Kanis
Ruby master branch currently fails on win32 MINGW at this spec: https://github.com/ruby/spec/blob/master/core/thread/element_set_spec.rb MINGW makes use of setjmp3() implemented in MSVCRT.DLL. This function traverses the SEH list up to a terminating pointer 0xFFFFFFFF. It therefore currently segfaults on NULL. The SEH linked list must be terminated by 0xFFFFFFFF instead of NULL. This fixes the issue mentioned here: https://github.com/ruby/ruby/pull/2279#issuecomment-509508810 Notes: Merged: https://github.com/ruby/ruby/pull/2645
2019-07-19Add assertions to `coroutine_initialize_main`.Samuel Williams
2019-07-19Split assertions to check which one fails.Samuel Williams
2019-07-18Make fiber_pool more conservative on platforms with limited address space.Samuel Williams
We use COROUTINE_LIMITED_ADDRESS_SPACE to select platforms where address space is 32-bits or less. Fiber pool implementation enables more book keeping, and reduces upper limits, in order to minimise address space utilisation.
2019-07-18Stack copying implementation of coroutines.Samuel Williams
2019-07-07Add coroutine context switch for i386-mingw32Lars Kanis
It's essentially a translation of Context.asm from Intel to AT&T syntax.
2019-06-26Restore updated implementation of arm32 coroutine code, but prefer ucontext.Samuel Williams
2019-06-26Revert "coroutine/arm32/Context.S: save/restore the registers via stack"Yusuke Endoh
This reverts commit 6df1814c08df93bbc0b3e7a73649bcf82e126064. It caused a SEGV again: https://rubyci.org/logs/rubyci.s3.amazonaws.com/scw-9d6766/ruby-master/log/20190626T051707Z.fail.html.gz
2019-06-26Add `ucontext` coroutine implementation for generic fallback.Samuel Williams
2019-06-26coroutine/arm32/Context.S: save/restore the registers via stackYusuke Endoh
Retry of 518adcca0a and dbe232e24e
2019-06-25Revert 518adcca0a and dbe232e24eYusuke Endoh
518adcca0a: "Try using arm32 implementation for fibers." dbe232e24e: "Order of arguments might be incorrect in arm32 coroutine implementation." It seems to cause SEGV consistently on Ubuntu armv7l eabihf: https://rubyci.org/logs/rubyci.s3.amazonaws.com/scw-9d6766/ruby-master/log/20190625T081710Z.fail.html.gz https://rubyci.org/logs/rubyci.s3.amazonaws.com/scw-9d6766/ruby-master/log/20190625T111708Z.fail.html.gz
2019-06-25Order of arguments might be incorrect in arm32 coroutine implementation.Samuel Williams
2019-05-17Make COROUTINE_XMM_REGISTERS compile-time only tooNobuyoshi Nakada
2019-05-16Remove unused symbolsNobuyoshi Nakada
2019-05-16Make COROUTINE_REGISTERS compile-time only not to be a global symbolNobuyoshi Nakada
2018-12-11Ensure x86 stack is fortified, fixed #15335.samuel
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66341 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-12-10Native coroutine implementation for ppc64le Linuxodaira
* configure.ac: enable fiber coroutine for powerpc64le-linux * coroutine/ppc64le/Context.S: coroutine_transfer implementation * coroutine/ppc64le/Context.h: coroutine implementation git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66315 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-28Fix for coroutine/win32/Context.objnobu
* coroutine/win32/Context.asm: old ml version 9 needs CPU directive before `.model` directive. * win32/Makefile.sub: specify object directories to separate Win32 and Win64 targets. Win32 rule was overridden by Win64 rule and just ignored. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66059 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-24Ensure stack is correctly protectedsamuel
See https://bugs.ruby-lang.org/issues/15335 for more details. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65953 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-24Change Makefile rule for assembly to use .S rather than .ssamuel
It is more conventional to use compiler to pre-process and assemble the `.S` file rather than forcing Makefile to use `.s`. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65952 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-24Fix argument order.samuel
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65945 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-20Fix indentation.samuel
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65895 b2dd03c8-39d4-4d8f-98ff-823fe69b080e