Implementation Details of Ruby 2.0 VM).Succ

Implementation Details of Ruby 2.0 VM).Succ

(Implementation Details of Ruby 2.0 VM).succ 笹田 耕一 Koichi Sasada [email protected] @koichisasada 1 (“Implementation Details of Ruby 2.0 VM”).succ #=> "Implementation Details of Ruby 2.0 VN" 笹田 耕一 Koichi Sasada [email protected] @koichisasada 2 (Implementation Details of Ruby 2.0 VM).succ != Ruby 2.0 sucks 笹田 耕一 Koichi Sasada [email protected] @koichisasada 3 (Implementation Details of Ruby 2.0 VM).succ == Ruby 2.0 Rocks! 笹田 耕一 Koichi Sasada [email protected] @koichisasada 4 Disclaimer • (As you can see) I can speak English little. http://www.flickr.com/photos/andosteinmetz/2901325908/ • Ask me an questions in 日本語 Japanese (WELCOME!), Ruby or SLOW English • All of I want to say is on the screen. You can read them. 5 Who am I ? • 笹田耕一 (Koichi Sasada) – Matz team at Heroku, Inc. • Full-time CRuby development – CRuby/MRI committer • Virtual machine (YARV) from Ruby 1.9 • YARV development since 2004/1/1 – 2.0 Release manager assistant • Organizing feature request • Many mails to ruby-core/ruby-dev 6 Matz team at Heroku, Inc. Matz @ Shimane Boss Communication with Skype ko1 @ Tokyo Nobu @ Tochigi me Drunker 7 Commit number/day of Ruby's trunk 90 80 70 60 50 40 total 30 20 10 0 8 Commit number/day of Ruby's trunk 90 80 70 60 50 40 total 30 matz 20 10 0 9 Commit number/day of Ruby's trunk 90 80 70 60 50 total 40 matz 30 20 ko1 10 0 10 Commit number/day of Ruby's trunk 90 80 70 60 total 50 40 matz 30 ko1 20 nobu 10 0 11 Today’s topics • Ruby 2.0 Features • Ruby 2.0 Optimizations – Method dispatch • After Ruby 2.0 12 Ruby 2.0 20th Anniversary Release of Ruby language will be release at 2013/02/24 (Fixed) ADD (Anniversary Driven Development) 13 Ruby 2.0 Release policy • Compatibility (Ruby level) • Compatibility (Ruby level) • Compatibility (Ruby level) • Usability • Performance 14 Ruby 2.0 Roadmap 2012/Dec 2013/2/24 2012/Oct Now 2013/Jan Ruby 2.0 Release Feature freeze Preview2 RC1 (20th anniversary) 2012/Aug 2012/Nov 2012/Dec 2013/Feb “Big-feature” freeze Preview1 X’mas RC2 (was ignored) Code freeze Only about *few weeks* to introduce new codes “[ruby-core:40301] A rough release schedule for 2.0.0” and Endo-san’s (release manager) leak 15 Introduction of Ruby 2.0 features What features are introduced? 16 # -*- rdoc -*- "Fiber#transfer". * __callee__ has returned * added nil.to_h which variable has been set. * new methods: This version is largely now stringifies the given * String#chars to the original behavior, and returns {} * added * Net::HTTP#local_host OpenSSL::SSL::OP_DONT_INSE backwards-compatible with object using to_s. * String#codepoints = NEWS for Ruby 2.0.0 * File now Thread#backtrace_locations * Net::HTTP#local_host= RT_EMPTY_FRAGMENTS. previous rdoc versions. * Shellwords#shelljoin() * String#bytes * extended method: returns the called name * Process which returns similar * Net::HTTP#local_port * OpenSSL requires The most notable change is accepts non-string objects in but not the original name in an information of passwords for decrypting an update to the ri data format the given This document is a list of user * File.fnmatch? now * added method: * Net::HTTP#local_port= These methods no longer aliased method. Kernel#caller_locations. PEM-encoded files to be at (ri data must array, each of which is visible feature changes made expands braces in the pattern * added getsid for getting * extended method: return an Enumerator, * Kernel#inspect does not * incompatible changes: least be regenerated for gems stringified using to_s. between if session id (unix only). * Net::HTTP#connect uses although passing a call #to_s anymore * Thread#join and four characters long. This shared across rdoc versions). releases except for bug fixes. File::FNM_EXTGLOB local_host and local_port if led to awkward situations Further API changes block is still supported for option is given. (it used to call redefined * Range Thread#value now raises a specified. * syslog backwards compatibility. #to_s). ThreadError if target thread where an export with are internal and won't affect Note that each entry is kept so * added method: * Added Syslog::Logger which is the current or main a password with fewer than most users. provides a Logger API atop brief that no reason behind or * GC * added Range#size for lazy * net/imap four characters was possible, Code like * LoadError thread. Syslog. reference information is * improvements: size evaluation. * new methods: but accessing the str.lines.with_index(1) { |line, * added method: See * Syslog::Priority, lineno| ... } no longer supplied with. For a full list of * introduced the bitmap * added Range#bsearch for * Net::IMAP.default_port file afterwards failed. https://github.com/rdoc/rdoc/ changes * added LoadError#path * Time Syslog::Level, Syslog::Option works because str.lines marking which suppresses to binary search. * OpenSSL::PKey::RSA, blob/master/History.rdoc for a and Syslog::Macros with all sufficient information, copy a memory page method to return the file * change return value: OpenSSL::PKey::DSA and list of returns an array. Replace lines name that could not be Net::IMAP.default_imap_port are introduced for easy with see the ChangeLog file. with Copy-on-Write. * Signal * Time#to_s returned OpenSSL::PKey::EC changes in rdoc 4.0. loaded. encoding defaults to US-ASCII * detection of available each_line in such cases. * introduced the non- * added method: Net::IMAP.default_tls_port therefore now enforce the constants on a == Changes since the 1.9.3 recursive marking which but automatically same check when exporting a * added Signal.signame transcodes to * * resolv running system. release avoids unexpected stack * Module which returns signal name Net::IMAP.default_ssl_port private key to PEM with a * Signal.trap overflow. Encoding.default_internal if it password - it has to be at least * new methods: * added method: * is set. four characters * Resolv::DNS#timeouts= * tmpdir === C API updates * added Module#prepend * incompatible changes: Net::IMAP.default_imaps_port See above. * GC::Profiler which is similar to long. * * incompatible changes: * NUM2SHORT() and * Signal.trap raises Resolv::DNS::Config#timeouts NUM2USHORT() added. They * added method: Module#include, * TracePoint * SSL/TLS support for the * Dir.mktmpdir uses ArgumentError * objspace = FileUtils.remove_entry instead * Merge Onigmo. are similar to NUM2INT, but * added however a method in the * new class. This class is Next Protocol Negotiation when :SEGV, :BUS, :ILL, :FPE, : replacement of set_trace_func. * new method: extension. Supported of https://github.com/k- short. GC::Profiler.raw_data which prepended module overrides VTALRM takata/Onigmo * rb_newobj_of() and returns raw profile data for GC. the Easy to use and efficient * with OpenSSL 1.0.1 and * rexml are specified. ObjectSpace.reachable_object FileUtils.remove_entry_secure. NEWOBJ_OF() added. They corresponding method in implementation. higher. * REXML::Document#write create a new object of a given the prepending module. s_from(obj) * OpenSSL::OPENSSL_FIPS supports Hash arguments. This means that applications * The :close_others option is * Hash should not true by default for system() class. * added Module#refine, * String * toplevel allows client applications to * REXML::Document#write * added method: change the permission of and exec(). which extends a class or * added method: * added method: * openssl detect whether OpenSSL supports new :encoding * added Hash#to_h as module locally. * added String#b returning * Consistently raise an error is running in FIPS mode and option. It changes the created temporary Also, the close-on-exec flag === Library updates explicit conversion method, * added directory to make is set by default for all new file (outstanding ones only) [experimental] a copied string whose when trying to encode nil to react to the special XML document encoding. like Array#to_a. main.define_method which accessible from other users. descriptors. * added encoding is ASCII-8BIT. defines a global function. values. All instances requirements this Without :encoding option, * extended method: * change return value: of OpenSSL::ASN1::Primitive might impy. encoding in This means file descriptors * builtin classes Module#refinements, which doesn't inherit to spawned * Hash#default_proc= can returns refinements defined in * String#lines now returns now raise TypeError when XML declaration is used for * yaml be passed nil to clear the * cgi process unless the an array instead of an calling to_der on an * ostruct XML document encoding. * Syck has been removed. * Array default proc. enumerator. * Add HTML5 tag maker. instance whose value is nil. YAML now completely explicitly requested such as receiver. [experimental] * new methods: system(..., fd=>fd). * added method: * String#chars now returns * CGI#header has been All instances of * RubyGems depends on libyaml being * added Module#using, renamed to CGI#http_header * OpenStruct#[], []= * added Array#bsearch for * Kernel which imports refinements an array instead of an OpenSSL::ASN1::Constructive * Updated to 2.0.0.preview2 installed. binary search. and * OpenStruct#each_pair * Kernel#respond_to? * added method: into the receiver. enumerator. raise NoMethodError in the * incompatible changes: aliased to CGI#header. same case. Constructing such * OpenStruct#eql? against a protected method * added Kernel#Hash [experimental] * String#codepoints now RubyGems 2.0.0 features * zlib * random parameter of conversion method like Array() returns an array instead of an * When HTML5 tagmaker values is still * OpenStruct#hash now returns false You * extended method: cancalled, overwrite readCGI#header, themthe following improvements: * Added streaming support unless the second argument Array#shuffle! and or Float(). enumerator. permitted. * OpenStruct#to_h converts * Module#define_method for Zlib::Inflate and is true. Array#sample now * added Kernel#using, * String#bytes now returns CGI#header function is to * TLS 1.1 & 1.2 support by the struct to a hash. Zlib::Deflate. This allows accepts a UnboundMethod create a <header> element. * Improved support for will be called with one which imports refinements from a Module. an array instead of an setting * extended method: processing of a stream argument, maximum value. into the current scope.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    92 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us