[#72745] [Ruby trunk - Misc #11876] [Closed] Scheduled maintenance 2016/01/01 — shibata.hiroshi@...
Issue #11876 has been updated by Hiroshi SHIBATA.
shibata.hiroshi@gmail.com wrote:
[#72824] [Ruby trunk - Bug #11973] IO#advise should raise NotImplementedError on platforms that do not support that call — git@...
Issue #11973 has been updated by Chuck Remes.
[#72954] [Ruby trunk - Feature #12010] [Assigned] Exclude dot and dotdot from Dir#each — naruse@...
Issue #12010 has been reported by Yui NARUSE.
naruse@airemix.jp wrote:
[#73313] [Ruby trunk - Bug #12007] [Open] Newly added Unicode data file doesn't get downloaded — shugo@...
Issue #12007 has been updated by Shugo Maeda.
[#73372] [Ruby trunk - Misc #12004] Code of Conduct — benton@...
Issue #12004 has been updated by Benton Barnett.
On Sun, Jan 24, 2016 at 5:13 PM, <benton@bentonbarnett.com> wrote:
[#73421] [Ruby trunk - Misc #12004] Code of Conduct — nekocat432@...
Issue #12004 has been updated by Ruby Dino.
I’m sorry, but this, like the code of merit, is merely a derailing tactic.
On 2016/01/26 01:32, Austin Ziegler wrote:
On Tue, Jan 26, 2016 at 12:25 AM, Martin J. Dürst <duerst@it.aoyama.ac.jp>
[#73491] [Ruby trunk - Misc #12004] Code of Conduct — git@...
Issue #12004 has been updated by Chuck Remes.
They will never provide any numbers because they are not engineers and they
Coraline is a panelist on Ruby rogues and a very well respected member of
OK, sorry for previous comment. Let's try this way.
On Tue, Jan 26, 2016 at 5:15 PM, Andrew Kirilenko <
[#73558] [Ruby trunk - Misc #12004] Code of Conduct — andrew.kirilenko@...
Issue #12004 has been updated by Andrew Kirilenko.
Andrew, please stop digging. Your hole is only getting deeper.
>Andrew, please stop digging. Your hole is only getting deeper.
[#73586] [Ruby trunk - Misc #12004] Code of Conduct — andrew@...
Issue #12004 has been updated by Andrew Vit.
[#73593] [Ruby trunk - Bug #12034] RegExp does not respect file encoding directive — nobu@...
Issue #12034 has been updated by Nobuyoshi Nakada.
[ruby-core:72645] [Ruby trunk - Feature #11934] A feature to drop dynamics dynamically
Issue #11934 has been updated by Yusuke Endoh. Eric, thank you for your comment. > We already allow "freeze" on classes and modules; perhaps we perform > some optimizations when they become frozen: perfect hashing, > rehash/repack hashes for locality, reducing checks in bytecode, etc... Is constant folding possible? And method inlining? They may be possible, but I guess the effect will be restricted. To get the best of the optimizations, I think we need to freeze all classes and modules, including singleton classes. Personally I don't want to recommend "freeze on classes/modules" because some people may use them blindly, like `"string".freeze`. If it is widely used by default in many libraries for the purpose of performance improvement, Ruby's dynamics may be killed in effect. Instead, switching on the whole VM looks a better choice to me. In addition, it would be good to include "frozen string literal by default" into this mode. It is impossible by "freeze on classes/modules". > That should be both backwards and forwards compatible with > old/parallel/future Ruby implementations and have better granularity > instead of the whole VM. Compatibility will be kept perfectly unless this feature is used. In fact, this is one of the motivation of this proposal. Recently, Ruby tends to sacrifice dynamics for performance improvement (such as frozen string literal by default). I'd like to stop this and provide better "playing field" for users and developers who are interested in optimization. -- Yusuke Endoh <mame@ruby-lang.org> ---------------------------------------- Feature #11934: A feature to drop dynamics dynamically https://bugs.ruby-lang.org/issues/11934#change-55896 * Author: Yusuke Endoh * Status: Feedback * Priority: Normal * Assignee: ---------------------------------------- Ruby is a dynamic language. Everything is possible in runtime. So, how about a feature to prohibit some dynamic features in runtime? ~~~~ Foo = 1 RubyVM.drop_dynamics Bar = 2 #=> cannot define new constant Foo = 2 #=> cannot redefine a constant def foo; end #=> cannot define a method class Baz; end #=> cannot create a new class ~~~~ Ruby's dynamic property greatly restricts performance. However, it is a bad idea to limit Ruby's dynamics. It is Ruby's identity, and is actually useful in some aspects such as debugging, daily-scripting, research, hobby-use, etc. That being said, when a program is in production, we don't necessarily use the dynamic features at any time during execution. Typically, they are used only in initialization of application, such as eval-for-DRY and monkey patching. After the initialization is done, we can drop (some of) dynamic features in some situations. Currently, when considering optimization of Ruby implementation, we (the core-team) must always care the possibility of redefinition of any built-in methods. That is not sound. This proposal gives us a "normal" condition for considering optimization. We can easily apply a lot of optimizations, like constant folding and method inline expansion. In addition, some advanced analyses like JIT/AOT compilation, type inference and whole program optimization will be applicable much more effectively. -- It is arguable what features are prohibited. IMO, it is relatively easy to drop the following features. * (re)definition of constants * (re)definition of methods (including singleton methods an aliases) * (re)definition of classes/modules * inclusion of modules Aggressively, we may limit the following features. * destructive modification of some kind of objects (such as making string literal frozen by default) * some meta-programming features like `Object#send` * `eval` and `instance_eval` * addition of instance variables * XXX <- feel free to add your unfavorite features We should care about a trade-off between compatibility impact and optimization effect. -- I'm half-joking, but half-serious. I'm unsure if this is really a great idea, but surely better than just restricting Ruby specification by default (such as frozen string literal). This may be a key feature towards Ruby3x3. What do you think? -- Yusuke Endoh <mame@ruby-lang.org> -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>