Activity
From 08/24/2022 to 08/30/2022
08/30/2022
-
09:41 PM Bug #18985 (Assigned): SEGV with YJIT on aarch64-linux
- It's AWS `c6g` instance with Ubuntu 20.04.5.
```
Linux rubyci-ubuntu2004-arm 5.13.0-1022-aws #24~20.04.1-Ubuntu SMP Thu Apr 7 22:14:11 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
```
And I build ruby with `ruby-build`. It's simply... -
03:56 PM Bug #18985: SEGV with YJIT on aarch64-linux
- Hello @hsbt.
Can you provide more details as to which version of Linux and which CPU you are running? Are you running this on a Raspberry Pi, or is this on an AWS Graviton instance?
It might also be useful for us if you can try an ... -
11:30 AM Bug #18985 (Closed): SEGV with YJIT on aarch64-linux
- When we use `-e` option with YJIT, It's always crush on aarch64-linux.
```
$ ruby --jit -e "puts :foo"
/home/chkbuild/.rbenv/versions/3.2.0-dev/lib/ruby/3.2.0+2/aarch64-linux/rbconfig.rb:305: [BUG] Segmentation fault at 0x00000e80f9... - 09:22 PM Revision f4cdfff0 (git): * 2022-08-31 [ci skip]
- 09:21 PM Revision 4a4daf00 (git): Update .cirrus.yml
-
09:21 PM Revision 5dbc725f (git): Skip linking rb_yjit_icache_invalidate on cargo test
- Co-authored-by: Kevin Newton <kddnewton@gmail.com>
-
09:21 PM Revision 918a6585 (git): Run cargo test on Cirrus
-
09:21 PM Revision 497b5ee1 (git): Normalize the YJIT Cirrus workflow a little
-
07:51 PM Feature #18986 (Open): Raises Exception for Range#last(n) with Float::INFINITY
- When a (Numeric) argument is given to `Range#last(n)` for a Range with `Float::INFINITY`, it runs into an infinite loop (see a small code snippet below).
There is no use case for the feature as far as I can think of, and it is hard to d... -
02:16 PM Feature #18980: `it` as a default block parameter
- > One thing that this "design space analysis" keeps ignoring, ...
It doesn't (though I by no means consider it exhaustive or definitive, it is just "what I am thinking about when considering options"):
> ...
It doesn't mention `@` ... -
01:38 PM Feature #18980: `it` as a default block parameter
- zverok (Victor Shepelev) wrote in #note-26:
> My "design space analysis" was sourced by the same idea. I can say that I would NOT choose `it` (or any other name looking "regularly"), unless it would be a keyword (like `self`), having ... -
11:27 AM Feature #18980: `it` as a default block parameter
- > if you were able to design Ruby from the ground up, would you still use a syntax that you think is a name compromise and looks weird for newcomers?
My "design space analysis" was sourced by the same idea. I can say that I would NOT ... -
08:25 AM Feature #18980: `it` as a default block parameter
- > Say, I considered `yield_self` so wrong naming choice I spent the good part of that year fighting for its renaming, but at the same time I started to use it (and it DID make code better, as my colleagues agreed, you just needed to get ...
-
07:07 AM Feature #18980: `it` as a default block parameter
- > It's interesting that "Numbered parameters (_1, _2, ...) look like unused local variables" doesn't seem to resonate with you.
It did initially, but let's say I got over it. There were several factors in play:
1. I am very concern... -
10:45 AM Feature #18784: `FileUtils.rm_f` and `FileUtils.rm_rf` should not mask exceptions
- I just removed the line pointed out by @Eregon, so I guess all the workarounds added around the `FileUtils.rm_rf` in RubyGems teardown method can now be removed too!
-
08:14 AM Feature #18784: `FileUtils.rm_f` and `FileUtils.rm_rf` should not mask exceptions
- @mame I agree with your analysis, but I have to say from experience that realworld bugs hidden by this behavior are pretty hard to fix too. The warning in verbose mode sounds great, but perhaps we could also mention this in documentation...
-
07:37 AM Feature #18784: `FileUtils.rm_f` and `FileUtils.rm_rf` should not mask exceptions
- Here is a patch. Revert fa65d676ece93a1380b9e6564efa4b4566c7a44b and apply:
```diff
diff --git a/lib/fileutils.rb b/lib/fileutils.rb
index 4ba7d18..178db6e 100644
--- a/lib/fileutils.rb
+++ b/lib/fileutils.rb
@@ -1422,6 +1422,7 @... -
09:46 AM Revision b98653f7 (git): [rubygems/rubygems] Let `Dir.tmpdir` use the standard path
- We're not fully in control of this folder, even when running our own
tests, because MJIT creates some temp folders there when invoking GC.
This bite tests running in ruby-core when making the behavior of
`FileUtils.rm_rf` more strict, b... -
08:36 AM Feature #18982: Add an `exception: false` argument for Queue#push, Queue#pop, SizedQueue#push and SizedQueue#pop
- I don't think people want to exit from a `while item = queue.pop` loop because the queue would block. `for (;;) { if (errno != EAGAIN) break; ... }` is a C idiom (people often break from a loop on error, _except_ EAGAIN).
-
12:42 AM Feature #18982: Add an `exception: false` argument for Queue#push, Queue#pop, SizedQueue#push and SizedQueue#pop
- shyouhei (Shyouhei Urabe) wrote in #note-4:
> +1 for avoiding exceptions but `nil` can be problematic? Because a closed queue would also return `nil` for `pop`. You cannot distinguish if a queue is closed or would just block.
We co... -
12:15 AM Feature #18982: Add an `exception: false` argument for Queue#push, Queue#pop, SizedQueue#push and SizedQueue#pop
- > but nil can be problematic?
This was discussed in #18774:
- `#pop` on closed queue already returns `nil` with no exception. `Queue.new.tap(&:close).pop # => nil`
- `nil` make sense because you can use it in a loop such as `... -
12:08 AM Feature #18982: Add an `exception: false` argument for Queue#push, Queue#pop, SizedQueue#push and SizedQueue#pop
- +1 for avoiding exceptions but `nil` can be problematic? Because a closed queue would also return `nil` for `pop`. You cannot distinguish if a queue is closed or would just block.
-
02:23 AM Revision d6acaa4d (git): Undefine `ruby_debug_log` macro before the function definition
- Fix up 27173e3735ff.
-
01:13 AM Bug #18970: CRuby adds an invalid header to bin/bundle (and others) which makes it unusable in Bash on Windows
- @nobu
Sorry the above are what I thought would work best with the ruby-loco builds. All three builds (mingw, mswin, & ucrt) are now done that way. Interesting thing that I found is that MSYS2's `which` command considers a file to ex... -
01:05 AM Revision ddca3482 (git): Check only symbol flag bits (#6301)
- * Check only symbol flag bits
* Check all 4 bits
08/29/2022
-
11:37 PM Feature #18980: `it` as a default block parameter
- > Unused local variables are more like `_[a-z]\w+`, the number makes the variable "anonymous" so it can't be an unused local variable
> ...
It's interesting that "Numbered parameters (`_1`, `_2`, ...) look like unused local variables" d... -
11:53 AM Feature #18980: `it` as a default block parameter
- > I forgot, is _ problematic in practice?
`_` is very widespread name to "I don't need that". TBH, till 5 min ago I thought it is processed specially in the case of parameter repetition:
```ruby
[[1, 2, 3], [4, 5, 6]].map { |i, _,... -
11:03 AM Feature #18980: `it` as a default block parameter
- The logical sigil for a single arguments would be `_` of course (given we have `_1`, `_2`, etc).
I forgot, is `_` problematic in practice?
The usage of it in irb/pry should not be an issue given the variable is explicitly declared th... -
08:05 AM Feature #18980: `it` as a default block parameter
- My 5c: I came to (almost) peace with `_1`, and we use it extensively in the codebase, and find it quite convenient.
Choosing the designation for it is a hard choice, and after years of consideration, I believe that the current solutio... -
04:55 PM Revision 737402e9 (git): Skip a couple of chroot spec faillures
- I don't come up with a way to fix it right away. We'd need some
experiments on a pull request. -
04:18 PM Revision 1315c5aa (git): Update to ruby/spec@b8a8240
-
04:18 PM Revision b5358a98 (git): Update to ruby/mspec@37151a0
-
04:09 PM Revision d694f320 (git): Fixed width immediates (https://github.com/Shopify/ruby/pull/437)
- There are a lot of times when encoding AArch64 instructions that we
need to represent an integer value with a custom fixed width. For
example, the offset for a B instruction is 26 bits, so we store an
i32 on the instruction struct and th... -
04:09 PM Revision 46007b88 (git): A64: Only clear icache when writing out new code (https://github.com/Shopify/ruby/pull/442)
- Previously we cleared the cache for all the code in the system when we
flip memory protection, which was prohibitively expensive since the
operation is not constant time. Instead, only clear the cache for the
memory region of newly writt... -
04:09 PM Revision 29e0713a (git): TBZ and TBNZ for AArch64 (https://github.com/Shopify/ruby/pull/434)
-
04:09 PM Revision c2e92538 (git): Stop saying it's temp checks (https://github.com/Shopify/ruby/pull/441)
-
04:09 PM Revision 44c6bcff (git): LDRH and STRH for AArch64 (https://github.com/Shopify/ruby/pull/438)
-
04:09 PM Revision 929a6a75 (git): Remove ir_ssa.rs as we aren't using it and it's now outdated
-
04:09 PM Revision 4b7d3884 (git): Avoid randomizing the order of test-all on arm64 (https://github.com/Shopify/ruby/pull/440)
- for now
-
04:09 PM Revision 232e43fd (git): Respect RUBY_TESTOPTS on test-all (https://github.com/Shopify/ruby/pull/435)
- * Respect RUBY_TESTOPTS on test-all
* Increase the Cirrus timeout
* Increase the CSV test timeout - 04:09 PM Revision 5ef048e5 (git): Update yjit.md
- Add VMIL paper, update supported CPUs.
-
04:09 PM Revision def3ade8 (git): Add --yjit-dump-disasm to dump every compiled code (https://github.com/Shopify/ruby/pull/430)
- * Add --yjit-dump-disasm to dump every compiled code
* Just use get_option
* Carve out disasm_from_addr
* Avoid push_str with format!
* Share the logic through asm.compile
* This seems to negatively impact the compilation speed -
04:09 PM Revision 54c7bc67 (git): Various AArch64 optimizations (https://github.com/Shopify/ruby/pull/433)
- * When we're storing an immediate 0 value at a memory address, we
can use STUR XZR, Xd instead of loading 0 into a register and
then storing that register.
* When we're moving 0 into an argument register, we can use
MOV Xd, XZR ins... -
04:09 PM Revision d433eb95 (git): Run tests with --yjit-call-threshold=1 on arm64 (https://github.com/Shopify/ruby/pull/426)
-
04:09 PM Revision 93c5a5f0 (git): Fix and re-enable String to_s, << and unary plus (https://github.com/Shopify/ruby/pull/429)
-
04:09 PM Revision 29bda0ff (git): Use shorter syntax for the same pattern (https://github.com/Shopify/ruby/pull/425)
-
04:09 PM Revision 93288524 (git): Better variable name, no must_use on ccall (https://github.com/Shopify/ruby/pull/424)
-
04:09 PM Revision d5fe9e1d (git): Run test-all with RUBY_YJIT_ENABLE=1 on CI (https://github.com/Shopify/ruby/pull/418)
-
04:09 PM Revision f883aabc (git): Instruction enum (https://github.com/Shopify/ruby/pull/423)
- * Remove references to explicit instruction parts
Previously we would reference individual instruction fields
manually. We can't do that with instructions that are enums, so
this commit removes those references. As a side effect, we can... -
04:09 PM Revision ea9ee317 (git): A64 Linux reports aarach64 in RUBY_PLATFORM
- This should fix a version string test
-
04:09 PM Revision 1c67e90b (git): More work toward instruction enum (https://github.com/Shopify/ruby/pull/421)
- * Operand iterators
There are a couple of times when we're dealing with instructions
that we need to iterate through their operands. At the moment this
is relatively easy because there's an opnds field and we can work
with it directly. ... -
04:09 PM Revision 34245957 (git): Use VALUE for callinfos that are on the heap (https://github.com/Shopify/ruby/pull/420)
- Yet another case of `jit_mov_gc_ptr()` being yanked out during the
transition to the new backend, causing a crash after object movement.
The intresting wrinkle with this one is that not all callinfos are GC'ed
objects, so the old code ha... -
04:09 PM Revision 5114ddce (git): Avoid marking op_type on gen_defined (https://github.com/Shopify/ruby/pull/419)
-
04:09 PM Revision a78bbef1 (git): Use VALUE for block_iseq (https://github.com/Shopify/ruby/pull/417)
- Co-authored-by: Alan Wu <alansi.xingwu@shopify.com>
-
04:09 PM Revision e0e63b1a (git): Fix a bus error on regenerate_branch (https://github.com/Shopify/ruby/pull/408)
- * Fix a bus error on regenerate_branch
* Fix pad_size -
04:09 PM Revision b00606eb (git): Even more prep for instruction enum (https://github.com/Shopify/ruby/pull/413)
- * Mutate in place for register allocation
Currently we allocate a new instruction every time when we're
doing register allocation by first splitting up the instruction
into its component parts, mapping the operands and the output, and
t... -
04:09 PM Revision c70d1471 (git): Only check lowest bit for _Bool type (https://github.com/Shopify/ruby/pull/412)
- * Only check lowest bit for _Bool type
The `test AL, AL` got lost during porting and we were
generating `test RAX, RAX` instead. The upper bits of a `_Bool` return
type is unspecified and we were failing
`TestClass#test_singleton_class_... -
03:47 PM Revision d57a9f61 (git): Build output operands explicitly (https://github.com/Shopify/ruby/pull/411)
- When we're pushing instructions onto the assembler, we previously
would iterate through the instruction's operands and then assign
the output operand to it through the push_insn function. This is
easy when all instructions have a vector ... -
03:47 PM Revision b735eb5e (git): Instruction builders for backend IR (https://github.com/Shopify/ruby/pull/410)
- Currently we use macros to define the shape of each of the
instruction building methods. This works while all of the
instructions share the same fields, but is really hard to get
working when they're an enum with different shapes. This i... - 03:47 PM Revision 1cf9f56c (git): Fix issue with expandarray, add missing jl, enable tests (https://github.com/Shopify/ruby/pull/409)
-
03:47 PM Revision c38e9111 (git): Allow aarch64 to build YJIT
- 03:47 PM Revision 95dce1cc (git): Temporarily disable rb_str_concat, add CI tests (https://github.com/Shopify/ruby/pull/407)
- Make sure we can load the test-all runner and run test_yjit.rb
- 03:47 PM Revision 09c12111 (git): Port jit_rb_str_concat to new backend, re-enable cfunc lookup (https://github.com/Shopify/ruby/pull/402)
-
03:47 PM Revision 5a76a15a (git): YJIT: Implement concatarray in yjit (https://github.com/Shopify/ruby/pull/405)
- * Create code generation func
* Make rb_vm_concat_array available to use in Rust
* Map opcode to code gen func
* Implement code gen for concatarray
* Add test for concatarray
* Use new asm backend
* Add comment to C func wrapper -
03:47 PM Revision 2f9df466 (git): Use bindgen for old manual extern declarations (https://github.com/Shopify/ruby/pull/404)
- We have a large extern block in cruby.rs leftover from the port. We can
use bindgen for it now and reserve the manual declaration for just a
handful of vm_insnhelper.c functions.
Fixup a few minor discrepencies bindgen found between the... -
03:47 PM Revision ff3f1d15 (git): Optimize bitmask immediates (https://github.com/Shopify/ruby/pull/403)
-
03:47 PM Revision be730cda (git): AArch64 Ruby immediates (https://github.com/Shopify/ruby/pull/400)
-
03:47 PM Revision c022a605 (git): Fix bugs in gen_opt_getinlinecache
-
03:47 PM Revision cb15886e (git): Port opt_getinlinecache to the new backend (https://github.com/Shopify/ruby/pull/399)
-
03:47 PM Revision dca5e74a (git): Fix test_rubyoptions.rb for arm64 (https://github.com/Shopify/ruby/pull/396)
-
03:47 PM Revision 471de2ab (git): Enable skipdata on Capstone to allow embedded data without early stop to disasm (https://github.com/Shopify/ruby/pull/398)
-
03:47 PM Revision 7f4ab24f (git): Op::Xor for backend IR (https://github.com/Shopify/ruby/pull/397)
-
03:47 PM Revision 4d811d7a (git): Fix code invalidation while OOM and OOM simulation (https://github.com/Shopify/ruby/pull/395)
- `YJIT.simulate_oom!` used to leave one byte of space in the code block,
so our test didn't expose a problem with asserting that the write
position is in bounds in `CodeBlock::set_pos`. We do the following when
patching code:
1. save cu... -
03:47 PM Revision ee1697ee (git): Port opt_aref and opt_aset to the new backend IR (https://github.com/Shopify/ruby/pull/387)
- * Port opt_aref and opt_aset to the new backend IR
* Recompute memory operands - 03:47 PM Revision b54643d1 (git): Handle out of memory tests (https://github.com/Shopify/ruby/pull/393)
-
03:47 PM Revision df84832c (git): Port getblockparamproxy and getblockparam (https://github.com/Shopify/ruby/pull/394)
-
03:47 PM Revision e5969f85 (git): Port invokesuper to the new backend IR (https://github.com/Shopify/ruby/pull/391)
-
03:47 PM Revision ca2afba4 (git): Port the remaining method types in opt_send_without_block (https://github.com/Shopify/ruby/pull/390)
-
03:47 PM Revision 8c45b8a9 (git): Update asm comments for gen_send_iseq
-
03:47 PM Revision 6b9cec78 (git): Port cfunc lookup, plus simpler cfunc generators. (https://github.com/Shopify/ruby/pull/388)
- This port does *not* create invalidation regions to
ensure minimum invalidatable block sizes, and so it
does not port the to_s generator. - 03:47 PM Revision cad35fb2 (git): Try to run make -j in CI backend tests (https://github.com/Shopify/ruby/pull/386)
-
03:47 PM Revision 1cafb1a7 (git): Prefer asm.store over asm.mov (https://github.com/Shopify/ruby/pull/385)
- * Prefer asm.store over asm.mov
* Reverse a couple of unsure changes
* Revert changes that don't work -
03:47 PM Revision 3f42028e (git): Iterator (https://github.com/Shopify/ruby/pull/372)
- * Iterator
* Use the new iterator for the X86 backend split
* Use iterator for reg alloc, remove forward pass
* Fix up iterator usage on AArch64
* Update yjit/src/backend/ir.rs
Co-authored-by: Maxime Chevalier-Boisvert <maximecheval... -
03:47 PM Revision 49c9f893 (git): Port expandarray to the new backend IR (https://github.com/Shopify/ruby/pull/376)
- * Port expandarray to the new backend IR
* More use of into()
* Break out live ranges
* Refactor the code further
* Reuse registers more -
03:47 PM Revision 668b99b4 (git): Port gen_send_iseq to the new backend IR (https://github.com/Shopify/ruby/pull/381)
- * Port gen_send_iseq to the new backend IR
* Replace occurrences of 8 by SIZEOF_VALUE
Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com>
Co-authored-by: Maxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com> -
03:47 PM Revision 32d9eef5 (git): Enable test_literal.rb and test_ractor.rb on arm
-
03:47 PM Revision cd750659 (git): Fix tests on yjit_backend_ir for AArch64 backend (https://github.com/Shopify/ruby/pull/383)
-
03:47 PM Revision b8846dd2 (git): Load mem displacement when necessary on AArch64 (https://github.com/Shopify/ruby/pull/382)
- * LDR instruction for AArch64
* Split loads in arm64_split when memory address displacements do not fit -
03:47 PM Revision 85d6d76e (git): Enable test_insns.rb on arm
-
03:47 PM Revision a5ea577c (git): Update flags for data processing on ARM (https://github.com/Shopify/ruby/pull/380)
- * Update flags for data processing on ARM
* Update yjit/src/backend/arm64/mod.rs
Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com> -
03:47 PM Revision a3757842 (git): Use new assembler to support global invalidation on A64
- Previously, we patched in an x64 JMP even on A64, which resulted in
invalid machine code. Use the new assembler to generate a jump instead.
Add an assert to make sure patches don't step on each other since it's
less clear cut on A64, wh... -
03:47 PM Revision 726a4519 (git): Port invokebuiltin* insns to the new backend IR (https://github.com/Shopify/ruby/pull/375)
- * Port invokebuiltin* insns to the new backend IR
* Fix the C_ARG_OPNDS check boundary - 03:47 PM Revision 46822ee1 (git): Enable btests now passing on arm (https://github.com/Shopify/ruby/pull/378)
-
03:47 PM Revision 8278d722 (git): Left and right shift for IR (https://github.com/Shopify/ruby/pull/374)
- * Left and right shift for IR
* Update yjit/src/backend/x86_64/mod.rs
Co-authored-by: Alan Wu <XrXr@users.noreply.github.com>
Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com> -
03:47 PM Revision 8fffff53 (git): More concise csel with Into
-
03:47 PM Revision 2429635b (git): Port send to the new backend and test it (https://github.com/Shopify/ruby/pull/373)
-
03:47 PM Revision ffdd09e2 (git): Port opt_eq and opt_neq to the new backend (https://github.com/Shopify/ruby/pull/371)
- * Port opt_eq and opt_neq to the new backend
* Just use into() outside
Co-authored-by: Alan Wu <XrXr@users.noreply.github.com>
* Use C_RET_OPND to share the register
* Revert "Use C_RET_OPND to share the register"
This reverts commi... -
03:47 PM Revision 2b85295d (git): Port objtostring to the new backend (https://github.com/Shopify/ruby/pull/369)
-
03:47 PM Revision e06c86fa (git): Port opt_str_uminus to new backend IR (https://github.com/Shopify/ruby/pull/370)
-
03:47 PM Revision db22a560 (git): Port gen_opt_str_freeze to new backend IR (https://github.com/Shopify/ruby/pull/366)
-
03:47 PM Revision 0a680912 (git): x86 TEST should do a load for mem opnds first (https://github.com/Shopify/ruby/pull/368)
-
03:47 PM Revision 7908eabf (git): Port setivar to the new backend IR (https://github.com/Shopify/ruby/pull/362)
- * Port setivar to the new backend IR
* Add a few more setivar test cases
* Prefer const_ptr
Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com> -
03:47 PM Revision a55a3f8a (git): Port opt_minus, opt_or, and opt_and to the new IR (https://github.com/Shopify/ruby/pull/364)
- * Port opt_minus, opt_or, and opt_and to the new IR
* Fix the Op::Or issue with push_insn
* Prefer asm.store for clarity -
03:47 PM Revision dcb6fc16 (git): Port opt_mod to the new backend IR (https://github.com/Shopify/ruby/pull/363)
-
03:47 PM Revision e2403726 (git): Add Opnd::None error message to x86 backend as well
-
03:47 PM Revision d131b410 (git): Fix to float guard in jit_guard_known_klass to use the correct output operand. (https://github.com/Shopify/ruby/pull/365)
-
03:47 PM Revision 74527a76 (git): Port send-only insns and write tests (https://github.com/Shopify/ruby/pull/360)
- 03:47 PM Revision b024b18f (git): Fix block invalidation with new backend. Enable more btests on x86 (https://github.com/Shopify/ruby/pull/359)
-
03:47 PM Revision d63b3e43 (git): Enable test_thread.rb on arm, now working
-
03:47 PM Revision ddee4d3a (git): Opnd::Value fixes (https://github.com/Shopify/ruby/pull/354)
- * Fix asm.load(VALUE)
- `<VALUE as impl Into<Opnd>>` didn't track that the value is a value
- `Iterator::map` doesn't evaluate the closure you give it until you
call `collect`. Use a for loop instead so we put the gc offsets
into th... -
03:47 PM Revision 4539c213 (git): Port gen_send_cfunc to the new backend (https://github.com/Shopify/ruby/pull/357)
- * Port gen_send_cfunc to the new backend
* Remove an obsoleted test
* Add more cfunc tests
* Use csel_e instead and more into()
Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com>
* Add a missing lea for build_kwa... -
03:47 PM Revision c91a44cb (git): Fix forward_pass usage in arm backend following John's PR
-
03:47 PM Revision 24ddc07d (git): Fix live_ranges idx calculation (https://github.com/Shopify/ruby/pull/353)
- forward_pass adjusts the indexes of our opnds to reflect the new
instructions as they are generated in the forward pass. However, we were
using the old live_ranges array, for which the new indexes are
incorrect.
This caused us to previo... -
03:47 PM Revision fe172aac (git): Convert getinstancevariable to new backend IR (https://github.com/Shopify/ruby/pull/352)
- * Convert getinstancevariable to new backend IR
* Support mem-based mem
* Use more into()
* Add tests for getivar
* Just load obj_opnd to a register
* Apply another into()
* Flip the nil-out condition
* Fix duplicated counts of si... -
03:47 PM Revision a95422a6 (git): Binary OR instruction for the IR (https://github.com/Shopify/ruby/pull/355)
-
03:47 PM Revision 9db2ca72 (git): Add 1 more allocatable reg on arm
-
03:47 PM Revision ca68ccda (git): Fix C call reg alloc bug reported by Noah & Kokubun
-
03:47 PM Revision 08232605 (git): Implement iterators and double-linked list for IR SSA
-
03:47 PM Revision a75a6f7d (git): Remove empty lines
-
03:47 PM Revision dea42385 (git): Port gen_concatstring to new backend IR (https://github.com/Shopify/ruby/pull/350)
- * Port gen_concatstring to new backend IR
* Update yjit/src/codegen.rs
Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com> -
03:47 PM Revision 330c9e98 (git): Port anytostring, intern, and toregexp (https://github.com/Shopify/ruby/pull/348)
- * Port anytostring, intern, and toregexp
* Port getspecial to the new backend (#349)
PR: https://github.com/Shopify/ruby/pull/349 -
03:47 PM Revision 16307adf (git): Port only ATTRSET of opt_send_without_block (https://github.com/Shopify/ruby/pull/351)
-
03:47 PM Revision 45da6974 (git): Push first pass at SSA IR sketch
-
03:47 PM Revision a674b8d8 (git): Port class variable instructions (https://github.com/Shopify/ruby/pull/346)
-
03:47 PM Revision 1446e22a (git): Port setglobal to the new backend (https://github.com/Shopify/ruby/pull/347)
-
03:47 PM Revision 869b0ba6 (git): Minor cleanups (https://github.com/Shopify/ruby/pull/345)
- * Move allocation into Assembler::pos_marker
We wanted to do this to begin with but didn't because we were confused
about the lifetime parameter. It's actually talking about the lifetime
of the references that the closure captures. Sinc... -
03:47 PM Revision 6ab71a85 (git): Port gen_checktype to the new IR assembler backend (https://github.com/Shopify/ruby/pull/343)
-
03:47 PM Revision 4b1ab009 (git): Port the YJIT defined opcode; fix C_ARG_REGS (https://github.com/Shopify/ruby/pull/342)
-
03:47 PM Revision b2d255ad (git): A64: Fix off by one in offset encoding for BL (https://github.com/Shopify/ruby/pull/344)
- * A64: Fix off by one in offset encoding for BL
It's relative to the address of the instruction not the end of it.
* A64: Fix off by one when encoding B
It's relative to the start of the instruction not the end.
* A64: Add some tests... -
03:47 PM Revision 2d9b98f9 (git): Fix a bug in the x86 backend wrt large integer values, enable more tests
-
03:47 PM Revision c9a947e5 (git): Port and test checkkeyword (https://github.com/Shopify/ruby/pull/339)
-
03:47 PM Revision 8617bac9 (git): Fix IncrCounter on ARM
- The order of operands to LDADDAL were flipped and the destination
pointer was dereferenced instead of passed as an address. -
03:47 PM Revision e131b217 (git): Test --yjit-stats in our CI workflows
-
03:47 PM Revision 813df1f2 (git): Add LiveReg IR instruction to fix stats leave exit code (https://github.com/Shopify/ruby/pull/341)
- It allows for reserving a specific register and prevents the register
allocator from clobbering it. Without this
`./miniruby --yjit-stats --yjit-callthreshold=1 -e0` was crashing because
the counter incrementing code was clobbering RAX i... -
03:47 PM Revision 133ad387 (git): Fix CI workflows
-
03:47 PM Revision 13e5b56a (git): Fixes (https://github.com/Shopify/ruby/pull/340)
- * Fix conditional jumps to label
* Bitmask immediates cannot be u64::MAX -
03:47 PM Revision f593b2c6 (git): Fixes for AArch64 (https://github.com/Shopify/ruby/pull/338)
- * Better splitting for Op::Add, Op::Sub, and Op::Cmp
* Split stores if the displacement is too large
* Use a shifted immediate argument
* Split all places where shifted immediates are used
* Add more tests to the cirrus workflow -
03:47 PM Revision 96303342 (git): Enable more btests
-
03:47 PM Revision 4024553d (git): Add ifdef to clear cache
-
03:47 PM Revision 7e22ec74 (git): Clear the icache on arm
-
03:47 PM Revision b1ed4d9b (git): Port and test duparray and splatarray (https://github.com/Shopify/ruby/pull/337)
- * Port duparray opcode
* Port and test splatarray -
03:47 PM Revision e9f9b8f4 (git): Fix bug with opt_lt, csel on x86
-
03:47 PM Revision 477c2df3 (git): Work on opt_lt, fix x86 backend bug in cmp()
-
03:47 PM Revision 70e117d5 (git): Fixes (https://github.com/Shopify/ruby/pull/336)
- * Fix bitmask encoding to u32
* Fix splitting for Op::And to account for bitmask immediate - 03:47 PM Revision e9a2effd (git): Enable more btests in the CI workflows (https://github.com/Shopify/ruby/pull/334)
- * Enable more btests in the CI workflows
* Update workflows -
03:47 PM Revision 76b05ba9 (git): Better splitting for Op::Test on AArch64 (https://github.com/Shopify/ruby/pull/335)
-
03:47 PM Revision b1dbc5f1 (git): Fix crash in newhash ccall
-
03:47 PM Revision 8605efdd (git): Fix corrupted X29 causing segfault, thanks Alan!
-
03:47 PM Revision 85872eec (git): Port over newrange
-
03:47 PM Revision 8d2560f1 (git): Port over setlocal and getglobal
-
03:47 PM Revision 8259813b (git): Temporarily simplify code for emit_conditional_jump to fix a bug
- 03:47 PM Revision f833d75b (git): Refactor YJIT branches to use PosMarker (https://github.com/Shopify/ruby/pull/333)
- * Refactor defer_compilation to use PosMarker
* Port gen_direct_jump() to use PosMarker
* Port gen_branch, branchunless
* Port over gen_jump()
* Port over branchif and branchnil
* Fix use od record_boundary_patch_point in jump_to_ne... -
03:47 PM Revision f5f58d82 (git): Update disasm to work on ARM (https://github.com/Shopify/ruby/pull/331)
-
03:47 PM Revision cbf7a7cd (git): Fix dupn (https://github.com/Shopify/ruby/pull/330)
- * get_dupn was allocating and throwing away an Assembler object instead of using the one passed in
* Uncomment remaining tests in codegen.rs, which seem to work now - 03:47 PM Revision 90137f51 (git): Implement PosMarker instruction (https://github.com/Shopify/ruby/pull/328)
- * Implement PosMarker instruction
* Implement PosMarker in the arm backend
* Make bindgen run only for clang image
* Fix if-else in cirrus CI file
* Add missing semicolon
* Try removing trailing semicolon
* Try to fix shell/YAML sy... -
03:47 PM Revision 4ae2c744 (git): A lot of fixes coming from our pairing session (https://github.com/Shopify/ruby/pull/329)
- * Move to/from SP on AArch64
* Consolidate loads and stores
* Implement LDR post-index and LDR pre-index for AArch64
* Implement STR post-index and STR pre-index for AArch64
* Module entrypoints for LDR pre/post -index and STR pre/po... -
03:47 PM Revision c9484fe0 (git): Fix push/pop and frame setup/teardown with Kevin & Alan
-
03:47 PM Revision b3cd7a9c (git): Fix some of the codegen.rs tests (https://github.com/Shopify/ruby/pull/327)
-
03:47 PM Revision f09fd032 (git): Assert not the same register in AArch64
-
03:47 PM Revision db84d292 (git): BLR instruction for AArch64 (https://github.com/Shopify/ruby/pull/325)
-
03:47 PM Revision fd97f8eb (git): Use frame_setup() and frame_teardown()
-
03:47 PM Revision 10d50031 (git): AArch64 frames (https://github.com/Shopify/ruby/pull/324)
-
03:47 PM Revision e907aaa3 (git): ADR fixes for LeaLabel and calls
-
03:47 PM Revision f9e24ca8 (git): Conditionals (https://github.com/Shopify/ruby/pull/323)
- * CSEL on AArch64
* Implement various Op::CSel* instructions -
03:47 PM Revision 0da253e7 (git): Port print_int to the new backend (https://github.com/Shopify/ruby/pull/321)
- * Port print_int to the new backend
* Tests for print_int and print_str -
03:47 PM Revision bf7277b5 (git): Update cirrus workflow
-
03:47 PM Revision c8319891 (git): Fix jumps (https://github.com/Shopify/ruby/pull/322)
-
03:47 PM Revision 7787ef29 (git): Add --yjit-dump-insns test to Cirrus Arm workflow
-
03:47 PM Revision 95e5c522 (git): Fix bug with LeaLabel on x86, add CI test
-
03:47 PM Revision 34ec8925 (git): Fix comment typo
-
03:47 PM Revision 160e29b9 (git): Port print_str to new backend (https://github.com/Shopify/ruby/pull/318)
- * ADR and ADRP for AArch64
* Implement Op::Jbe on X86
* Lera instruction
* Op::BakeString
* LeaPC -> LeaLabel
* Port print_str to the new backend
* Port print_value to the new backend
* Port print_ptr to the new backend
* Write n... -
03:47 PM Revision 6c500895 (git): Port newhash, add tests for newhash, duphash
-
03:47 PM Revision a1ea018f (git): Add extra assertion in new_label for Kevin
- 03:47 PM Revision 5e834195 (git): Exclude X0 (C_RET_REG) from allocatable registers on arm (https://github.com/Shopify/ruby/pull/319)
- * Exclude X0 (C_RET_REG) from allocatable registers on arm
* Add another small test snippett -
03:47 PM Revision 159566fe (git): Op::CPushAll and Op::CPopAll (https://github.com/Shopify/ruby/pull/317)
- Instructions for pushing all caller-save registers and the flags so that
we can implement dump_insns. -
03:47 PM Revision ac77d151 (git): Assert that the # of bytes matches for label refs (https://github.com/Shopify/ruby/pull/316)
-
03:47 PM Revision 15c6aacd (git): Encode MRS and MSR for AArch64 (https://github.com/Shopify/ruby/pull/315)
- 03:47 PM Revision 8d743e96 (git): Fix compile errors on arm on the CI (https://github.com/Shopify/ruby/pull/313)
- * Fix compile errors on arm on the CI
* Fix typo -
03:47 PM Revision 6e538278 (git): Port over putstring
-
03:47 PM Revision 86606e01 (git): Port over setlocal_wc0
-
03:46 PM Revision b45b29fd (git): Port gen_getlocal()
- 03:46 PM Revision 38c2fb8a (git): Port YJIT New Backend Temp Checks to Cirrus (https://github.com/Shopify/ruby/pull/312)
- Co-authored-by: Jean Boussier <jean.boussier@gmail.com>
-
03:46 PM Revision 8864691b (git): Better label refs (https://github.com/Shopify/ruby/pull/310)
- Previously we were using a `Box<dyn FnOnce>` to support patching the
code when jumping to labels. We needed to do this because some of the
closures that were being used to patch needed to capture local variables
(on both X86 and ARM it w... -
03:46 PM Revision e1f3f038 (git): Fix jumps (https://github.com/Shopify/ruby/pull/309)
- * Jumps for A64 should be in # of instructions
* More splitting for Arm64
https://github.com/Shopify/ruby/pull/309 -
03:46 PM Revision 6773832a (git): More Arm64 lowering/backend work (https://github.com/Shopify/ruby/pull/307)
- * More Arm64 lowering/backend work
* We now have encoding support for the LDR instruction for loading a PC-relative memory location
* You can now call add/adds/sub/subs with signed immediates, which switches appropriately based on sign
... -
03:46 PM Revision 05511159 (git): Add #[must_use] annotations to asm instructions
-
03:46 PM Revision ab2fa6eb (git): Add a backend test with a load of a GC'd VALUE
-
03:46 PM Revision 580f2695 (git): Get started on branchunless port
-
03:46 PM Revision 65019ed6 (git): Get codegen for deferred compilation working
-
03:46 PM Revision aab53e28 (git): Add test for direct jump to a code pointer
-
03:46 PM Revision 7a9b581e (git): Arm64 progress (https://github.com/Shopify/ruby/pull/304)
- * Get initial wiring up
* Split IncrCounter instruction
* Breakpoints in Arm64
* Support for ORR
* MOV instruction encodings
* Implement JmpOpnd and CRet
* Add ORN
* Add MVN
* PUSH, POP, CCALL for Arm64
* Some formatting and imp... -
03:46 PM Revision b272c57f (git): LSL, LSR, B.cond (https://github.com/Shopify/ruby/pull/303)
- * LSL and LSR
* B.cond
* Move A64 files around to make more sense
* offset -> byte_offset for bcond -
03:46 PM Revision d9163280 (git): Conscise IR disassembly (https://github.com/Shopify/ruby/pull/302)
- The output from `dbg!` was too verbose. For `test_jo` the output went
from 37 lines to 5 lines. The added index helps parsing InsnOut
indicies.
Samples:
```
test backend::tests::test_jo ... [src/backend/ir.rs:589] &self = Assembler
... -
03:46 PM Revision 0a96a391 (git): Delete dbg!() calls
-
03:46 PM Revision f1b18814 (git): Fix backend transform bug, add test
-
03:46 PM Revision 4c0a440b (git): Port over duphash and newarray
-
03:46 PM Revision 2eba6aef (git): Port over get_branch_target()
-
03:46 PM Revision 4254174c (git): Port over setn
-
03:46 PM Revision 24db233f (git): Add jo insn and test for jo
-
03:46 PM Revision 8bb7421d (git): Port topn, adjuststack, most of opt_plus
-
03:46 PM Revision d0204e51 (git): Port guard_two_fixnums
-
03:46 PM Revision 00ad14f8 (git): Port gen_full_cfunc_return
-
03:46 PM Revision b89d878e (git): Port getlocal_WC0
-
03:46 PM Revision 4c7d7080 (git): Port over gen_putspecialobject
-
03:46 PM Revision c5ae5263 (git): Port gen_putself, log what can't be compiled in --yjit-dump-insns
-
03:46 PM Revision 27dd43bb (git): TST, CMP, AND/ANDS with registers (https://github.com/Shopify/ruby/pull/301)
- * Add TST instruction and AND/ANDS entrypoints for immediates
* TST/AND/ANDS for registers
* CMP instruction -
03:46 PM Revision 57e64f70 (git): Make sure allocated reg size in bits matches insn out size
-
03:46 PM Revision eb4c7b4e (git): AND/ANDS for A64 (https://github.com/Shopify/ruby/pull/300)
-
03:46 PM Revision 67de662c (git): Add Opnd.rm_num_bits() method
-
03:46 PM Revision 084d4bb1 (git): Implement X86Reg::sub_reg() method
-
03:46 PM Revision 4932a6ef (git): Fix small bug in x86_split
-
03:46 PM Revision b8fc9909 (git): Get rid of temporary context methods
-
03:46 PM Revision 40ac79ad (git): Add bitwise and to x86 backend
-
03:46 PM Revision abea8c89 (git): Add stores to one of the tests
-
03:46 PM Revision 1923842b (git): Move backend tests to their own file
-
03:46 PM Revision 59b818ec (git): Add support for using InsnOut as memory operand base
-
03:46 PM Revision 401521ca (git): Rename transform_insns to forward_pass
-
03:46 PM Revision ae9bcfec (git): Add assert
-
03:46 PM Revision e743e3bf (git): Remove unused code, add backend asm test
-
03:46 PM Revision 4dbc1e1d (git): Port bitwise not, gen_check_ints()
-
03:46 PM Revision 9d18e6c3 (git): Port gen_code_for_exit_from_stub()
-
03:46 PM Revision e72dab30 (git): Add atomic counter increment instruction
-
03:46 PM Revision 27fcab99 (git): Get side exits working, get miniruby to boot with threshold=1
-
03:46 PM Revision c10e018e (git): LDADDAL, STUR, BL (https://github.com/Shopify/ruby/pull/299)
- * LDADDAL instruction
* STUR
* BL instruction
* Remove num_bits from imm and uimm
* Tests for imm_fits_bits and uimm_fits_bits
* Reorder arguments to LDADDAL -
03:46 PM Revision 1daa5942 (git): MOVK, MOVZ, BR (https://github.com/Shopify/ruby/pull/296)
- * MOVK instruction
* More tests for the A64 entrypoints
* Finish testing entrypoints
* MOVZ
* BR instruction -
03:46 PM Revision 0000984f (git): Port over putnil, putobject, and gen_leave()
- * Remove x86-64 dependency from codegen.rs
* Port over putnil and putobject
* Port over gen_leave()
* Complete port of gen_leave()
* Fix bug in x86 instruction splitting -
03:46 PM Revision d75c346c (git): Port gen_leave_exit(), add support for labels to backend
-
03:46 PM Revision ea9abe54 (git): Add cpush and cpop IR instructions
-
03:46 PM Revision 77383b39 (git): Add conditional jumps
-
03:46 PM Revision b63f8bb4 (git): LDUR (https://github.com/Shopify/ruby/pull/295)
- * LDUR
* Fix up immediate masking
* Consume operands directly
* Consistency and cleanup
* More consistency and entrypoints
* Cleaner syntax for masks
* Cleaner shifting for encodings -
03:46 PM Revision 71770cee (git): Map comments in backend
-
03:46 PM Revision c2fdec93 (git): First pass at porting gen_entry_prologue()
-
03:46 PM Revision 03ed5031 (git): Have Assembler::compile() return a list of GC offsets
-
03:46 PM Revision 26ba0a45 (git): RET A64 instructions (https://github.com/Shopify/ruby/pull/294)
-
03:46 PM Revision e2213427 (git): Remove x86_64 dependency in core.rs
-
03:46 PM Revision 3133540b (git): Progress on codegen.rs port
-
03:46 PM Revision a1b8c947 (git): * Arm64 Beginnings (https://github.com/Shopify/ruby/pull/291)
- * Initial setup for aarch64
* ADDS and SUBS
* ADD and SUB for immediates
* Revert moved code
* Documentation
* Rename Arm64* to A64*
* Comments on shift types
* Share sig_imm_size and unsig_imm_size -
03:46 PM Revision 39dd8b2d (git): Add test for lea and ret. Fix codegen for lea and ret.
-
03:46 PM Revision 04e2cced (git): Change codegen.rs to use backend Assembler directly
-
03:46 PM Revision 7c83a904 (git): Implement gc offset logic
-
03:46 PM Revision efb45acb (git): Load GC Value operands into registers
-
03:46 PM Revision a88fc48b (git): Add CCall IR insn, implement gen_swap()
-
03:46 PM Revision 0032b020 (git): Add gen_dupn
-
03:46 PM Revision 872940e2 (git): Add test with register reuse
-
03:46 PM Revision 151cc55b (git): Fix issue with load, gen_dup
-
03:46 PM Revision 1b2ee621 (git): Implement target-specific insn splitting with Kevin. Add tests.
-
03:46 PM Revision 564f9503 (git): Make assembler methods public, sketch gen_dup with new backend
-
03:46 PM Revision 99cfbdca (git): Fix bug with asm.comment()
-
03:46 PM Revision 75c995b0 (git): Bias register allocator to reuse first operand
-
03:46 PM Revision 369911d3 (git): Add dbg!() for Assembler. Fix regalloc issue.
-
03:46 PM Revision a2aa2895 (git): Function to map from Opnd => X86Opnd
-
03:46 PM Revision e9cc17dc (git): Start work on platform-specific codegen
- 03:45 PM Revision 18dc379a (git): * 2022-08-30 [ci skip]
-
03:37 PM Revision a3d8e20c (git): Split insns (https://github.com/Shopify/ruby/pull/290)
- * Split instructions if necessary
* Add a reusable transform_insns function
* Split out comments labels from transform_insns
* Refactor alloc_regs to use transform_insns -
03:37 PM Revision 2b7d4f27 (git): IR register allocation
- PR: https://github.com/Shopify/ruby/pull/289
-
03:37 PM Revision 7753b6b8 (git): Removed String opnd so that we can derive Copy for Opnd
-
03:37 PM Revision 5021f26b (git): Complete sketch for guard_object_is_heap
-
03:37 PM Revision 884cbaab (git): Change push insn macros
-
03:37 PM Revision 92e9d1e6 (git): Switch IR to use Option<Target>
-
03:37 PM Revision 96e5f9de (git): Add macro to define ops
-
03:37 PM Revision 909d2147 (git): Progress on IR sketch
-
03:37 PM Revision 2ffaa377 (git): WIP backend IR sketch
-
03:16 PM Bug #18981: Backport bundle loader option to stable versions
- > I'm not sure mjit_worker.c changes are correct.
Looks good to me. -
09:29 AM Bug #18981: Backport bundle loader option to stable versions
- Ruby 3.1 has passed all the tests with `make check`. Ruby 2.7 and Ruby 3.0 failed some tests like Socket. But these are not related to these changes.
-
09:22 AM Bug #18981 (Closed): Backport bundle loader option to stable versions
- https://github.com/ruby/ruby/pull/6193 is needed by macOS 13.0(Ventura).
I created the following patches.
* for Ruby 2.7: https://github.com/ruby/ruby/pull/6297
* for Ruby 3.0: https://github.com/ruby/ruby/pull/6298
* for Ruby 3.... -
03:03 PM Misc #18984: Doc for Range#size for Float/Rational does not make sense
- Please do not assign ruby-core, that sends too many emails.
-
02:39 PM Misc #18984 (Closed): Doc for Range#size for Float/Rational does not make sense
- When `Range` consists of any Numeric, according to [Official docs for Ruby-3.1.2](https://ruby-doc.org/core-3.1.2/Range.html#method-i-size), `Range#size` should,
> Returns the count of elements in self if both begin and end values ar... -
02:17 PM Feature #18959: Handle gracefully nil kwargs eg. **nil
- LevLukomskyi (Lev Lukomskyi) wrote in #note-25:
> > You need to fail when someone passes you garbage (and `nil` is a garbage value in this case), or you need to ensure better default values (e.g., `{}`) at your call sites.
> ...
You do... -
12:40 AM Feature #18959: Handle gracefully nil kwargs eg. **nil
- > You need to fail when someone passes you garbage (and `nil` is a garbage value in this case), or you need to ensure better default values (e.g., `{}`) at your call sites.
When you pass `nil` you make less allocations, also you don't... -
02:11 PM Feature #18951: Object#with to set and restore attributes around a block
- I really like Rails’ `with_options`:
```ruby
class Account < ActiveRecord::Base
with_options dependent: :destroy do |assoc|
assoc.has_many :customers
assoc.has_many :products
assoc.has_many :invoices
assoc.has_many :ex... -
12:31 PM Feature #18951: Object#with to set and restore attributes around a block
- I feel like in the do/end form it's quite clear:
```ruby
obj.with(foo: "bar") do
# do something
end
```
Just like `5.times do` doesn't need to be named `exec_times` to be clear. -
12:08 PM Feature #18951: Object#with to set and restore attributes around a block
- I'll add my 2 cents as well: I really really like the proposed idea and I would love to see it added to Ruby for 3.2.
However, I find `with` a little too generic as a name for the concept. Primarily, when I look at it, it doesn't tell... -
02:10 PM Bug #18983 (Closed): Range#size for beginless Range is not nil.
- `Range#size` should, according to [Official docs](https://ruby-doc.org/core-3.1.2/Range.html#method-i-size),
> Returns the count of elements in self if both begin and end values are numeric; otherwise, returns nil
but it doesn't wi... -
01:36 PM Revision 4ee1a687 (git): Update to ruby/spec@d01709f
-
01:32 PM Revision a319d3cf (git): Run specs with CHECK_LEAKS=true
- * To ensure these issues are noticed early.
-
01:16 PM Misc #18977: DevMeeting-2022-09-22
- - [Feature #18982] Add an `exception: false` argument for Queue#push, Queue#pop, SizedQueue#push and SizedQueue#pop (byroot)
- The existing exceptions (ThreadError) are a bit awkward to deal with.
- Queue is often used deep into th... -
12:58 PM Feature #18784: `FileUtils.rm_f` and `FileUtils.rm_rf` should not mask exceptions
- I'd suggest having the warning for $VERBOSE=false too (and so no warning for $VERBOSE=nil).
When such an error happens it means something is going wrong, and I'd imagine it's a lot more helpful for anyone using `rm_rf` and getting a bug... -
12:02 PM Feature #18784: `FileUtils.rm_f` and `FileUtils.rm_rf` should not mask exceptions
- Thanks @mame, a warning in `$VERBOSE` mode is definitely better than nothing :)
Thanks @eregon! I originally introduced that because one maintainer was getting test failures on her system otherwise, and because I thought we completely... -
11:47 AM Feature #18784: `FileUtils.rm_f` and `FileUtils.rm_rf` should not mask exceptions
- Those temporary directories should be separate, but I guess the issue is this line which means other things might get stored in that test temp dir:
https://github.com/ruby/ruby/blob/7bdb999d0f28c7bb9d7a35ca775e405674527e5f/test/rubygems... -
11:39 AM Feature #18784: `FileUtils.rm_f` and `FileUtils.rm_rf` should not mask exceptions
- I have talked with @matz about this issue. He said let's revert this change. Instead, it will print a warning whenever it fails to delete a file (only when `$VERBOSE = true`). I will create a patch.
-
11:36 AM Feature #18784: `FileUtils.rm_f` and `FileUtils.rm_rf` should not mask exceptions
- mame (Yusuke Endoh) wrote in #note-14:
> deivid (David Rodríguez) wrote in #note-13:
> ...
I think I have identified the mechanism. In short, my guess was correct.
* rubygems attempts to delete TMPDIR by `FileUtils.rm_rf`.
* `FileU... -
11:23 AM Revision 4bc782ed (git): Revert "Chect what remains in TMPDIR"
- This reverts commit 7bdb999d0f28c7bb9d7a35ca775e405674527e5f.
I think I confirmed the mechanism. GCC (invoked by MJIT) creates a
temporary file in TMPDIR, which prevents rm_rf from removing the
directory. -
10:24 AM Feature #18982: Add an `exception: false` argument for Queue#push, Queue#pop, SizedQueue#push and SizedQueue#pop
- Sounds good :+1:
-
10:23 AM Feature #18982: Add an `exception: false` argument for Queue#push, Queue#pop, SizedQueue#push and SizedQueue#pop
- Proposed patch: https://github.com/ruby/ruby/pull/6299
-
10:20 AM Feature #18982 (Closed): Add an `exception: false` argument for Queue#push, Queue#pop, SizedQueue#push and SizedQueue#pop
- This replaces [Feature #18965]
Currently these methods raise in three occasions:
- `ThreadError(queue empty)` for `#pop` in `nonblock=true` mode, and the operation would block.
- `ThreadError(queue full)` for `SizedQueue#push`... -
10:21 AM Feature #18965 (Rejected): Further Thread::Queue improvements
- Closing in favor of [Feature #18982], which propose `exception: false`.
-
05:42 AM Revision 78748a5d (git): Introduce `usage_analysis_clear`
-
03:50 AM Revision 7bdb999d (git): Chect what remains in TMPDIR
- I guess it has a shared library file created by MJIT, but I want to make
sure the fact. -
12:52 AM Revision 41a275c8 (git): Support main branch for syntax_suggest
08/28/2022
-
09:57 PM Revision 055fc7b1 (git): Fix comment in timev.rb
-
09:49 PM Revision aecc3b12 (git): [DOC] Enhanced RDoc for Time (#6294)
-
09:37 PM Feature #18980: `it` as a default block parameter
- baweaver (Brandon Weaver) wrote in #note-17:
> I do not see a distinct enough difference to justify `@1`, and would reiterate previous arguments that even if it is technically illegal syntax it will still be confused for instance variab... -
09:35 PM Feature #18980: `it` as a default block parameter
- > @1 syntax
In case it wasn't clear, the alternative that @jeremyevans0, @graywolf, and I talked about was not `@1` but `@`. They're different.
> ...
I discussed that at https://bugs.ruby-lang.org/issues/18980#note-8.
2+ args cases a... -
09:21 PM Feature #18980: `it` as a default block parameter
- #### Aliasing
While I understand that `_1` is not necessarily clear and immediately obvious it has seen a lot of use. Even if we were to introduce `it` or any other syntax it would effectively be an alias so as to not break compatibilit... -
08:42 PM Feature #18980: `it` as a default block parameter
- For your information, `@` was a candidate discussed and rejected when `@1` was changed to `_1`. I'm raising `it` partly because it hasn't been explicitly rejected. However, for the same reason discussed above, `@` is still a better compr...
-
04:42 PM Feature #18980: `it` as a default block parameter
- jeremyevans0 (Jeremy Evans) wrote in #note-13:
> If we are considering an alternative to `_1`, I'm going to vote again for `@` (bare at sign) (originally proposed in https://bugs.ruby-lang.org/issues/4475#note-10). This is currently in... - 03:33 PM Revision 5fcce23a (git): * 2022-08-29 [ci skip]
- 03:33 PM Revision 8799c912 (git): [rubygems/rubygems] Add platform :windows as a shortcut for all Windows platforms
- https://github.com/rubygems/rubygems/commit/f3c49ad3f7
-
03:14 PM Feature #18959: Handle gracefully nil kwargs eg. **nil
- LevLukomskyi (Lev Lukomskyi) wrote:
>
> ...
Starting with Rails 6.1 you can do:
```ruby
content_tag(:div, 'Content', class: token_list('is-hero': hero, 'is-search-page': search_page))
``` -
05:15 AM Feature #18959: Handle gracefully nil kwargs eg. **nil
- LevLukomskyi (Lev Lukomskyi) wrote in #note-22:
> > I also tend to do `**(options || {})` and I don’t write hard-to-read code like `**({id: id, name: name} if id.present?)`.
> ...
I disagree that it’s the same, but more to the point,... - 07:27 AM Revision 1486ffe0 (git): [DOC] Correct article of Ractor's introduction [ci skip]
-
04:54 AM Revision 1d83302f (git): [Win32] Use `exit` instead of `type` [ci skip]
- `exit` command ignores the rest arguments after an exit code, while
`type` command tries to read all as files. -
03:48 AM Misc #18362: mswin builds & vs2022
- This bug is fixed by "Microsoft(R) C/C++ Optimizing Compiler Version 19.33.31629 for x64".
And applied to GitHub Actions at runner-image 20220821.1. -
02:12 AM Bug #18963 (Closed): Ripper.tokenize(code).join != code when heredoc and multiline string is on the same line
- Applied in changeset commit:git|ace2eee544378eb03ea95b95c89434508325e8c8.
----------
[Bug #18963] Separate string contents by here document terminator -
12:29 AM Revision ace2eee5 (git): [Bug #18963] Separate string contents by here document terminator
08/27/2022
-
10:47 PM Revision 111b69e8 (git): Pass wait: false to avoid a timeout
-
10:13 PM Feature #18959: Handle gracefully nil kwargs eg. **nil
- > I also tend to do `**(options || {})` and I don’t write hard-to-read code like `**({id: id, name: name} if id.present?)`.
That's interesting, that you are ok for
```ruby
**(options || {})
```
but not ok for
```ruby
**(options ... -
03:16 AM Feature #18959: Handle gracefully nil kwargs eg. **nil
- It seems that `foo(*arguments)` will call `arguments.to_a` rather than `arguments.to_ary`. However, I also noticed `foo(*Object.new)` works as a single argument, which honestly seems a bit odd to me.
So:
> If we want to allow **nil, th... -
12:21 AM Feature #18959: Handle gracefully nil kwargs eg. **nil
- LevLukomskyi (Lev Lukomskyi) wrote in #note-19:
> > Both @sawa and I have provided better options than your examples.
> ...
Not at all. I’ve used `**` for a *very* long time (since kwargs were introduced). But I also tend to do `**(opt... -
09:48 PM Revision 83375f47 (git): Avoid leaving a period alone [ci skip]
- 09:42 PM Revision a797ded8 (git): typos
-
07:05 PM Revision 95d2d792 (git): Try to prevent the failure of FileUtils.rm_rf
-
05:22 PM Revision 458d49a0 (git): Ignore rm -rf failure
- http://ci.rvm.jp/results/trunk-mjit@phosphorus-docker/4213386
It's failing with:
rm: cannot remove '/tmp/ruby/v3/build/trunk-mjit/tmp/test_rubygems_20220827-13666-ii8lcp': Directory not empty
rm: cannot remove '/tmp/ruby/v3/build/trunk-... - 05:04 PM Revision 4de09574 (git): * 2022-08-28 [ci skip]
- 05:04 PM Revision 381d8e43 (git): [rubygems/rubygems] Bundler: make to_lock consistent between Gem::Dependency and Bundler::Dependency
- https://github.com/rubygems/rubygems/commit/971d57cf5a
-
04:34 PM Feature #16122: Data: simple immutable value object
- Disregard that, looked in the wrong place.
~~Hmm, folks, working on implementation on the weekend, I am a bit confused. I believe I _saw_ that in 3.2 we decided to make `Struct` more flexible, but accepting positional OR keyword args re... -
03:21 PM Feature #18951: Object#with to set and restore attributes around a block
- > But WITH is also SQL keyword and was recently added to ActiveRecord
It was added to `ActiveRecord::Relation`, which doesn't have any setters in its public API, and even if it did it still wouldn't be a concern in my opinion.
Sin... -
03:14 PM Feature #18951: Object#with to set and restore attributes around a block
- There are similar methods (`with_*`) across various popular gems. For example `I18n.with_locale(locale)`. But `WITH` is also SQL keyword and was recently added to `ActiveRecord` (https://github.com/rails/rails/commit/098b0eb5dbcf1a942c4e...
-
03:06 PM Feature #18951: Object#with to set and restore attributes around a block
- > sole with feels vague a little, to me.
Well, the argument is that it's not alone, since it is used with at list one keyword argument.
`something.with` is vague I agree, but I believe that e.g.:
```ruby
GC.with(stress: true) d... -
02:58 PM Feature #18951: Object#with to set and restore attributes around a block
- I think this would be nice to have, indeed spelling it out manually is quite verbose and then we tend to have lots of helper methods for this.
For the name, `with` seems natural to me, and it's also the name of the keyword in Python use... -
02:37 PM Feature #18951: Object#with to set and restore attributes around a block
- I agree with the concept, but wonder about these names.
The meaning of `with_something_enabled` is obvious, but sole `with` feels vague a little, to me.
And `old_values` should be initialized as an empty hash, I think. -
02:16 PM Bug #10820: Win32 Registry Delete uses ANSI instead of Wide APIs
- headius (Charles Nutter) wrote in #note-10:
> Late to the party, but why was `RegQueryInfoKey` also update to use `W`?
It seems unneeded because not using any `WCHAR` arguments.
> ...
It's done by fiddle.
https://github.com/ruby/... -
01:16 PM Feature #18784: `FileUtils.rm_f` and `FileUtils.rm_rf` should not mask exceptions
- I think those issues are revealing real problems which are worth investigating and fixing.
For instance if files are created and deleted in parallel in the same directory that seems like a good source of transient bugs waiting to happen... -
11:40 AM Feature #18784: `FileUtils.rm_f` and `FileUtils.rm_rf` should not mask exceptions
- deivid (David Rodríguez) wrote in #note-13:
> Yet this exception is showing the error when trying to remove the root directory, and not the real culprit of failing to remove one file inside. Do you know why is that?
I have no idea. P... -
11:24 AM Feature #18784: `FileUtils.rm_f` and `FileUtils.rm_rf` should not mask exceptions
- Alright, I guess it makes sense to leave things as they are.
One question I have is: I though we had removed an `ensure` that prevented the original exception from being displayed and would instead show the error when removing the roo... -
11:18 AM Feature #18784: `FileUtils.rm_f` and `FileUtils.rm_rf` should not mask exceptions
- We faced another problem on Linux.
A rubygems test uses `FileUtils.rm_rf` in `teardown`. But it randomly fails for an unknown reason (mysteriously, only on MJIT test?). This makes the `teardown` method fail to restore the environment ... -
11:16 AM Feature #13626: Add String#byteslice!
- I think the underlying issue is we want a string append method which does not change the receiver's encoding (and instead raises an EncodingError if it would need to change it).
-
07:05 AM Feature #13626: Add String#byteslice!
- > I hope I have not demanded anything
Yes, sorry, not what I meant, it's one of these words that has similar meaning in French, yet a radically different connotation. -
06:30 AM Feature #13626: Add String#byteslice!
- Just to clarify I hope I have not demanded anything. "But if you want to have a go at it, that would be awesome" was all I said.
I have been trying the `buffer.force_encoding(Encoding::BINARY)` followed by `slice!` but you are right i... -
11:12 AM Feature #18408: Allow pattern match to set instance variables
- Right, and I agree with matz that modifying ivars as the match is evaluated is problematic, I would even say it's unsound for pattern matching to have such side effects.
Testing a pattern should as much as feasible not have side effects... -
03:18 AM Feature #18408: Allow pattern match to set instance variables
- @eregon I understand what you're saying, but my statement was based on the premise "if you don't want ivars to change during match". In the PR prepared by @palkan, ivars are modified as the match is evaluated, just like local vars, and t...
-
09:04 AM Feature #18980: `it` as a default block parameter
- I also avoid using solo `_1` as I have to search for `_2` when I see `_1` in a block. It's not because of a feeling caused by the number but because the behavior of `_1` changes depending on the occurrence of `_2`.
Given that we have ... -
06:35 AM Revision 13d2225c (git): Try rm -rf instead of FileUtils.rm_rf
- FileUtils.rm_rf started to randomly fail on http://ci.rvm.jp/results/trunk-mjit@phosphorus-docker
since around https://github.com/ruby/fileutils/pull/99. - 03:56 AM Revision f97af5cd (git): * 2022-08-27 [ci skip]
-
03:54 AM Revision fe4dd18d (git): [DOC] Fix a typo [ci skip]
08/26/2022
-
11:36 PM Feature #18959: Handle gracefully nil kwargs eg. **nil
- > because it’s (1) wasteful
It wastes what? I don't understand this argument
> ...
This I can understand because indeed sometimes programmers can put too much in one line. However there are only two operators in that line – `if` an... -
09:16 PM Feature #18959: Handle gracefully nil kwargs eg. **nil
- LevLukomskyi (Lev Lukomskyi) wrote in #note-17:
> @austin your latest example has 110 symbols, the condition should be duplicated for each new hash key, as well as the ternary operator, so it's not good. Previous example has 294 symbols... -
08:43 PM Feature #18959: Handle gracefully nil kwargs eg. **nil
- Currently:
```ruby
"xyz".sub(/y/, nil) #=> TypeError: no implicit conversion of nil into String
def nil.to_hash; {} end
"xyz".sub(/y/, nil) #=> "xz"
```
Ok, the behavior is different, but it doesn't mean that we cannot implement the fea... -
02:52 PM Feature #18959: Handle gracefully nil kwargs eg. **nil
- > > Currently, nobody is using `**nil` because it throws an error because `nil.to_hash` is not defined. So I don't see how adding such feature would lead to _"high probability of compatibility issues"_.
> ...
Yes, there are problems wit... -
12:15 AM Feature #18959: Handle gracefully nil kwargs eg. **nil
- LevLukomskyi (Lev Lukomskyi) wrote in #note-14:
> @austin, your example is a perfect example of "overengineering".
On this, we disagree. I find the number of sigils required for `**({ id: id, name: name } if id.present?)` to be a sur... -
11:32 PM Feature #18980: `it` as a default block parameter
- If we are considering an alternative to `_1`, I'm going to vote again for `@` (bare at sign) (originally proposed in https://bugs.ruby-lang.org/issues/4475#note-10). This is currently invalid syntax, so there is no possibility of backwa...
-
10:46 PM Feature #18980: `it` as a default block parameter
- > This is a good argument, I think it would be good to add to the issue description.
I'm glad it made sense to you. Sure, I updated the issue description to include that.
> ...
I'm not sure if it's too difficult to distinguish "a metho... -
03:48 PM Feature #18980: `it` as a default block parameter
- > innocuous word
I misused `innocuous` here. I want to mean a "common word", and it's hard to notice because it's the same syntax as a local variable or method call. -
03:45 PM Feature #18980: `it` as a default block parameter
- k0kubun (Takashi Kokubun) wrote in #note-8:
> What do you mean? I thought we were talking about `_1`, not `_`. If this feature were introduced as `_`, I would use it much more often than `_1`, but [Matz finds `_` confusing](https://bugs... -
02:41 PM Feature #18980: `it` as a default block parameter
- > I regularly use _1, _2, maybe it's question of habit and getting used to it?
Matz also made that argument in the Ruby Committers vs the World 2019, saying many people started using `-> {}` after almost 100% of the people objected to t... -
12:43 PM Feature #18980: `it` as a default block parameter
- I regularly use `_1`, `_2`, maybe it's question of habit and getting used to it?
`_1` seems already used in many gems (`gem-codesearch '\b_1\b' | grep '\.rb:\s'`).
It's also a syntax used in other languages, and `_` is already establishe... -
10:31 AM Feature #18980 (Closed): `it` as a default block parameter
- ## Problem
Numbered parameters (`_1`, `_2`, ...) look like unused local variables and I don't feel motivated to use them, even though I need this feature very often and always come up with `_1`.
```rb
[1, 2, 3].each { puts _1 }
```... -
07:08 PM Feature #16122: Data: simple immutable value object
- austin (Austin Ziegler) wrote in #note-55:
> Why not `Data.defclass` or `Data.deftype` or even `Data.defshape`?
Because those do not use a proper Ruby naming (no _ to separate words, aside: looks like Python matplotlib methods), they... -
04:53 PM Feature #16122: Data: simple immutable value object
- Eregon (Benoit Daloze) wrote in #note-54:
> I like `Data.define` as well, we are "defining a new subclass of Data".
> ...
Elixir uses `defmodule` for module declarations. Why not `Data.defclass` or `Data.deftype` or even `Data.defshape`? -
10:22 AM Feature #16122: Data: simple immutable value object
- I like `Data.define` as well, we are "defining a new subclass of Data".
`def` makes me thing to "define a method" since that's what the keyword of the same name does, but `Data.def` does not define a method but a class. -
07:01 PM Feature #18408: Allow pattern match to set instance variables
- Dan0042 (Daniel DeLorme) wrote in #note-20:
> But if you don't want ivars to change during match, this *can* be fixed, for example by using temporary local vars like I suggested in #note-11. I don't think this is a fundamental problem w... -
05:31 PM Feature #18408: Allow pattern match to set instance variables
- > it is intentional. Unsuccessful matches remain the assignment result from the internal matches
I think everyone here understood the current behavior is intentional, but the more important question would be "is it beneficial?"
> .... -
03:14 PM Feature #18965: Further Thread::Queue improvements
- > Why not exception: false which seems more standard and established
So after working more on using a SizedQueue in statsd-instrument, I now think `exception: false` might actually be better.
The reason is that `SizedQueue#push(ite... -
01:01 PM Bug #18899: Inconsistent argument handling in IO#set_encoding
- I ran my test against your branch, and it addresses this issue. I hope it can be incorporated soon. Thanks!
-
08:17 AM Feature #18784: `FileUtils.rm_f` and `FileUtils.rm_rf` should not mask exceptions
- Another observation is: could we opt-out of this strict behavior only on Windows, given how picky it is about deleting used files? So far the only issues found in the realworld are under Windows I believe. Fileutils already has several s...
-
07:16 AM Feature #18784: `FileUtils.rm_f` and `FileUtils.rm_rf` should not mask exceptions
- In my opinion, this is ok. I also encountered some issues in RubyGems test suite when I first enabled this behavior that led me to correct some bad tests. And it also helped me figure out realworld bugs. I understand that sometimes it ma...
-
05:34 AM Feature #18784: `FileUtils.rm_f` and `FileUtils.rm_rf` should not mask exceptions
- I also encountered a possibly related `Errno::EACCES` error on Windows (mingw) of GitHub Actions.
```
Errno::EACCES:
Permission denied @ apply2files - D:/a/_temp/d20220824-1696-gdx8qj/path/does/not/exist
```
Below are the back... -
04:08 AM Feature #18784: `FileUtils.rm_f` and `FileUtils.rm_rf` should not mask exceptions
- Unfortunately, this change affected mkmf on Appveyor (Windows).
https://ci.appveyor.com/project/ruby/ruby/builds/44579924/job/n81xmb2mqs6no7dm#L23792
```
2) Error:
TestMkmfTryConstant#test_simple:
Errno::EACCES: Permission denie... -
06:00 AM Revision d6f21b30 (git): Convert catch_except_t to stdbool
- catch_excep_t is a field that exists for MJIT. In the process of
rewriting MJIT in Ruby, I added API to convert 1/0 of _Bool to
true/false, and it seemed confusing and hard to maintain if you
don't use _Bool for *_p fields. -
04:12 AM Misc #18977: DevMeeting-2022-09-22
- * [Feature #18784] `FileUtils.rm_f` and `FileUtils.rm_rf` should not mask exceptions (mame)
* I changed FileUtils.rm_f/rm_rf so that it raises a SystemCallError but Errno::ENOENT.
* But it seemed to affect mkmf on Windows. mkmf use... -
03:15 AM Revision 098a3cfa (git): Fixed typo
-
03:15 AM Revision 1cbee173 (git): Sync examples and cli from syntax_suggest
-
03:15 AM Revision 3a2bc849 (git): Added test-syntax-suggest to CI
-
03:15 AM Revision 5e4d1f99 (git): Skip examples to need installed ruby exe
-
03:15 AM Revision 8dfc077f (git): Added syntax_suggest cli and resolve failing exapmle with it
-
03:15 AM Revision bd1b1eeb (git): ruby-prof is now optional
-
03:15 AM Revision 9c2af0a1 (git): added test-syntax-suggest and prepare tasks
-
03:15 AM Revision 0d9f4ea0 (git): Import spec examples from ruby/syntax_suggest
- 12:57 AM Revision 3504be1b (git): [ruby/irb] Require RDoc in `input-method.rb` again in a limited scope.
- RDoc is implemented as soft dependency in IRB. See how the rdoc is required in
the files. I reverted the commit below.
```
$ grep -ril rdoc lib/
lib/irb/cmd/help.rb
lib/irb/completion.rb
lib/irb/easter-egg.rb
lib/irb/input-method.rb
```...
08/25/2022
-
10:48 PM Feature #16122: Data: simple immutable value object
- `Data.new` aside, `Data.def` and `Data.define` are my current top-2 preferences. I'd be happy with either of these at this point.
But thinking about this further, I might like `Data.define` slightly more. It's a trade-off with shortn... -
08:02 PM Feature #16122 (Assigned): Data: simple immutable value object
-
01:34 PM Feature #16122: Data: simple immutable value object
- 1. I slightly regretted to make `Struct.new` to create a subclass, not an instance. So this time I didn't choose `new`. `create` or `generate` would have a similar issue with `new`. `define` might be a candidate. But I still prefer short...
-
11:25 AM Feature #16122: Data: simple immutable value object
- @matz Thanks for the decisions!
A few questions:
1. I am a bit concerned about using `def`, which is strongly associated with defining methods. I wouldn't want it to be a blocker (it would be really cool to have `Data` by the 3.2),... -
10:40 AM Feature #16122: Data: simple immutable value object
- We are going to implement Data class in the following spec:
* `D = Data.def(:foo, :bar)` to define a data class (subclass of Data)
* `Data.new` raises exception (unlike Struct)
* `d = D.new(1,2)` to create Data instance
* Or `d = ... -
10:32 PM Feature #18959: Handle gracefully nil kwargs eg. **nil
- @austin, your example is a perfect example of "overengineering".
We could argue about "clearness", although about "conciseness" it's easy to check – option 1: 72 characters, option 2: 62 characters, so option 2 is 15% more concise, cl... -
03:13 PM Feature #18959: Handle gracefully nil kwargs eg. **nil
- LevLukomskyi (Lev Lukomskyi) wrote in #note-10:
> ```ruby
> ...
I do not find the second option clearer or more concise in any way. It feels much more of line-noise.
In my code, I would opt for an explicit function that does the log... -
01:17 PM Feature #18959: Handle gracefully nil kwargs eg. **nil
- I'm not that much concerned about the performance but about readability. Your solution with `compact` is probably good for that particular case but it cannot solve all other cases with an arbitrary hash plugged into the main hash on an a...
-
12:14 PM Feature #18959: Handle gracefully nil kwargs eg. **nil
- LevLukomskyi (Lev Lukomskyi) wrote in #note-10:
> If use `compact!` as a different statement then you need to make a variable, you have to make a mental effort to make up the name for that variable and repeat its name to use `compact!`. ... -
11:36 AM Feature #18959: Handle gracefully nil kwargs eg. **nil
- > I meant to simply use compact! in a different statement, not in a chain.
If use `compact!` as a different statement then you need to make a variable, you have to make a mental effort to make up the name for that variable and repeat ... -
03:47 AM Feature #18959: Handle gracefully nil kwargs eg. **nil
- LevLukomskyi (Lev Lukomskyi) wrote in #note-8:
> 2. => more specifically `.tap(&:compact!)` since `compact!` may return `nil` if nothing changed.
I think `tap(&:foo)` is actually not that much efficient, and `tap(&:compact!)` could be s... -
08:36 PM Bug #18767 (Closed): IO.foreach hangs up when passes limit=0
- Applied in changeset commit:git|21cac42385e1a116d287e155e461453b830640d2.
----------
Raise ArgumentError for IO.foreach with limit of 0
Makes behavior consistent with IO.readlines.
Fixes [Bug #18767] -
09:53 AM Bug #18767: IO.foreach hangs up when passes limit=0
- OK, let's make it raise exceptions for zero length.
Matz.
-
08:36 PM Revision 21cac423 (git): Raise ArgumentError for IO.foreach with limit of 0
- Makes behavior consistent with IO.readlines.
Fixes [Bug #18767] -
07:41 PM Bug #18797: Third argument to Regexp.new is a bit broken
- matz (Yukihiro Matsumoto) wrote in #note-1:
> This is indeed an obsolete feature for long time. And the third argument is ignored (IIRC).
Unfortunately, the third argument is not ignored:
```ruby
p Regexp.new("\u1234", nil, "n").... -
09:59 AM Bug #18797: Third argument to Regexp.new is a bit broken
- This is indeed an obsolete feature for long time. And the third argument is ignored (IIRC).
Some (old) gems still use it because they are not updated for long time. Warnings should not improve the situation (since most of them are unmai... -
06:37 PM Revision 881bc2a1 (git): Skip running a DRb test on MinGW
- It hangs even after a retry
https://github.com/ruby/ruby/runs/7966439530?check_suite_focus=true
We contacted GitHub Suppport about this before, and we concluded that
the problem is on our end. Unfortunately we don't have a bandwidth to
... -
06:31 PM Revision af9fa16c (git): Make sure super is called and fix teardown
-
06:11 PM Revision 52560a92 (git): Skip flaky mkmf tests on AppVeyor
- It seems like TestMkmfTryConstant started to randomly fail, maybe
related to 96562a517d3373466ec306b5f821a41f4758d2a6 or 073f3b7e0ad94657c04573983affb9d66e6bff2c.
Some of them seem to have failed even after retries, so it feels like
the... -
06:02 PM Revision 8706b74b (git): [DOC] Enhanced RDoc for Time (#6277)
- Deletes the :include: files in doc/time, which became no longer workable when @nobu pointed out that some (but not all) creator methods accept string values as well as integer-like values.
Changes to methods:
Time.utc
Time.local... -
03:49 PM Revision b2d0f788 (git): Fix private methods reported as protected when called via Symbol#to_proc
- Ref: bfa6a8ddc84fffe0aef5a0f91b417167e124dbbf
Ref: [Bug #18826] -
03:31 PM Feature #18979 (Open): Kernel#sprintf formatting BigDecimal without the loss of precision
- Recently I stumbled upon a quirk with `Kernel#sprintf`'s `f` modifier behavior with `BigDecimal`. It seems to be not documented neither in `Kernel` documentation nor in `BegDecimal` one. Also, I didn't find previous discussions about it ...
- 03:08 PM Revision c2daa056 (git): * 2022-08-26 [ci skip]
-
03:07 PM Revision c069f504 (git): [DOC] Tell RDoc aliases of singleton class
- Since RDoc C parser cannot capture aliases which are using an
expression other than a single variable as the class, use an
intermediate variable for the singleton class. -
02:44 PM Bug #18970: CRuby adds an invalid header to bin/bundle (and others) which makes it unusable in Bash on Windows
- MSP-Greg (Greg L) wrote in #note-12:
> Windows bash file 'top'
> ...
I'm not sure where the header came from.
`rbinstall.rb` doesn't use `dirname` command.
Maybe [here](https://github.com/MSP-Greg/ruby-loco-test/blob/master/mswin/cop... -
02:39 PM Revision ad8774f8 (git): [rubygems/rubygems] Fix another regression for sorbet
- Recently a changed was introduced to update the resolver platforms after
it has been created, in order to remove the "ruby" platform from it if
it's to be removed from the lockfile. However, it did not update the
`@resolving_only_for_rub... -
01:41 PM Bug #18978 (Feedback): Unexpected behaviour in Time.utc and Time.local when 8 arguments are passed in
- GitHub PR: https://github.com/ruby/ruby/pull/6281
Time.utc and Time.local produce inconsistent and unexpected behaviour when 8 arguments is passed in.
For example, consider the following code:
```ruby
Time.utc(2000, 1, 1, 2, 3,... -
12:39 PM Misc #18977 (Closed): DevMeeting-2022-09-22
- # The next dev meeting
**Date: 2022/09/22 13:00-17:00** (JST)
Log: https://github.com/ruby/dev-meeting-log/blob/master/DevMeeting-2022-09-22.md
- Dev meeting *IS NOT* a decision-making place. All decisions should be done at the bu... -
12:38 PM Misc #18954 (Closed): DevMeeting-2022-08-18
-
12:37 PM Bug #18973: Kernel#sprintf: %c allows codepoints above 127 for 7-bits ASCII encoding
- We brielfly discussed this issue at the dev meeting. @naruse said it should behave like `String#<<` as follows. @nobu said he would try to implement this.
```ruby
s = "".force_encoding("US-ASCII")
s << 128
p s #=> "\x80"
... -
09:55 AM Misc #18975: Propose Stan Lo (@st0012) as an IRB maintainer
- Confirmed. Thank you for helping us @k0kubun and @st0012.
If you have any concern, please tell us here.
Matz.
-
08:16 AM Misc #18975 (Feedback): Propose Stan Lo (@st0012) as an IRB maintainer
- We discussed this at today's developers meeting. We recognize two different challenges here.
1. @st0012 and @k0kubun want to introduce IRB features that are relatively easy to maintain, such as adding or modifying IRB commands.
2. We ha... -
09:46 AM Feature #18408 (Rejected): Allow pattern match to set instance variables
- We have discussed with @ktsj about the issue, and concluded it is intentional. Unsuccessful matches remain the assignment result from the internal matches, e.g.,
```
case [1,2,3]
in [a,2,3,4]
# unmatch
else
p a #=> 1 (from pa... -
09:33 AM Feature #18821: Expose Pattern Matching interfaces in core classes
- I agree with MatchData. And I think `deconstruct` for the class should be an alias to `captures` instead of `to_a`.
Matz. -
05:35 AM Bug #18971: Enumerator::Lazy.take(0) leaks first element into next operation
- Although not so elegant, I was thinking to add "precheck" to enumerators.
https://github.com/nobu/ruby/tree/lazy_take0 -
02:28 AM Misc #18976 (Closed): [ANN] blade.nagaokaut.ac.jp is down
- The mail archive server named `blade.nagaokaut.ac.jp` is down now.
blade had some hardware issues. Prof. Hara tries to salvage mail data and rebuild blade. But It's difficult status.
I have a plan to migrate Ruby mail server includ...
08/24/2022
-
11:14 PM Bug #18932 (Closed): Ruby 3.1 - Allow building with VS 2022
-
10:42 PM Bug #18932: Ruby 3.1 - Allow building with VS 2022
- I just built ruby_3_1 branch with VS 2022, and it built and passed all tests. So, no patches needed for Ruby 3.1. Please close.
-
06:00 PM Bug #18932: Ruby 3.1 - Allow building with VS 2022
- Yes. The Visual Studio bug has been fixed. I'll try a build see what's needed.
-
05:10 PM Bug #18932: Ruby 3.1 - Allow building with VS 2022
- Can you point out which commits are needed for backporting to allow Ruby 3.1 to work better with VS 2022? Then we could mark those commits for backporting. However, the decision of whether to backport is always made by the branch maint...
-
09:15 PM Revision f5f81bb7 (git): Update Module#instance_methods documentation for visibility changes/aliases
- Requested by matz in comment on #18435.
-
09:03 PM Bug #18974: Wrong line number in the rescue iseq for the exception matching code
- I've submitted a pull request to fix this issue: https://github.com/ruby/ruby/pull/6283
-
10:22 AM Bug #18974 (Closed): Wrong line number in the rescue iseq for the exception matching code
- Script for demonstration:
```
def foo
begin
raise 'error'
rescue => e
puts e.message
end
end
puts RubyVM::InstructionSequence.of(method :foo).disasm
```
Disasm for the catch table:
```
| catch type: rescue ... -
08:48 PM Misc #18975: Propose Stan Lo (@st0012) as an IRB maintainer
- It'll be my honor to help the team maintain IRB. Thank you for nominating me for this important role.
-
08:39 PM Misc #18975 (Closed): Propose Stan Lo (@st0012) as an IRB maintainer
- ## Background
Looking at @aycabta 's GitHub activity, he's been inactive on the Internet for 6~7 months, which means that IRB hasn't had the maintainer during that period of time. While I managed to sneak in some IRB changes when he was... -
08:16 PM Feature #18959: Handle gracefully nil kwargs eg. **nil
- 2. => more specifically `.tap(&:compact!)` since `compact!` may return `nil` if nothing changed.
3. there might be also a case when you want to merge another hash under some conditions, eg.:
```ruby
{
some: 'value',
**({ id: id, na... -
02:44 PM Feature #18959: Handle gracefully nil kwargs eg. **nil
- LevLukomskyi (Lev Lukomskyi) wrote in #note-6:
> `compact` way looks good indeed, although:
> ...
I think such use case would be a design failure. `nil` generally represents absence of a valid value. Sometimes having `nil` and sometime... -
11:09 AM Feature #18959: Handle gracefully nil kwargs eg. **nil
- `compact` way looks good indeed, although:
1. it removes all `nil`s from the hash, which might be undesired in some cases
2. it creates hash duplicate each time, while kwargs way creates temporary hash only if a condition is met, though ... -
08:00 PM Bug #18973: Kernel#sprintf: %c allows codepoints above 127 for 7-bits ASCII encoding
- I am concerned about compatibility to change this. @naruse proposed to return an ASCII-8BIT string instead of raising an exception.
-
10:08 AM Bug #18973: Kernel#sprintf: %c allows codepoints above 127 for 7-bits ASCII encoding
- @nobu Looks good to me, could you commit it?
(ARG_UNUSED is not needed on `code` I think) -
01:13 AM Bug #18973: Kernel#sprintf: %c allows codepoints above 127 for 7-bits ASCII encoding
- Sorry, this.
```diff
diff --git a/enc/us_ascii.c b/enc/us_ascii.c
index 08f9072c435..9d854b12245 100644
--- a/enc/us_ascii.c
+++ b/enc/us_ascii.c
@@ -7,6 +7,12 @@
# define ENCINDEX_US_ASCII 0
#endif
+static int
+us_ascii_c... -
01:05 AM Bug #18973: Kernel#sprintf: %c allows codepoints above 127 for 7-bits ASCII encoding
- ```diff
diff --git a/regenc.c b/regenc.c
index 16d62fdf409..5cc3b778351 100644
--- a/regenc.c
+++ b/regenc.c
@@ -627,6 +627,10 @@ onigenc_single_byte_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED,
extern int
onigenc_single_by... -
07:38 PM Bug #18931: Inconsistent handling of invalid codepoints in String#lstrip and String#rstrip
- I submitted a pull request to always raise an exception for rstrip strings with broken coderange: https://github.com/ruby/ruby/pull/6282
That may not match the lstrip behavior exactly, as it complains about cases where the broken code... -
07:14 PM Bug #18883 (Rejected): parse.y: trailing comma cannot coexist with star
- After giving this some more thought, I am fairly sure this is not a bug, and I'm rejecting this. @zverok is correct, a trailing comma is an implicit splat, and you cannot have multiple splats in a multiple assignment, so a syntax error ...
-
07:04 PM Bug #18908: Allow username and password to be extracted from the http_proxy variable on Windows
- I agree that we should remove the restriction. I submitted a pull request for that: https://github.com/ruby/net-http/pull/66
-
05:54 PM Revision 28a34346 (git): Disable Ractor check on 32bit architectures
- Ractor verification requires storing the ractor id in the top 32 bits of
the object header. Unfortunately 32 bit machines only have 32 bits in
the object header. The verification code has a 32 bit left shift which
doesn't work on i686 ... - 05:43 PM Revision fa9f4d38 (git): * 2022-08-25 [ci skip]
-
05:42 PM Revision b4be3c00 (git): add --yjit-dump-iseqs param (https://github.com/Shopify/ruby/pull/332)
-
05:08 PM Bug #18970: CRuby adds an invalid header to bin/bundle (and others) which makes it unusable in Bash on Windows
- The Ruby build linked to above had incorrect bash scripts. Fixed as of now. Sorry, bad day yesterday, too many interruptions...
-
04:58 PM Bug #18945 (Closed): node_id is not initialized but it is used leading to UB
- Pull requested merged at commit:c69ad738dc7c713df547a51607917ca78df6b793
-
04:43 PM Bug #18780 (Closed): Incorrect binding receiver for C API rb_eval_string()
- Fixed by commit:5bbba76489628f4509495ebf4ba0a7aad4c0b560
-
08:59 AM Revision 0ad9cc16 (git): [rubygems/rubygems] Backport non-gnu libc on linux platform matching to Bundler
- https://github.com/rubygems/rubygems/commit/703373b41f
Co-authored-by: Loic Nageleisen <loic.nageleisen@gmail.com> -
08:45 AM Feature #18559: Allocation tracing: Objects created by the parser are attributed to Kernel.require
- I had a quick chat with @ko1, he plans to try a better implementation after RubyKaigi (mid-september).
I'll hold on this. -
01:36 AM Revision 314b76a5 (git): test/-ext-/eval/test_eval.rb: Prevent "assigned but unused variable"