{"updated":"2025-01-21T18:31:38.901410+00:00","metadata":{"_oai":{"id":"oai:ipsj.ixsq.nii.ac.jp:00083510","sets":["934:935:6750:6847"]},"path":["6847"],"owner":"11","recid":"83510","title":["CastOff:Ruby用コンパイラのライブラリとしての実装"],"pubdate":{"attribute_name":"公開日","attribute_value":"2012-08-20"},"_buckets":{"deposit":"58f1ea5d-aa44-4d46-86ec-df0d3ead12b4"},"_deposit":{"id":"83510","pid":{"type":"depid","value":"83510","revision_id":0},"owners":[11],"status":"published","created_by":11},"item_title":"CastOff:Ruby用コンパイラのライブラリとしての実装","author_link":["0","0"],"item_titles":{"attribute_name":"タイトル","attribute_value_mlt":[{"subitem_title":"CastOff:Ruby用コンパイラのライブラリとしての実装"},{"subitem_title":"CastOff: A Compiler for Ruby Implemented as a Library","subitem_title_language":"en"}]},"item_keyword":{"attribute_name":"キーワード","attribute_value_mlt":[{"subitem_subject":"[通常論文] スクリプト言語,言語処理系,コンパイラ,Ruby","subitem_subject_scheme":"Other"}]},"item_type_id":"3","publish_date":"2012-08-20","item_3_text_3":{"attribute_name":"著者所属","attribute_value_mlt":[{"subitem_text_value":"東京大学大学院情報理工学系研究科/現在,株式会社ドワンゴ"},{"subitem_text_value":"東京大学大学院情報理工学系研究科/現在,Heroku, Inc."},{"subitem_text_value":"東京大学大学院情報理工学系研究科"}]},"item_3_text_4":{"attribute_name":"著者所属(英)","attribute_value_mlt":[{"subitem_text_value":"Graduate School of Information Science and Technology, The University of Tokyo / Presently with DWANGO Co., Ltd.","subitem_text_language":"en"},{"subitem_text_value":"Graduate School of Information Science and Technology, The University of Tokyo / Presently with Heroku, Inc.","subitem_text_language":"en"},{"subitem_text_value":"Graduate School of Information Science and Technology, The University of Tokyo","subitem_text_language":"en"}]},"item_language":{"attribute_name":"言語","attribute_value_mlt":[{"subitem_language":"jpn"}]},"item_publisher":{"attribute_name":"出版者","attribute_value_mlt":[{"subitem_publisher":"情報処理学会","subitem_publisher_language":"ja"}]},"publish_status":"0","weko_shared_id":-1,"item_file_price":{"attribute_name":"Billing file","attribute_type":"file","attribute_value_mlt":[{"url":{"url":"https://ipsj.ixsq.nii.ac.jp/record/83510/files/IPSJ-TPRO0503002.pdf"},"date":[{"dateType":"Available","dateValue":"2014-08-20"}],"format":"application/pdf","billing":["billing_file"],"filename":"IPSJ-TPRO0503002.pdf","filesize":[{"value":"1.3 MB"}],"mimetype":"application/pdf","priceinfo":[{"tax":["include_tax"],"price":"660","billingrole":"5"},{"tax":["include_tax"],"price":"330","billingrole":"6"},{"tax":["include_tax"],"price":"0","billingrole":"15"},{"tax":["include_tax"],"price":"0","billingrole":"44"}],"accessrole":"open_date","version_id":"a465b466-f543-48ef-8136-e466898f4699","displaytype":"detail","licensetype":"license_note","license_note":"Copyright (c) 2012 by the Information Processing Society of Japan"}]},"item_3_creator_5":{"attribute_name":"著者名","attribute_type":"creator","attribute_value_mlt":[{"creatorNames":[{"creatorName":"芝, 哲史"},{"creatorName":"笹田, 耕一"},{"creatorName":"平木, 敬"}],"nameIdentifiers":[{}]}]},"item_3_creator_6":{"attribute_name":"著者名(英)","attribute_type":"creator","attribute_value_mlt":[{"creatorNames":[{"creatorName":"Satoshi, Shiba","creatorNameLang":"en"},{"creatorName":"Koichi, Sasada","creatorNameLang":"en"},{"creatorName":"Kei, Hiraki","creatorNameLang":"en"}],"nameIdentifiers":[{}]}]},"item_3_source_id_9":{"attribute_name":"書誌レコードID","attribute_value_mlt":[{"subitem_source_identifier":"AA11464814","subitem_source_identifier_type":"NCID"}]},"item_resource_type":{"attribute_name":"資源タイプ","attribute_value_mlt":[{"resourceuri":"http://purl.org/coar/resource_type/c_6501","resourcetype":"journal article"}]},"item_3_source_id_11":{"attribute_name":"ISSN","attribute_value_mlt":[{"subitem_source_identifier":"1882-7802","subitem_source_identifier_type":"ISSN"}]},"item_3_description_7":{"attribute_name":"論文抄録","attribute_value_mlt":[{"subitem_description":"近年,様々なスクリプト言語処理系に対してコンパイラが開発されている.これらのコンパイラは処理系に組み込む形で実装されることが多く,新しくコンパイラを開発するために,処理系そのものの再実装や,処理系の大幅な改変が行われている.このため,スクリプト言語処理系に対する新たなコンパイラの開発には多大な労力をともなう.そこで我々は,スクリプト言語RubyのCによって実装された処理系(CRuby)の機能を活用することで,処理系に対して新たに手を加えることなく動作するコンパイラCastOffを開発した.CastOffは,実行時コンパイル,コンパイル済みコードの再利用,プロファイル実行,アノテーションのサポート,脱最適化,再コンパイルなどの機能を持つ.これらの機能を,CastOffはCRubyのCによる拡張ライブラリ(C拡張)としてCRubyにいっさいの変更を加えずに実現している.本稿ではCastOffの設計と実装を述べ,CastOffの機能をRubyのC拡張でどう実現したかを詳細に解説する.そして,CastOffのようにライブラリとしてコンパイラを実装するために,どのような機能が必要かを議論する.","subitem_description_type":"Other"}]},"item_3_description_8":{"attribute_name":"論文抄録(英)","attribute_value_mlt":[{"subitem_description":"There are many compilers for scripting languages aiming at faster execution. In most cases, these compilers have been developed by modifying runtime system or by re-implementing runtime system. Therefore a large amount of development cost is needed to develop compilers for scripting languages. On this background, we developed CastOff, a compiler for the Ruby scripting language. By using features in Ruby, we developed CastOff without modifying the Ruby runtime system. CastOff has a lot of functions such as runtime compilation, reuse of compiled codes, profiling execution, annotation support, deoptimization and re-compilation. CastOff is a Ruby compiler with the above features provided as a Ruby's C extension library. In this paper, we show the detailed design and implementation of CastOff, how we implemented functions of CastOff by Ruby's C extension library. Moreover, we discuss functions required in the runtime system for developing a compiler as a library like CastOff.","subitem_description_type":"Other"}]},"item_3_biblio_info_10":{"attribute_name":"書誌情報","attribute_value_mlt":[{"bibliographicPageEnd":"22","bibliographic_titles":[{"bibliographic_title":"情報処理学会論文誌プログラミング(PRO)"}],"bibliographicPageStart":"1","bibliographicIssueDates":{"bibliographicIssueDate":"2012-08-20","bibliographicIssueDateType":"Issued"},"bibliographicIssueNumber":"3","bibliographicVolumeNumber":"5"}]},"relation_version_is_last":true,"weko_creator_id":"11"},"created":"2025-01-18T23:36:59.428343+00:00","id":83510,"links":{}}