aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* [ruby/prism] Fix LocalVariableTargetNode depth in patternsTSUYUSATO Kitsune2023-11-233-32/+139
| | | | | | Fix https://github.com/ruby/prism/pull/1821 https://github.com/ruby/prism/commit/7d023a26b4
* Add tests for compaction during evacuation of ivarsPeter Zhu2023-11-231-0/+79
| | | | | | Extracted from PR #8932. Co-Authored-By: Jean Boussier <byroot@ruby-lang.org>
* Fix compacting during evacuation of generic ivarsPeter Zhu2023-11-231-2/+20
| | | | | | | When evacuating generic instance variables, the instance variables exist in both the array and the ST table. We need to ensure it has switched to the ST table before performing any operations that can trigger GC compaction.
* vm_setivar_slowpath: only optimize T_OBJECTJean Boussier2023-11-231-36/+8
| | | | | | | | | | | | | | | | We've seen occasional CI failures on i686 in this codepath: ``` [BUG] vm_setivar_slowpath: didn't find ivar @verify_depth in shape ``` Generic ivars are very complex to get right, but also quite rare. I don't see a good reason to take the risk to give them an optimized path here, when the much more common T_CLASS/T_MODULE don't have one. Having an optimization here means duplicating the fairly brittle logic, which is a recipe for bugs, and I don't think it's worth it in such case.
* windows-arm64 support (#8995)Pierrick Bouvier2023-11-235-6/+91
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * [win32] fix compilation for windows-arm64 Credits to MSYS2 Ruby package using this patch. * [win32] nm use full options Fix compilation error when using MSYS2 environment. Credits to MSYS2 Ruby package using this patch. * [win32] detect llvm-windres (used for windows-arm64) When adding preprocessor option for llvm-windres (using clang as parameter), it fails. Thus, do not add this. It's needed to be able to compile windows-arm64 version, because MSYS2 toolchain is LLVM based (instead of GCC/binutils). * [win32] pioinfo detection for windows-arm64 This fixes "unexpected ucrtbase.dll" for native windows-arm64 ruby binary. It does not solve issue with x64 version emulated on this platform. Value of pioinfo pointer can be found in ucrtbase.dll at latest adrp/add sequence before return of _isatty function. This works for both release and debug ucrt. Due to the nature of aarch64 ISA (vs x86 or x64), it's needed to disassemble instructions to retrieve offset value, which is a bit more complicated than matching specific string patterns. Details about adrp/add usage can be found in this blog post: https://devblogs.microsoft.com/oldnewthing/20220809-00/?p=106955 For instruction decoding, the Arm documentation was used as a reference.
* [ruby/irb] Hint debugger command in irb:rdbg sessionStan Lo2023-11-232-0/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | (https://github.com/ruby/irb/pull/768) When user enters irb:rdbg session, they don't get the same hint that the `debug` gem provides, like ``` (rdbg) n # next command ``` This means that users may accidentally execute commands when they want to retrieve the value of a variable. So this commit adds a Reline output modifier to add a simiar hint: ``` irb:rdbg(main):002> n # debug command ``` It is not exactly the same as `debug`'s because in this case the importance is to help users distinguish between value evaluation and debugger command execution. https://github.com/ruby/irb/commit/fdf24de851
* [ruby/irb] Fix failure of more command with -R optionhogelog2023-11-231-1/+1
| | | | | | (https://github.com/ruby/irb/pull/781) https://github.com/ruby/irb/commit/7d6849e44e
* YJIT: Avoid a register spill on arm64 (#9014)Takashi Kokubun2023-11-222-1/+8
|
* Implement TracePoint on VWAPeter Zhu2023-11-221-8/+6
|
* [ruby/irb] Require prism >= 0.18.0 (MatchWriteNode#targets andtomoya ishida2023-11-222-19/+31
| | | | | | | CaseMatchNode) (https://github.com/ruby/irb/pull/778) https://github.com/ruby/irb/commit/943c14b12e
* YJIT: add an extra btest for shape too complex (#9013)Maxime Chevalier-Boisvert2023-11-221-0/+27
| | | | | Following Jean Boussier's comment that some shape bugs were not caught by our tests, I'm trying to improve our test coverage a tiny bit.
* [wasm] Upload install directory as artifact to GitHub ActionsYuta Saito2023-11-231-0/+9
|
* [wasm] Build baseruby from the same revision for cross-compilingYuta Saito2023-11-231-0/+10
| | | | | > Note that on cross compiling BASERUBY should be the same version of the building ruby. > https://github.com/ruby/ruby/wiki/Developer-How-To#prerequisite
* [wasm] Update binaryen to version 113Yuta Saito2023-11-231-1/+1
|
* [wasm] Update wasmtime to version 15Yuta Saito2023-11-231-1/+1
|
* [wasm] Update wasi-sdk to version 20Yuta Saito2023-11-231-1/+1
|
* Embed ThreadGroup objectJean Boussier2023-11-221-8/+6
| | | | | These are rare but embedding them is trivial and make them fit in a 40B slot.
* [wasm] Use xmalloc/xfree for jmpbuf allocation to trigger GC properlyYuta Saito2023-11-231-2/+2
| | | | | | | `rb_vm_tag_jmpbuf_{init,deinit}` are safe to raise exception since the given tag is not yet pushed to `ec->tag` or already popped from it at the time, so `ec->tag` is always valid and it's safe to raise exception when xmalloc fails.
* Fix off-by-one with RubyVM::Shape.exhaust_shapesAlan Wu2023-11-221-1/+1
| | | | | Previously, the method left one shape available (MAX_SHAPE_ID) when called without arguments.
* [wasm] Avoid malloc during longjmpYuta Saito2023-11-231-2/+4
| | | | | | | | | `longjmp` can be called to raise `NoMemoryError` or to trigger GC when `malloc` fails to allocate memory in `ruby_xmalloc` family. In such case, `malloc` call in `longjmp` will fail again, and Asyncify unwinding operation corrupts the memory space by using the failed pointer as Asyncify buffer. This commit uses statically allocated buffer to avoid such situation.
* [wasm] Fix Asyncify loop exit condition for normal return (#9007)Yuta Saito2023-11-221-0/+7
| | | | | | | | | | | | | | | | [wasm] Fix Asyncify loop exit condition for normal return Stop calling `asyncify_stop_unwind` when the main function returns without any unwinding. In the era when Asyncify buffers were allocated on the stack, the `top` and `end` fields were remained in the stack space even after the main function returned, so buffer-overflow check in the `asyncify_stop_unwind` function passed. But now, the `top` and `end` fields are part of the jump buffer allocated on the heap and they are deallocated with `free` when the corresponding VM tag is popped. So, the buffer-overflow check in the `asyncify_stop_unwind` function failed when the main fuction returned without any unwinding, and we have to break the asyncify loop before calling `asyncify_stop_unwind`. Related commit: https://github.com/ruby/ruby.wasm/commit/bc46b12b127e4b6625a100f373504ed5ea45ae66
* .travis.yml: Drop s390x temporarily.Jun Aruga2023-11-221-2/+2
| | | | | | | The builds are not starting. You can check the Travis status on the ticket, <https://bugs.ruby-lang.org/issues/20013>.
* Get rid of flatten_memo_data_typeJean Boussier2023-11-221-23/+12
| | | | | We can use an hidden Hash instead, it's simpler, triggers write barriers, handle compaction, etc.
* [ruby/prism] Check void values in singleton class (`class <<`)TSUYUSATO Kitsune2023-11-222-1/+4
| | | | | | Follow up the ruby/ruby#8917 change. https://github.com/ruby/prism/commit/f6bac4d3bf
* [ruby/prism] Add new doc to gemspecKevin Newton2023-11-221-0/+1
| | | | https://github.com/ruby/prism/commit/99dfca6c1d
* [ruby/prism] Join range checks into the main parse_expression switchKevin Newton2023-11-221-9/+10
| | | | https://github.com/ruby/prism/commit/ed4523464b
* [ruby/prism] Fix associativity of binary range with begin-less rangeTSUYUSATO Kitsune2023-11-224-17/+59
| | | | | | Fix https://github.com/ruby/prism/pull/1828 https://github.com/ruby/prism/commit/22c0640e48
* [ruby/prism] Combine expression checks into a single switchKevin Newton2023-11-221-16/+19
| | | | https://github.com/ruby/prism/commit/825d5d7bd4
* [ruby/prism] Remove TODOTSUYUSATO Kitsune2023-11-221-4/+1
| | | | https://github.com/ruby/prism/commit/d6d718487d
* [ruby/prism] Reject statements at non-statement posisionsTSUYUSATO Kitsune2023-11-224-0/+85
| | | | | | Fix https://github.com/ruby/prism/pull/1547 https://github.com/ruby/prism/commit/cdb643aeab
* [ruby/prism] Add and use pm_parser_local_depth_constant_idTSUYUSATO Kitsune2023-11-222-67/+59
| | | | | | https://github.com/ruby/prism/pull/1877#discussion_r1398974248 https://github.com/ruby/prism/commit/0f545fe636
* [ruby/prism] Allow `&` forwarding in a method having `...` parameterTSUYUSATO Kitsune2023-11-222-0/+55
| | | | | | Fix https://github.com/ruby/prism/pull/1839 https://github.com/ruby/prism/commit/5784ab749f
* Implement dir on VWAPeter Zhu2023-11-221-10/+7
|
* [prism] Add cp949 targets to common.mkKevin Newton2023-11-221-0/+5
|
* [ruby/prism] Add `CP949` encodingheyogrady2023-11-225-0/+61
| | | | https://github.com/ruby/prism/commit/9e78dfdf69
* Embed File::Stat objectsJean Boussier2023-11-221-40/+35
| | | | They are very short lived and fit in a 160B slot.
* Implement Write Barriers on TracePointPeter Zhu2023-11-221-4/+7
|
* .travis.yml: Allow failures for s390x.Jun Aruga2023-11-221-1/+2
| | | | https://app.travis-ci.com/github/ruby/ruby/builds/267410310
* [ruby/prism] Add KOI8-U encodingPatrick O'Grady2023-11-224-2/+40
| | | | | | | | | | | | | | | | (https://github.com/ruby/prism/pull/1906) * Add test for KOI8-U * Rename koi8 char_width function - Rename function for use with any KOI8-based encoding * Add KOI8-U encoding * Add encoding to encoding.md https://github.com/ruby/prism/commit/6cad4552f7
* [rubygems/rubygems] Fix universal lockfiles regressionDavid Rodriguez2023-11-224-4/+64
| | | | | | | | | | | | If a platform specific variant would not match the current Ruby, we would still be considering it compatible with the initial resolution and adding its platform to the lockfile, but we would later fail to materialize it for installation due to not really being compatible. Fix is to only add platforms for variants that are also compatible with current Ruby and RubyGems versions. https://github.com/rubygems/rubygems/commit/75d1290843
* [ruby/prism] Move CallNode#name field between receiver and argumentsBenoit Daloze2023-11-22578-5531/+5531
| | | | | | | | * The same order as in source code. * CallOrWriteNode, CallOperatorWriteNode, CallAndWriteNode already have the correct order so it was also inconsistent with them. https://github.com/ruby/prism/commit/4434e4bc22
* [ruby/irb] Rescue Exception, ignore warning in completiontomoya ishida2023-11-221-3/+9
| | | | | | | doc_namespace (https://github.com/ruby/irb/pull/777) https://github.com/ruby/irb/commit/c2f671611a
* Embed exec_arg objectsJean Boussier2023-11-221-2/+4
| | | | | They are very ephemeral, so avoiding the malloc churn is desirable.
* Remove unneccesary defines in enumeratorMatt Valentine-House2023-11-221-6/+2
|
* Remove unneccesary memsize functions in enumeratorMatt Valentine-House2023-11-221-14/+2
|
* VWA Embed the rest of the data objects in EnumeratorMatt Valentine-House2023-11-221-3/+3
|
* [ruby/resolv] IPv6: update to_s method to be RFC5952 compliantJohn Bond2023-11-222-6/+3
| | | | | | | | | | | | | | | | | | | (https://github.com/ruby/resolv/pull/25) * IPv6: update to_s method to be RFC5952 compliant I noticed that the resolv library does not honour RFC 5952 Section 4.2.2. in relation to textural representation of ipv6 addresses: The symbol "::" MUST NOT be used to shorten just one 16-bit 0 field. For example, the representation 2001:db8:0:1:1:1:1:1 is correct, but 2001:db8::1:1:1:1:1 is not correct. Fixes https://github.com/ruby/resolv/pull/24 https://github.com/ruby/resolv/commit/5efcd6ed70 Co-authored-by: Sorah Fukumori <sora134@gmail.com>
* objspace_dump.c: dump call cache ids with dump_append_idJean Boussier2023-11-222-6/+7
| | | | | | Not all `ID` have an associated string. Fixes a SEGFAULT in ObjectSpace.dump_all spec.
* Speedup test_shape.rbJean Boussier2023-11-222-114/+32
| | | | | | | | | | | | | | | | Many tests start by exhausting all shapes, which is a slow process. By exposing a method to directly move the bump allocator forward we cut test runtime in half. Before: ``` Finished tests in 1.544756s ``` After: ``` Finished tests in 0.759733s, ```
* Update bundled gems list as of 2023-11-21git2023-11-222-2/+2
|