summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-10-26pack.c: add an offset argument to unpack and unpack1Jean Boussier
[Feature #18254] This is useful to avoid repeteadly copying strings when parsing binary formats
2021-10-26Add Class#descendantsJeremy Evans
Doesn't include receiver or singleton classes. Implements [Feature #14394] Co-authored-by: fatkodima <fatkodima123@gmail.com> Co-authored-by: Benoit Daloze <eregontp@gmail.com> Notes: Merged: https://github.com/ruby/ruby/pull/4974 Merged-By: jeremyevans <code@jeremyevans.net>
2021-10-26[Bug #18264] Fix memory leak in TracePointPeter Zhu
TracePoint leaks memory because it allocates a `rb_tp_t` struct without ever freeing it (it is created with `RUBY_TYPED_NEVER_FREE`). Notes: Merged: https://github.com/ruby/ruby/pull/5008
2021-10-26Fix TypoSteven Nunez
Notes: Merged: https://github.com/ruby/ruby/pull/5028
2021-10-27* 2021-10-27 [ci skip]git
2021-10-27Embed bare `double` if `sizeof(double) == sizeof(VALUE)`Nobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/5027
2021-10-27Align `RFloat` at VALUE boundaryNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/5027
2021-10-26Fix unaligned access to `double` in RFloatNobuyoshi Nakada
2021-10-26Make new object for negated float as `Float` is always frozen nowNobuyoshi Nakada
2021-10-26Make the metaclass of Refinement explicitlyShugo Maeda
Otherwise, singleton methods of Module are not inherited unless Refinement.singleton_class is called.
2021-10-26Revert "introduce check code for mysterious EBADF"Koichi Sasada
This reverts commit 7864efa105921eb3900c843126f2e0db02b9c6ae.
2021-10-26Revert "check other IO#close calls"Koichi Sasada
This reverts commit a1c4cab11d613d7df037a81a770ee44a23a2e9be.
2021-10-26Fix typoNobuyoshi Nakada
2021-10-26fix random EBADF problemKoichi Sasada
```ruby r, w = IO.pipe r.close IO.for_fd(w.fileno).close ``` This code closes a file descriptor `w.fileno`, but `w` doesn't know the closing. Another code can open same file descriptor with opening file (`f`). After that, the `w` will GCed and `w.fileno` is closed again, and `f.fileno` is closed too, so IO operations for `f` (`f.close`) will cause EBADF. To fix this issue, do this test in another process.
2021-10-26improve doc coverage [ci skip]卜部昌平
Just split the comment for struct's one and array's one.
2021-10-26just another evidence that @shyouhei is an idiot [ci skip]卜部昌平
(gdb) ptype/o struct RString /* offset | size */ type = struct RString { /* 0 | 16 */ struct RBasic { /* 0 | 8 */ VALUE flags; /* 8 | 8 */ const VALUE klass; /* total size (bytes): 16 */ } basic; /* 16 | 24 */ union { /* 24 */ struct { /* 16 | 8 */ long len; /* 24 | 8 */ char *ptr; /* 32 | 8 */ union { /* 8 */ long capa; /* 8 */ VALUE shared; /* total size (bytes): 8 */ } aux; /* total size (bytes): 24 */ } heap; /* 24 */ struct { /* 16 | 24 */ char ary[24]; /* total size (bytes): 24 */ } embed; /* XXX 8-byte padding */ /* total size (bytes): 24 */ } as; /* total size (bytes): 40 */ } (gdb)
2021-10-26more on eliminating $make卜部昌平
Notes: Merged: https://github.com/ruby/ruby/pull/5005
2021-10-26GNUMAKEFLAGS is too new for mac卜部昌平
It is relatively well known that mac does not update its command line tools, and make is no exception. They ship GNU make 3.x, which didn't yet implemented GNUMAKEFLAGS. Resort to MAKEFLAGS there. Notes: Merged: https://github.com/ruby/ruby/pull/5005
2021-10-26.github: use GNUMAKEFLAGS instead of JOBS卜部昌平
A bit readable to me. See also https://github.com/ruby/ruby/pull/4880 Notes: Merged: https://github.com/ruby/ruby/pull/5005
2021-10-26[rubygems/rubygems] Add support to build and sign certificates with multiple ↵Jenny Shen
key algorithms https://github.com/rubygems/rubygems/commit/967876f15d Co-Authored-By: Frederik Dudzik <frederik.dudzik@shopify.com>
2021-10-25Update YJIT code owners. Revert accidental commit.Maxime Chevalier-Boisvert
2021-10-25Test PRMaxime Chevalier-Boisvert
2021-10-25Add code owners for YJIT sourcesMaxime Chevalier-Boisvert
Code owners are automatically tagged as reviewers on pull requests
2021-10-25[Feature #18239] Implement VWA for stringsPeter Zhu
This commit adds support for embedded strings with variable capacity and uses Variable Width Allocation to allocate strings. Notes: Merged: https://github.com/ruby/ruby/pull/4933
2021-10-25[Feature #18239] Refactor RVARGC alloc functionsPeter Zhu
The allocation functions no longer assume that one RVALUE needs to be allocated. Notes: Merged: https://github.com/ruby/ruby/pull/4933
2021-10-25[Feature #18239] Add struct for embedded stringsPeter Zhu
Notes: Merged: https://github.com/ruby/ruby/pull/4933
2021-10-26ast.c: Use kept script_lines data instead of re-opening the source file (#5019)Yusuke Endoh
ast.c: Use kept script_lines data instead of re-open the source file Notes: Merged-By: mame <mame@ruby-lang.org>
2021-10-26* 2021-10-26 [ci skip]git
2021-10-26[rubygems/rubygems] Fix Bundler::Digest#sha1 on big-endian systemsJean Boussier
As noticed by @nobu https://github.com/rubygems/rubygems/pull/4989#discussion_r735674633 From wikipedia: https://en.wikipedia.org/wiki/SHA-1#SHA-1_pseudocode > append ml, the original message length in bits, as a 64-bit big-endian integer. `Q` is native endian, so little-endian on most modern hardware. The original code from RubyDigest reverses the bytes: https://github.com/Solistra/ruby-digest/blob/d15f906caf09171f897efc74645c9e31373d7fd1/lib/ruby_digest.rb#L521 But that makes the code non-portable, the correct way is to directly ask for a big-endian representation. https://github.com/rubygems/rubygems/commit/ba2be01ea4
2021-10-25Strip out YJIT at build time when unsupported or disabled (#5003)Alan Wu
In an effort to minimize build issues on non x64 platforms, we can decide at build time to not build the bulk of YJIT. This should fix obscure build errors like this one on riscv64: yjit_asm.c:137:(.text+0x3fa): relocation truncated to fit: R_RISCV_PCREL_HI20 against `alloc_exec_mem' We also don't need to bulid YJIT on `--disable-jit-support` builds. One wrinkle to this is that the YJIT Ruby module will not be defined when YJIT is stripped from the build. I think that's a fair change as it's only meant to be used for YJIT development. Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2021-10-25YJIT: Implement duphash (#5009)Ian C. Anderson
`duphash` showed up in the top-20 most frequent exit ops for @jhawthorn's benchmark that renders github.com/about The implementation was almost exactly the same as `duparray` Co-authored-by: John Hawthorn <john@hawthorn.email> Co-authored-by: John Hawthorn <john@hawthorn.email> Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2021-10-25test/ruby/test_jit.rb: Add a test for checkmatch insnYusuke Endoh
2021-10-25test/ruby/test_jit.rb: Print a hint at exit of the original processYusuke Endoh
Otherwise, the hint is printed whenever fork is called. http://rubyci.s3.amazonaws.com/debian9/ruby-master/log/20211025T093004Z.log.html.gz ``` [20244/21156] TestThread#test_fork_while_lockedyou may want to add tests for following insns, when you have a chance: checkmatch you may want to add tests for following insns, when you have a chance: checkmatch you may want to add tests for following insns, when you have a chance: checkmatch = 0.19 s ```
2021-10-25[rubygems/rubygems] Avoid loading the `digest` gem unnecessarilyDavid Rodriguez
OpenSSL includes what we need. https://github.com/rubygems/rubygems/commit/955f3b72ca
2021-10-25[rubygems/rubygems] Remove comment that seems no longer accurateDavid Rodriguez
We require things inline or autoload them for efficiency and to avoid as much as possible conflicting with user's choice of gems. But I removed the require and observed no deadlocks when activating gems. https://github.com/rubygems/rubygems/commit/7d6333e842
2021-10-25Unify issue template and ISSUES.md documentDavid Rodriguez
Some crucial information to ease maintainers work, like the advice of upgrading rubygems and bundler, was one step away from the issue template, making it easier for some users to miss. Now all relevant information is written directly in the bug report template.
2021-10-25[rubygems/rubygems] Show proper error when previous installation of gem ↵David Rodriguez
can't be deleted Instead of showing the bug report template with an error at a random place. https://github.com/rubygems/rubygems/commit/882ad3ab57
2021-10-25[rubygems/rubygems] Show a proper error if gem path is not writableDavid Rodriguez
Instead of showing the bug report place with an error at a randome place. https://github.com/rubygems/rubygems/commit/241854ce73
2021-10-25[rubygems/rubygems] Catch up with recent error message modificationDavid Rodriguez
https://github.com/rubygems/rubygems/commit/ae374c1f31
2021-10-25[rubygems/rubygems] Improve readability by splitting updating the cache and ↵David Rodriguez
searching it https://github.com/rubygems/rubygems/commit/d0df25bb0f
2021-10-25[rubygems/rubygems] Manage global gem cache directlyDavid Rodriguez
Previously, it was maintained in sync with the standard cache. That was less efficient, and it caused some error messages to point to non existent files. https://github.com/rubygems/rubygems/commit/931f8cb8a9
2021-10-25[rubygems/rubygems] Cached gem path resolution should consider default gemsDavid Rodriguez
https://github.com/rubygems/rubygems/commit/83b2b845b3
2021-10-25[rubygems/rubygems] Simplify gem downloading inside bundlerDavid Rodriguez
We can skip most stuff in `Gem::RemoteFetcher#download`, and use `Gem::RemoteFetcher#update_cache_path` directly. This has the benefit of allowing us to remove some workarounds to support several rubygems versions, but also allows us to pass the target folder where the gem should be downloaded directly and skip the logic inside `Gem::RemoteFetcher#download` to infer the cache path. This will be useful later to fix some issues with the `global_gem_cache` feature flag. https://github.com/rubygems/rubygems/commit/8fe74a77e4
2021-10-25[rubygems/rubygems] Remove unused `let`David Rodriguez
https://github.com/rubygems/rubygems/commit/7e1316e454
2021-10-25[rubygems/rubygems] Raise original exceptionDavid Rodriguez
https://github.com/rubygems/rubygems/commit/3c93b9fd21
2021-10-25[rubygems/rubygems] Add missing requiresDavid Rodriguez
These methods rescue a constant defined by `rubygems/remote_fetcher`, so they should technically require it. The require is provided by `gem_remote_fetcher` anyways but I was running a unit spec that stubs that method, so I was getting an undefined constant error hiding another error. https://github.com/rubygems/rubygems/commit/8bedae4034
2021-10-25[rubygems/rubygems] Use `Gem::Specification#file_name` consistentlyDavid Rodriguez
https://github.com/rubygems/rubygems/commit/13b933f49a
2021-10-25[rubygems/rubygems] Extract a `default_cache_path` helperDavid Rodriguez
https://github.com/rubygems/rubygems/commit/8319305d58
2021-10-25[rubygems/rubygems] Small refactorDavid Rodriguez
Extract final cache path to a variable and pass that to `download_gem`. It actually fits better the parameters documentation since it's the final directory where the downloaded gem will be placed. https://github.com/rubygems/rubygems/commit/1429db6a04
2021-10-25process.c: Add Process._fork (#5017)Yusuke Endoh
* process.c: Add Process._fork This API is supposed for application monitoring libraries to hook fork event. [Feature #17795] Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org> Notes: Merged-By: mame <mame@ruby-lang.org>