summaryrefslogtreecommitdiff
path: root/NEWS.md
AgeCommit message (Collapse)Author
2021-08-22Fix links [ci skip]Kazuhiro NISHIYAMA
2021-08-17Mention update to Unicode Version 13.0.0 and Emoji Version 13.1Martin Dürst
Mention the update to Unicode Version 13.0.0 and Unicode Emoji Version 13.1 in NEWS.md. This completes issue #17750. [ci skip]
2021-08-13Revert "Pause an MJIT worker when JIT is cancelled"Takashi Kokubun
This reverts commit b64f81c81729bbc248d19af01cafde88eb60fdc7. It seems to cause a problem in --jit / --jit-wait CIs. Reverting for now.
2021-08-12Don't cancel JIT-ed code on TracePoint :classTakashi Kokubun
events get enabled
2021-08-12Pause an MJIT worker when JIT is cancelledTakashi Kokubun
2021-08-12Print JIT cancel when all JIT-ed code is cancelledTakashi Kokubun
2021-08-05Fix a link [ci skip]Kazuhiro NISHIYAMA
2021-07-23[NEWS] added [Feature #17798] [ci skip]Nobuyoshi Nakada
2021-07-23[NEWS] adjusted formats [ci skip]Nobuyoshi Nakada
2021-07-17One-line pattern matching is no longer experimentalKazuki Tsujimoto
https://github.com/ruby/dev-meeting-log/blob/master/DevelopersMeeting20210715Japan.md#feature-17724-make-the-pin-operator-support-instanceclassglobal-variables-jeremyevans0
2021-07-16Add Integer.try_convert [Feature #15211]Nobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/4654
2021-07-16Added code fence to the example in [Feature #17724] [ci skip]Nobuyoshi Nakada
2021-07-15Add pattern matching pin support for instance/class/global variablesJeremy Evans
Pin matching for local variables and constants is already supported, and it is fairly simple to add support for these variable types. Note that pin matching for method calls is still not supported without wrapping in parentheses (pin expressions). I think that's for the best as method calls are far more complex (arguments/blocks). Implements [Feature #17724] Notes: Merged: https://github.com/ruby/ruby/pull/4502
2021-07-15Add tests and NEWS [Feature #18008]NARUSE, Yui
2021-07-15Fix typo in flag in NEWS.mdPatrik Ragnarsson
Notes: Merged: https://github.com/ruby/ruby/pull/4653
2021-07-01Replace copy coroutine with pthread implementation.Samuel Williams
2021-06-23Fix a link [ci skip]Kazuhiro NISHIYAMA
2021-06-22Fix NEWS formatting.Samuel Williams
2021-06-22Add fiber scheduler news.Samuel Williams
Notes: Merged: https://github.com/ruby/ruby/pull/4593
2021-06-02Note about 07c05b6fe931337e928a89ac5ebf654862dc0ecaTakashi Kokubun
2021-05-31Change the default --jit-max-cache to 10000Takashi Kokubun
This is useful for large applications like Rails. https://k0kubun.medium.com/ruby-3-jit-can-make-rails-faster-756310f235a
2021-05-26Add NEWS about 46655156dcc37509dcb69fcd0717c110eb1c624aNARUSE, Yui
* Add Thread#native_thread_id [Feature #17853]
2021-05-17NEWS.md: mention lib/objspace/trace.rb [Feature #17762]Yusuke Endoh
2021-04-21Evaluate multiple assignment left hand side before right hand sideJeremy Evans
In regular assignment, Ruby evaluates the left hand side before the right hand side. For example: ```ruby foo[0] = bar ``` Calls `foo`, then `bar`, then `[]=` on the result of `foo`. Previously, multiple assignment didn't work this way. If you did: ```ruby abc.def, foo[0] = bar, baz ``` Ruby would previously call `bar`, then `baz`, then `abc`, then `def=` on the result of `abc`, then `foo`, then `[]=` on the result of `foo`. This change makes multiple assignment similar to single assignment, changing the evaluation order of the above multiple assignment code to calling `abc`, then `foo`, then `bar`, then `baz`, then `def=` on the result of `abc`, then `[]=` on the result of `foo`. Implementing this is challenging with the stack-based virtual machine. We need to keep track of all of the left hand side attribute setter receivers and setter arguments, and then keep track of the stack level while handling the assignment processing, so we can issue the appropriate topn instructions to get the receiver. Here's an example of how the multiple assignment is executed, showing the stack and instructions: ``` self # putself abc # send abc, self # putself abc, foo # send abc, foo, 0 # putobject 0 abc, foo, 0, [bar, baz] # evaluate RHS abc, foo, 0, [bar, baz], baz, bar # expandarray abc, foo, 0, [bar, baz], baz, bar, abc # topn 5 abc, foo, 0, [bar, baz], baz, abc, bar # swap abc, foo, 0, [bar, baz], baz, def= # send abc, foo, 0, [bar, baz], baz # pop abc, foo, 0, [bar, baz], baz, foo # topn 3 abc, foo, 0, [bar, baz], baz, foo, 0 # topn 3 abc, foo, 0, [bar, baz], baz, foo, 0, baz # topn 2 abc, foo, 0, [bar, baz], baz, []= # send abc, foo, 0, [bar, baz], baz # pop abc, foo, 0, [bar, baz] # pop [bar, baz], foo, 0, [bar, baz] # setn 3 [bar, baz], foo, 0 # pop [bar, baz], foo # pop [bar, baz] # pop ``` As multiple assignment must deal with splats, post args, and any level of nesting, it gets quite a bit more complex than this in non-trivial cases. To handle this, struct masgn_state is added to keep track of the overall state of the mass assignment, which stores a linked list of struct masgn_attrasgn, one for each assigned attribute. This adds a new optimization that replaces a topn 1/pop instruction combination with a single swap instruction for multiple assignment to non-aref attributes. This new approach isn't compatible with one of the optimizations previously used, in the case where the multiple assignment return value was not needed, there was no lhs splat, and one of the left hand side used an attribute setter. This removes that optimization. Removing the optimization allowed for removing the POP_ELEMENT and adjust_stack functions. This adds a benchmark to measure how much slower multiple assignment is with the correct evaluation order. This benchmark shows: * 4-9% decrease for attribute sets * 14-23% decrease for array member sets * Basically same speed for local variable sets Importantly, it shows no significant difference between the popped (where return value of the multiple assignment is not needed) and !popped (where return value of the multiple assignment is needed) cases for attribute and array member sets. This indicates the previous optimization, which was dropped in the evaluation order fix and only affected the popped case, is not important to performance. Fixes [Bug #4443] Notes: Merged: https://github.com/ruby/ruby/pull/4390 Merged-By: jeremyevans <code@jeremyevans.net>
2021-04-16NEWS for [Feature #15198] [ci skip]Nobuyoshi Nakada
2021-03-26Enumerable#tally with the resulting hash [Feature #17744]Nobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/4318 Merged-By: nobu <nobu@ruby-lang.org>
2021-03-21Pattern matching pin operator against expression [Feature #17411]Kazuki Tsujimoto
This commit is based on the patch by @nobu.
2021-03-16Fix a link [ci skip]Kazuhiro NISHIYAMA
2021-03-15NEWS of [Feature #12194] [ci skip]Nobuyoshi Nakada
2021-02-16Add NEWS entry for [Feature #16043]Kazuhiro NISHIYAMA
2021-02-15[DOC] NEWS for Thread::Backtrace.limit [Feature #17479]Nobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/4187
2021-02-11The Queue constructor should take an initial set of objectsChris Seaton
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org> Notes: Merged: https://github.com/ruby/ruby/pull/4140 Merged-By: nobu <nobu@ruby-lang.org>
2021-01-20Update NEWS.md about deprecationTakashi Kokubun
2021-01-17Warn Struct#initialize with only keyword args (#4070)Takashi Kokubun
* Warn Struct#initialize with only keyword args A part of [Feature #16806] * Do not warn if `keyword_init: false` is explicitly specified * Add a NEWS entry * s/in/from/ * Make sure all fields are initialized Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2021-01-14Make Module#prepend affect ancestor chain even if argument already included ↵Jeremy Evans
in receiver Previously, if a class included a module and then prepended the same module, the prepend had no effect. This changes the behavior so that the prepend has an effect unless the module is already prepended the receiver. While here, rename the origin_seen variable in include_modules_at, since it is misleading. The variable tracks whether c has been seen, not whether the origin of klass has been. Fixes [Bug #17423] Notes: Merged: https://github.com/ruby/ruby/pull/4072
2021-01-13Rename RubyVM::MJIT to RubyVM::JITTakashi Kokubun
because the name "MJIT" is an internal code name, it's inconsistent with --jit while they are related to each other, and I want to discourage future JIT implementation-specific (e.g. MJIT-specific) APIs by this rename. [Feature #17490]
2021-01-02NEWS: We have links now, and there is no changelog anymore [doc]Marc-Andre Lafortune
2021-01-02NEWS: [Feature #17312] [ci skip]Nobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/3851
2020-12-25Copy NEWS.md to doc/NEWS-3.0.0.md and update for 3.1.0Kazuhiro NISHIYAMA
2020-12-25Sort URLs by issue numbers and remove duplicated [ci skip]Kazuhiro NISHIYAMA
2020-12-25Update stdlib section for Ruby 3.0Hiroshi SHIBATA
2020-12-23Let's be more accurate [ci skip]Takashi Kokubun
2020-12-23Add NEWS entries about JIT in Jul ~ DecTakashi Kokubun
* Instance variables * Merge ivar guards on JIT https://github.com/ruby/ruby/commit/a69dd699ee630dd1086627dbca15a218a8538b6f https://github.com/ruby/ruby/commit/e4f7eee009ebe1f23ee3e5ea69ccd9ea1530bc6f * Prefer RB_OBJ_FROZEN_RAW https://github.com/ruby/ruby/commit/5611066e03fe73bdbb08cc46f79530c69975cf17 * Skip checking ROBJECT_EMBED https://github.com/ruby/ruby/commit/81a8d1cf09d59f0d69143d7896545f849f580a4e * Method inlining * Mark some Integer methods as inline https://github.com/ruby/ruby/commit/0703e014713ae92f4c8a2b31e385718dc2452eac * Allow inlining Integer#-@ and #~ https://github.com/ruby/ruby/commit/dbb4f1996939d0ce977e6b37579e28dd886428ff * Inline builtin struct aref https://github.com/ruby/ruby/commit/167d139487d67613bd02522e24476f06ffa137b7 * Make Kernel#then, #yield_self, #frozen? builtin https://github.com/ruby/ruby/commit/24fa37d87a24dc932c1d778bcaf91204f5c12a76 * (For future) Rewrite Kernel#tap with Ruby https://github.com/ruby/ruby/commit/f3a0d7a2035e9f5e0c70effd55732607e3def263 * Other optimizations * Inline constant references https://github.com/ruby/ruby/commit/53babf35ef5b643774636550ea23851e2607e076 * Lazily move PC with RUBY_VM_CHECK_INTS https://github.com/ruby/ruby/commit/5d74894f2bc4a3a18aec952d946ead3d784cb4b4 * Cache access to reg_cfp->self on JIT https://github.com/ruby/ruby/commit/d40983772966938828a28c6e89752a3e76447b9e * JIT compaction * Shrink the blocking region for compile_compact_jit_code https://github.com/ruby/ruby/commit/ed8e552d4d2c825a3f780ac8bd898eaaca7c21e7 * Stop leaving .c files for JIT compaction in /tmp https://github.com/ruby/ruby/commit/fa1250a506e9b6a1bcbf664f6b7b9c06e045d9b9 * GC of JIT-ed code * Run unload_units in the JIT worker thread https://github.com/ruby/ruby/commit/16dab6b69263ed9c816bc0283c8c1f2f95dc1027 * Avoid unloading units which have enough total_calls https://github.com/ruby/ruby/commit/d80226e7bd801fcbccf71f19ba373b7baf71a49e * Throttle unload_units https://github.com/ruby/ruby/commit/122cd35939ddf8ef7bfa17ad75570c01d0cf06ab * Throttle JIT compaction https://github.com/ruby/ruby/commit/096f54428d8000cccce430022784cb0e7cd31cb4 * Compilation speed * Eliminate IVC sync between JIT and Ruby threads https://github.com/ruby/ruby/commit/0960f56a1d773c5417e9de729e159d346aec17ca * Lazily move units from active_units to stale_units https://github.com/ruby/ruby/commit/5d8f227d0edd3c542fcac465eb82005a5f852d34 Please see https://github.com/ruby/ruby/commit/200c5f4075cb1d179c2eba5b30b5b0a500870f67 for other improvements in Jan ~ Jun.
2020-12-24NEWS.md: grammatical improvementYusuke Endoh
2020-12-23Document shareable_constant_value and other magic constants [doc]Marc-Andre Lafortune
2020-12-24Module#public_class_method also accepts a symbol array as an argumentYusuke Endoh
I'm unsure if this is intentional, but add a document anyway. [Feature #17314]
2020-12-22NEWS: fix typos and grammarMarcus Stollsteimer
2020-12-23fiddle: Update to 1.0.5Sutou Kouhei
Notes: Merged: https://github.com/ruby/ruby/pull/3970
2020-12-22NEWS: Mention deprecation warnings not being shown by defaultMarc-Andre Lafortune
Notes: Merged: https://github.com/ruby/ruby/pull/3974
2020-12-22NEWS: group keyword arguments related items togetherMarc-Andre Lafortune
Notes: Merged: https://github.com/ruby/ruby/pull/3974