Implementation Details of Ruby 2.0 VM).Succ

Total Page:16

File Type:pdf, Size:1020Kb

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.
Recommended publications
  • Konzeption Und Implementierung Eines Gamification Services Mit Ruby
    Konzeption und Implementierung eines Gamification Services mit Ruby Reinhard Buchinger MASTERARBEIT eingereicht am Fachhochschul-Masterstudiengang Interaktive Medien in Hagenberg im Dezember 2012 © Copyright 2012 Reinhard Buchinger Diese Arbeit wird unter den Bedingungen der Creative Commons Lizenz Namensnennung–NichtKommerziell–KeineBearbeitung Österreich (CC BY- NC-ND) veröffentlicht – siehe http://creativecommons.org/licenses/by-nc-nd/ 3.0/at/. ii Erklärung Ich erkläre eidesstattlich, dass ich die vorliegende Arbeit selbstständig und ohne fremde Hilfe verfasst, andere als die angegebenen Quellen nicht benutzt und die den benutzten Quellen entnommenen Stellen als solche gekennzeich- net habe. Die Arbeit wurde bisher in gleicher oder ähnlicher Form keiner anderen Prüfungsbehörde vorgelegt. Hagenberg, am 3. Dezember 2012 Reinhard Buchinger iii Inhaltsverzeichnis Erklärung iii Kurzfassung vii Abstract viii 1 Einleitung 1 1.1 Motivation und Zielsetzung . .1 1.2 Inhaltlicher Aufbau . .2 2 Grundlagen 3 2.1 Gamification . .3 2.1.1 Verfolgte Ziele . .3 2.1.2 Geläufige Spielemechanismen . .4 2.1.3 Frühere Formen . .4 2.2 Apache Cassandra . .6 2.2.1 Datenmodell im Vergleich zu RDBMS . .6 2.2.2 Vorteile im Clusterbetrieb . .7 2.3 Apache ZooKeeper . .7 2.4 RabbitMQ . .9 2.5 Memcached . 10 2.6 Ruby . 11 2.6.1 JRuby . 11 2.6.2 Gems . 12 2.7 Domänenspezifische Sprachen . 14 2.7.1 Vorteile . 14 2.7.2 Nachteile . 15 2.7.3 DSL in Ruby . 15 2.8 runtastic . 15 2.8.1 Produktpalette . 16 2.8.2 Infrastruktur . 16 3 Verwandte Systeme und Anforderungen 19 3.1 Verwandte Systeme . 19 iv Inhaltsverzeichnis v 3.1.1 Gamification Systeme .
    [Show full text]
  • Snow Blocks Rescuers in West Coast Flood
    . ^ * A r t n g m Daflj Net PrcM Rim The Weather War tka Week Dniled r o n e u l of U. S. WeMher Were— Deeeilibee U , 1»M ' Fair, cidder tonight, low ih>-SS; 14,151 fair, HMIe temperature ehaiige to­ Memhnr at the Audit morrow, high in Ma. Poi ee u of ClreoUtion Manehe»ter^-^A CUy o f ViUage Charm VOL. LXXXIV, NO. 74 (TWENTY-FOUR PAGES—TWO SECTIONS) MANCHESTER, CONN., MONDAY, DECEMBER 28, 1964 (Claaslfied Advertialng on Page tZ) PRICE SEVEN CENTS Events In State Snow Blocks Rescuers State Denies Bus Request In West Coast Flood For Enfield --------- \ HARTFORD (A P )— The SAN FRANCISCO (AP)-*'n"t take off from Stead Alr^ Oregon reported 18 deaths<^day halted helicopter flights fa Stale has denied a bus Force Base in Nevada because from '1“flood '' action." " " — the area. The prediction was for — A heavy snowfall block of the storm. line’s request to serve En- ed flood relief flights in The Red Cross listed 16.300 contin\ied snow today. The turn to cold dropped the families as suffering major loss­ "W e’ll have to airlift supplies n iield commuters who work Northern California today snow level to 1,000 feet eleva­ es to homes, businesses or or evacuate soon.” Sowle said. in East Hartford but ap­ and prolonged the isolation tion. farms in Oregon, California, He called those isolated In the proved a similar request ordeal of sTOnded refugees The Columbia dropped enough Idaho and Washington, mountainous, heavily wooded from a competitor. into an eighth day.
    [Show full text]
  • Node.Js: Building for Scalability with Server-Side Javascript
    #141 CONTENTS INCLUDE: n What is Node? Node.js: Building for Scalability n Where does Node fit? n Installation n Quick Start with Server-Side JavaScript n Node Ecosystem n Node API Guide and more... By Todd Eichel Visit refcardz.com Consider a food vending WHAT IS NODE? truck on a city street or at a festival. A food truck In its simplest form, Node is a set of libraries for writing high- operating like a traditional performance, scalable network programs in JavaScript. Take a synchronous web server look at this application that will respond with the text “Hello would have a worker take world!” on every HTTP request: an order from the first customer in line, and then // require the HTTP module so we can create a server object the worker would go off to var http = require(‘http’); prepare the order while the customer waits at the window. Once Get More Refcardz! Refcardz! Get More // Create an HTTP server, passing a callback function to be the order is complete, the worker would return to the window, // executed on each request. The callback function will be give it to the customer, and take the next customer’s order. // passed two objects representing the incoming HTTP // request and our response. Contrast this with a food truck operating like an asynchronous var helloServer = http.createServer(function (req, res) { web server. The workers in this truck would take an order from // send back the response headers with an HTTP status the first customer in line, issue that customer an order number, // code of 200 and an HTTP header for the content type res.writeHead(200, {‘Content-Type’: ‘text/plain’}); and have the customer stand off to the side to wait while the order is prepared.
    [Show full text]
  • State of Tennessee Fiscal Year 2018-19
    STATE OF TENNESSEE FISCAL YEAR 2018-19 CONSOLIDATED ANNUAL PERFORMANCE AND EVALUATION REPORT TENNESSEE HOUSING DEVELOPMENT AGENCY TENNESSEE DEPARTMENT OF ECONOMIC AND COMMUNITY DEVELOPMENT TENNESSEE DEPARTMENT OF HEALTH 1 CR-05 - Goals and Outcomes Progress the jurisdiction has made in carrying out its strategic plan and its action plan. This could be an overview that includes major initiatives and highlights that were proposed and executed throughout the program year. CDBG – A total of 82 contracts were awarded to city governments, county governments, and other subrecipients totaling expenditures of $29,159,102 through the CDBG program. This amount included the FY 2018-19 award amount plus additional funds that were recaptured, unspent funds from completed projects from previous years, and CDBG loan repayment funds from the CDBG Economic Development Loan Program. A total of 314,204 low- and moderate-income (LMI) persons were assisted. HOME – In total, Tennessee Housing Development Agency (THDA) expended $7,334,823.70 in program funds during FY 2018-19. A total of 153 housing units were assisted with HOME dollars, which were funded by previous allocations but completed during FY 2018-19. Out of the 153 households assisted during the reporting period, 49 were extremely low-income, 58 were considered very low-income, and 45 were considered low-income. One unit was vacant. ESG - A total of $3,179,778.12 was expended through the ESG program for this reporting period. ESG contracts were awarded to 33 agencies and cities during this reporting period. Total ESG funding during the reporting period assisted more than 7,793 low-, very low-, and extremely low-income persons.
    [Show full text]
  • Specialising Dynamic Techniques for Implementing the Ruby Programming Language
    SPECIALISING DYNAMIC TECHNIQUES FOR IMPLEMENTING THE RUBY PROGRAMMING LANGUAGE A thesis submitted to the University of Manchester for the degree of Doctor of Philosophy in the Faculty of Engineering and Physical Sciences 2015 By Chris Seaton School of Computer Science This published copy of the thesis contains a couple of minor typographical corrections from the version deposited in the University of Manchester Library. [email protected] chrisseaton.com/phd 2 Contents List of Listings7 List of Tables9 List of Figures 11 Abstract 15 Declaration 17 Copyright 19 Acknowledgements 21 1 Introduction 23 1.1 Dynamic Programming Languages.................. 23 1.2 Idiomatic Ruby............................ 25 1.3 Research Questions.......................... 27 1.4 Implementation Work......................... 27 1.5 Contributions............................. 28 1.6 Publications.............................. 29 1.7 Thesis Structure............................ 31 2 Characteristics of Dynamic Languages 35 2.1 Ruby.................................. 35 2.2 Ruby on Rails............................. 36 2.3 Case Study: Idiomatic Ruby..................... 37 2.4 Summary............................... 49 3 3 Implementation of Dynamic Languages 51 3.1 Foundational Techniques....................... 51 3.2 Applied Techniques.......................... 59 3.3 Implementations of Ruby....................... 65 3.4 Parallelism and Concurrency..................... 72 3.5 Summary............................... 73 4 Evaluation Methodology 75 4.1 Evaluation Philosophy
    [Show full text]
  • Ruby Refaktorálása
    EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR KOMPUTERALGEBRA TANSZÉK Ruby refaktorálása Sebestyén Gábor programtervező matematikus Témavezető Dr. Kovács Attila Budapest, 2010 Tartalomjegyzék Bevezető................................................................................................................................. 4 Mi a Ruby? ............................................................................................................................ 7 A Ruby rövid története...................................................................................................... 7 A futtatási környezetről röviden........................................................................................ 8 A Ruby nyelv alapjai......................................................................................................... 9 Kommentek..................................................................................................................... 10 A változók........................................................................................................................10 Operátorok ...................................................................................................................... 12 Vezérlési szerkezetek ......................................................................................................13 Ciklusok...........................................................................................................................16 Break, redo és next.........................................................................................................
    [Show full text]
  • Building Blocks of a Scalable Web Crawler
    Building blocks of a scalable web crawler Marc Seeger Computer Science and Media Stuttgart Media University September 15, 2010 A Thesis Submitted in Fulfilment of the Requirements for a Degree of Master of Science in Computer Science and Media Primary thesis advisor: Prof. Walter Kriha Secondary thesis advisor: Dr. Dries Buytaert I I Abstract The purpose of this thesis was the investigation and implementation of a good architecture for collecting, analysing and managing website data on a scale of millions of domains. The final project is able to automatically collect data about websites and analyse the content management system they are using. To be able to do this efficiently, different possible storage back-ends were examined and a system was implemented that is able to gather and store data at a fast pace while still keeping it searchable. This thesis is a collection of the lessons learned while working on the project combined with the necessary knowledge that went into architectural decisions. It presents an overview of the different infrastructure possibilities and general approaches and as well as explaining the choices that have been made for the implemented system. II Acknowledgements I would like to thank Acquia and Dries Buytaert for allowing me to experience life in the USA while working on a great project. I would also like to thank Chris Brookins for showing me what agile project management is all about. Working at Acquia combined a great infrastructure and atmosphere with a pool of knowledgeable people. Both these things helped me immensely when trying to find and evaluate a matching architecture to this project.
    [Show full text]
  • Ruby Programming
    Ruby Programming Wikibooks.org December 1, 2012 On the 28th of April 2012 the contents of the English as well as German Wikibooks and Wikipedia projects were licensed under Creative Commons Attribution-ShareAlike 3.0 Unported license. An URI to this license is given in the list of figures on page 249. If this document is a derived work from the contents of one of these projects and the content was still licensed by the project under this license at the time of derivation this document has to be licensed under the same, a similar or a compatible license, as stated in section 4b of the license. The list of contributors is included in chapter Contributors on page 243. The licenses GPL, LGPL and GFDL are included in chapter Licenses on page 253, since this book and/or parts of it may or may not be licensed under one or more of these licenses, and thus require inclusion of these licenses. The licenses of the figures are given in the list of figures on page 249. This PDF was generated by the LATEX typesetting software. The LATEX source code is included as an attachment (source.7z.txt) in this PDF file. To extract the source from the PDF file, we recommend the use of http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ utility or clicking the paper clip attachment symbol on the lower left of your PDF Viewer, selecting Save Attachment. After extracting it from the PDF file you have to rename it to source.7z. To uncompress the resulting archive we recommend the use of http://www.7-zip.org/.
    [Show full text]
  • The Ruby Intermediate Language ∗
    The Ruby Intermediate Language ∗ Michael Furr Jong-hoon (David) An Jeffrey S. Foster Michael Hicks University of Maryland, College Park ffurr,davidan,jfoster,[email protected] Abstract syntax that is almost ambiguous, and a semantics that includes Ruby is a popular, dynamic scripting language that aims to “feel a significant amount of special case, implicit behavior. While the natural to programmers” and give users the “freedom to choose” resulting language is arguably easy to use, its complex syntax and among many different ways of doing the same thing. While this ar- semantics make it hard to write tools that work with Ruby source guably makes programming in Ruby easier, it makes it hard to build code. analysis and transformation tools that operate on Ruby source code. In this paper, we describe the Ruby Intermediate Language In this paper, we present the Ruby Intermediate Language (RIL), (RIL), an intermediate language designed to make it easy to ex- a Ruby front-end and intermediate representation that addresses tend, analyze, and transform Ruby source code. As far as we are these challenges. RIL includes an extensible GLR parser for Ruby, aware, RIL is the only Ruby front-end designed with these goals in and an automatic translation into an easy-to-analyze intermediate mind. RIL provides four main advantages for working with Ruby form. This translation eliminates redundant language constructs, code. First, RIL’s parser is completely separated from the Ruby in- unravels the often subtle ordering among side effecting operations, terpreter, and is defined using a Generalized LR (GLR) grammar, and makes implicit interpreter operations explicit.
    [Show full text]
  • Towards Left Duff S Mdbg Holt Winters Gai Incl Tax Drupal Fapi Icici
    jimportneoneo_clienterrorentitynotfoundrelatedtonoeneo_j_sdn neo_j_traversalcyperneo_jclientpy_neo_neo_jneo_jphpgraphesrelsjshelltraverserwritebatchtransactioneventhandlerbatchinsertereverymangraphenedbgraphdatabaseserviceneo_j_communityjconfigurationjserverstartnodenotintransactionexceptionrest_graphdbneographytransactionfailureexceptionrelationshipentityneo_j_ogmsdnwrappingneoserverbootstrappergraphrepositoryneo_j_graphdbnodeentityembeddedgraphdatabaseneo_jtemplate neo_j_spatialcypher_neo_jneo_j_cyphercypher_querynoe_jcypherneo_jrestclientpy_neoallshortestpathscypher_querieslinkuriousneoclipseexecutionresultbatch_importerwebadmingraphdatabasetimetreegraphawarerelatedtoviacypherqueryrecorelationshiptypespringrestgraphdatabaseflockdbneomodelneo_j_rbshortpathpersistable withindistancegraphdbneo_jneo_j_webadminmiddle_ground_betweenanormcypher materialised handaling hinted finds_nothingbulbsbulbflowrexprorexster cayleygremlintitandborient_dbaurelius tinkerpoptitan_cassandratitan_graph_dbtitan_graphorientdbtitan rexter enough_ram arangotinkerpop_gremlinpyorientlinkset arangodb_graphfoxxodocumentarangodborientjssails_orientdborientgraphexectedbaasbox spark_javarddrddsunpersist asigned aql fetchplanoriento bsonobjectpyspark_rddrddmatrixfactorizationmodelresultiterablemlibpushdownlineage transforamtionspark_rddpairrddreducebykeymappartitionstakeorderedrowmatrixpair_rddblockmanagerlinearregressionwithsgddstreamsencouter fieldtypes spark_dataframejavarddgroupbykeyorg_apache_spark_rddlabeledpointdatabricksaggregatebykeyjavasparkcontextsaveastextfilejavapairdstreamcombinebykeysparkcontext_textfilejavadstreammappartitionswithindexupdatestatebykeyreducebykeyandwindowrepartitioning
    [Show full text]
  • Rubyconf 2005 Oct
    YARV Progress Report RubyConf 2005 Oct. 14 SASADA Koichi Tokyo University of Agriculture and Technology Nihon Ruby no Kai [email protected] 1 Agenda Self Introduction and Japanese Activities Overview of YARV Goal of YARV Current YARV Status • YARV Design, Optimization Review • Evaluation Conclusion 2 Self Introduction “SASADA” the family name “Koichi” is given name → “ko1” Not a A Student for Ph.D. 2nd grade Son-shi • Systems Software for Multithreaded Arch. • SMT / CMP or other technologies • i.e.: Hyper threading (Intel), CMT (Sun), Power (IBM) • OS, Library, Compiler and Interpreter • YARV is my first step for Parallel interpreter (?) • Computer Architecture for Next Generation At Public Position 3 Well known as Self Introduction (contT.)akahashi Method Nihon Ruby no Kai • Organized by Mr. Takahashi (maki) Rubyist Magazine (http://jp.rubyst.net/magazine) • vol. 10 at 10th Oct. 2005 • 1st anniversary at 6th Sep. 2005 (vol. 9) Ruby-dev summary English Diary some days • But retired… 4 Overview of YARV 5 Overview: Background Ruby is used world-wide, one of the Most Comfortable Programming Language Ruby is slow, because interpreter doesn’t use Virtual Machine techniques → We need RubyVM! 6 Overview: YARV YARV: Yet Another RubyVM • Started development on 1st Jan. 2004 • At that time, there were some VMs for Ruby • Simple Stack Virtual Machine http://www.atdot.net/yarv/ Ruby’s license, of course 7 Overview: FAQ (review of last year FAQ) Q: How does “YARV” pronounce? A: You can pronounce “YARV” what you like. Q: Should I remember the name of “YARV”? A: No. If YARV succeeds, it renames to Rite, if doesn’t, no one remember YARV.
    [Show full text]
  • An Efficient and Thread-Safe Object Representation for Jruby+Truffle
    An efficient and thread-safe object representation for JRuby+Truffle Benoit Daloze Johannes Kepler University Who am I? I PhD student at Johannes Kepler University, Austria I Research with JRuby+Truffle on concurrency I Maintainer of the Ruby Spec Suite Benoit Daloze Twitter: @eregontp I MRI and JRuby committer GitHub: @eregon How is it executed? @ivar @ivar= value MRI 1.8 YARV JRuby+Truffle Summary in Ruby code The Problem One solution Update on JRuby+Truffle Conclusion MRI 1.8: Finding ’@’ in the parser // parse.y yylex() { switch (character) { case ’@’: result= tIVAR; } } variable: tIVAR| ... var_ref: variable { node= gettable(variable); } MRI 1.8: In the Abstract Syntax Tree // parse.y NODE* gettable(ID id) { if (is_instance_id(id)) { return NEW_NODE(NODE_IVAR, id); } ... } // node.h enum node_type { NODE_IVAR, ... }; MRI 1.8: The interpreter execution loop // eval.c VALUE rb_eval(VALUE self, NODE* node) { again: switch (nd_type(node)) { case NODE_IVAR: result= rb_ivar_get(self, node->nd_vid); break; ... } } MRI 1.8: Reading the variable from the object // variable.c VALUE rb_ivar_get(VALUE obj, ID id) { VALUE val; switch (TYPE(obj)) { case T_OBJECT: if (st_lookup(ROBJECT(obj)->iv_tbl, id,&val)) return val; break; ... } return Qnil; } MRI 1.8: The @ivar hash table // st.c bool st_lookup(table, key, value) { int hash_val= do_hash(key, table); if (FIND_ENTRY(table, ptr, hash_val, bin_pos)) { *value= ptr->record; return true; } ... } MRI 1.8 YARV JRuby+Truffle Summary in Ruby code The Problem One solution Update on JRuby+Truffle Conclusion YARV: In the bytecode compiler // compile.c int iseq_compile_each(rb_iseq_t* iseq, NODE* node) { switch (nd_type(node)) { case NODE_IVAR: ADD_INSN(getinstancevariable, node->var_id); break; ..
    [Show full text]