summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-07-18Add experimental `RUBY_SHARED_FIBER_POOL_FREE_STACKS` to control madvise.Samuel Williams
2019-07-18Add note about setting `vm.max_map_count` for Linux.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-18Add `struct fiber_pool {int free_stacks;}` to control usage of madvise.Samuel Williams
`madvise(free)` and similar operations are good because they avoid swap usage by clearing the dirty bit on memory pages which are mapped but no longer needed. However, there is some performance penalty if there is no memory pressure. Therefore, we do it by default, but it can be avoided.
2019-07-18Add FIBER_POOL_ALLOCATION_FREE to control allocation/free strategy.Samuel Williams
2019-07-18Limit expansion of fiber pool on 32-bit platforms.Samuel Williams
On 32-bit platforms, expanding the fiber pool by a large amount may fail, even if a smaller amount may succeed. We limit the maximum size of a single allocation to maximise the number of fibers that can be allocated. Additionally, we implement the book-keeping required to free allocations when their usage falls to zero.
2019-07-18Enable `madvise` to release stack space back to OS.Samuel Williams
2019-07-18Add details of fiber pool and coroutine selection to NEWS.Samuel Williams
2019-07-18Add `ucontext` and `copy` coroutine implementations to test matrix.Samuel Williams
2019-07-18Improve build process and coroutine implementation selection.Samuel Williams
2019-07-18Stack copying implementation of coroutines.Samuel Williams
2019-07-18Remove unused vm_stack recycling.Samuel Williams
2019-07-18Implement fiber pool for reduced fiber allocation overhead.Samuel Williams
Replace previous stack cache with fiber pool cache. The fiber pool allocates many stacks in a single memory region. Stack allocation becomes O(log N) and fiber creation is amortized O(1). Around 10x performance improvement was measured in micro-benchmarks.
2019-07-18Make FIBER_USE_NATIVE the default and reformat code.Samuel Williams
2019-07-18* 2019-07-18git
2019-07-18Add benchmark to help diagnose performance regression.Samuel Williams
See https://bugs.ruby-lang.org/issues/16009 for more details.
2019-07-17* expand tabs.git
2019-07-17compile.c: add NO_CHECK for the calls to COMPILE whose result is unusedYusuke Endoh
to suppress many warnings of Coverity Scan
2019-07-17Adjust indent [ci skip]Nobuyoshi Nakada
2019-07-17Get rid of LoadError with $DEBUGNobuyoshi Nakada
2019-07-17Separate pull-github from merge-github [ci skip]Nobuyoshi Nakada
2019-07-17* 2019-07-17git
2019-07-17Expanded buf to copy at onceNobuyoshi Nakada
Build dumped string from base packed data and extended year at once. Although currently ruby_marshal_write_long() never writes more than 5 bytes per its format specification, allocate `sizeof(long)+1` for the sanitation.
2019-07-17Named the backward compatible dump sizeNobuyoshi Nakada
2019-07-16Removed twisted testsNobuyoshi Nakada
Why does only Process.daemon have these tests?
2019-07-16nil as the default of optional parametersNobuyoshi Nakada
2019-07-16nil as the default of optional parametersNobuyoshi Nakada
2019-07-16Moved the check for `exception` to rb_execarg_addoptNobuyoshi Nakada
Check for `exception` option in rb_execarg_addopt, as well as other options. And then raise a particular ArgumentError if it is not allowed.
2019-07-16Constified afamily functionsNobuyoshi Nakada
2019-07-16Somehow `if` didn't workNobuyoshi Nakada
2019-07-16Print debugging information when updating failedNobuyoshi Nakada
2019-07-16Allow mday in Date.iso8601 to be omittedNobuyoshi Nakada
[Bug #12285]
2019-07-16* expand tabs.git
2019-07-16Removed intermediate local variablesNobuyoshi Nakada
2019-07-16Fixed the library path for toolsNobuyoshi Nakada
2019-07-16Fixed the library path for toolsNobuyoshi Nakada
2019-07-16Expanded f_numeratorNobuyoshi Nakada
2019-07-16Expanded f_denominatorNobuyoshi Nakada
2019-07-16* 2019-07-16git
2019-07-16* expand tabs.git
2019-07-16compile.c: add NO_CHECK for the calls to COMPILE whose result is unusedYusuke Endoh
to suppress many warnings of Coverity Scan
2019-07-16Add a /* fall through */ commentYusuke Endoh
2019-07-15Removed duplicate highlightingNobuyoshi Nakada
2019-07-15Always evaluate the expression RUBY_ASSERT_MESG_WHEN just onceNobuyoshi Nakada
2019-07-15Require Ruby 2.4 or later because needs lex_state from Ripperaycabta
2019-07-15update-deps for dependenciesNobuyoshi Nakada
2019-07-15* expand tabs.git
2019-07-15Removed dead codeNobuyoshi Nakada
If `emesg` is `Qundef`, it is not a message string and then `elen` (the length of the message) is 0. So `emesg` cannot be `Qundef` in the `elen != 0` block. Pointed out by Coverity Scan.
2019-07-15Add features of IRB to NEWSaycabta
2019-07-15Add Reline section to NEWSaycabta