Submit Search
Upload
最速で最速のRuby擴張を作る
•
0 likes
•
284 views
Sachirou Inoue
Follow
CrystalでRubyの擴張を書く https://github.com/ne-sachirou/sample_ruby_extension_in_crystal
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 23
Download now
Download to read offline
Recommended
Rx Showcase
Rx Showcase
Takaaki Suzuki
Goで書くNeoVimプラグイン - OpenAppLab Aizu LT feat. CyberAgent
Goで書くNeoVimプラグイン - OpenAppLab Aizu LT feat. CyberAgent
Reo Yamada
concrete5 5.7でテーマ作ってみよう超初級編
concrete5 5.7でテーマ作ってみよう超初級編
Yuriko Kamimori
Rx入門
Rx入門
Takaaki Suzuki
Ruby For Work
Ruby For Work
bash0C7
Ruby 風シンタックスな静的言語 Crystal の紹介
Ruby 風シンタックスな静的言語 Crystal の紹介
Kazuki Matsushita
Java script関数コールの追跡
Java script関数コールの追跡
Keiichi Kobayashi
Rubyで.netを扱う
Rubyで.netを扱う
107steps
Recommended
Rx Showcase
Rx Showcase
Takaaki Suzuki
Goで書くNeoVimプラグイン - OpenAppLab Aizu LT feat. CyberAgent
Goで書くNeoVimプラグイン - OpenAppLab Aizu LT feat. CyberAgent
Reo Yamada
concrete5 5.7でテーマ作ってみよう超初級編
concrete5 5.7でテーマ作ってみよう超初級編
Yuriko Kamimori
Rx入門
Rx入門
Takaaki Suzuki
Ruby For Work
Ruby For Work
bash0C7
Ruby 風シンタックスな静的言語 Crystal の紹介
Ruby 風シンタックスな静的言語 Crystal の紹介
Kazuki Matsushita
Java script関数コールの追跡
Java script関数コールの追跡
Keiichi Kobayashi
Rubyで.netを扱う
Rubyで.netを扱う
107steps
About Reauire.js
About Reauire.js
Kyohei Morimoto
最近流行りのビルドツールとは
最近流行りのビルドツールとは
Takahiro Maki
aws chaliceで作るslack翻訳bot
aws chaliceで作るslack翻訳bot
uchimanajet7
JasmineによるJavascriptテスト駆動開発
JasmineによるJavascriptテスト駆動開発
Yoichi Toyota
何でRuby
何でRuby
Ngoc Dao
scheme処理系の実装
scheme処理系の実装
bobuhiro11
【社内勉強会#9】(今更ながら)java8触ってみた~ラムダ式篇~
【社内勉強会#9】(今更ながら)java8触ってみた~ラムダ式篇~
目黒 のぞみ
Ruby24
Ruby24
Masahiro Tomita
SpockからRSpecにきたときの気づき #coedorb
SpockからRSpecにきたときの気づき #coedorb
Youtarou TAKAHASHI
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
Yoshitaka Kawashima
大規模ログ集約実現のためのアーキテクチャ
大規模ログ集約実現のためのアーキテクチャ
Yugo Shimizu
Play frameworkについて
Play frameworkについて
Shinobu Okano
play framework 勉強会 in 関西
play framework 勉強会 in 関西
Shinichi Kozake
Simplest API Server "miq"
Simplest API Server "miq"
Yuki Ito
Railsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えて
Hirata Tomoko
CL21で色々なデータ構造を実装してみようとした
CL21で色々なデータ構造を実装してみようとした
blackenedgold
JAWS-UG和歌山第0回キックオフミーティング LT
JAWS-UG和歌山第0回キックオフミーティング LT
三七男 山本
MVCフレームワークと戦った話
MVCフレームワークと戦った話
SotaRyotaro
Iphone unity blog app
Iphone unity blog app
appsme
Finished products
Finished products
Ellie Marsh
Energía eléctrica en España
Energía eléctrica en España
PatriMello
а. фролов.-посох ред4
а. фролов.-посох ред4
eid1
More Related Content
What's hot
About Reauire.js
About Reauire.js
Kyohei Morimoto
最近流行りのビルドツールとは
最近流行りのビルドツールとは
Takahiro Maki
aws chaliceで作るslack翻訳bot
aws chaliceで作るslack翻訳bot
uchimanajet7
JasmineによるJavascriptテスト駆動開発
JasmineによるJavascriptテスト駆動開発
Yoichi Toyota
何でRuby
何でRuby
Ngoc Dao
scheme処理系の実装
scheme処理系の実装
bobuhiro11
【社内勉強会#9】(今更ながら)java8触ってみた~ラムダ式篇~
【社内勉強会#9】(今更ながら)java8触ってみた~ラムダ式篇~
目黒 のぞみ
Ruby24
Ruby24
Masahiro Tomita
SpockからRSpecにきたときの気づき #coedorb
SpockからRSpecにきたときの気づき #coedorb
Youtarou TAKAHASHI
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
Yoshitaka Kawashima
大規模ログ集約実現のためのアーキテクチャ
大規模ログ集約実現のためのアーキテクチャ
Yugo Shimizu
Play frameworkについて
Play frameworkについて
Shinobu Okano
play framework 勉強会 in 関西
play framework 勉強会 in 関西
Shinichi Kozake
Simplest API Server "miq"
Simplest API Server "miq"
Yuki Ito
Railsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えて
Hirata Tomoko
CL21で色々なデータ構造を実装してみようとした
CL21で色々なデータ構造を実装してみようとした
blackenedgold
JAWS-UG和歌山第0回キックオフミーティング LT
JAWS-UG和歌山第0回キックオフミーティング LT
三七男 山本
MVCフレームワークと戦った話
MVCフレームワークと戦った話
SotaRyotaro
What's hot
(18)
About Reauire.js
About Reauire.js
最近流行りのビルドツールとは
最近流行りのビルドツールとは
aws chaliceで作るslack翻訳bot
aws chaliceで作るslack翻訳bot
JasmineによるJavascriptテスト駆動開発
JasmineによるJavascriptテスト駆動開発
何でRuby
何でRuby
scheme処理系の実装
scheme処理系の実装
【社内勉強会#9】(今更ながら)java8触ってみた~ラムダ式篇~
【社内勉強会#9】(今更ながら)java8触ってみた~ラムダ式篇~
Ruby24
Ruby24
SpockからRSpecにきたときの気づき #coedorb
SpockからRSpecにきたときの気づき #coedorb
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
大規模ログ集約実現のためのアーキテクチャ
大規模ログ集約実現のためのアーキテクチャ
Play frameworkについて
Play frameworkについて
play framework 勉強会 in 関西
play framework 勉強会 in 関西
Simplest API Server "miq"
Simplest API Server "miq"
Railsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えて
CL21で色々なデータ構造を実装してみようとした
CL21で色々なデータ構造を実装してみようとした
JAWS-UG和歌山第0回キックオフミーティング LT
JAWS-UG和歌山第0回キックオフミーティング LT
MVCフレームワークと戦った話
MVCフレームワークと戦った話
Viewers also liked
Iphone unity blog app
Iphone unity blog app
appsme
Finished products
Finished products
Ellie Marsh
Energía eléctrica en España
Energía eléctrica en España
PatriMello
а. фролов.-посох ред4
а. фролов.-посох ред4
eid1
Aplicación de un retardo
Aplicación de un retardo
Carlos Muñiz Cueto
Environment Energy
Environment Energy
Anjar Priandoyo
IBM Interconnect: Think you can Out Innovate Open Source
IBM Interconnect: Think you can Out Innovate Open Source
rhirschfeld
өсімдіктер тіршілік әрекетін ғылыми қорытындылау
өсімдіктер тіршілік әрекетін ғылыми қорытындылау
oquzaman
Software for Consulting Physicians from HospitalSoftwareShop.com
Software for Consulting Physicians from HospitalSoftwareShop.com
hospitalsoftwareshop
Presentación ceip san juan de la cruz
Presentación ceip san juan de la cruz
Juan Galan
Revolución rusa
Revolución rusa
stamartautpbasica
презентация
презентация
dou188
Viewers also liked
(12)
Iphone unity blog app
Iphone unity blog app
Finished products
Finished products
Energía eléctrica en España
Energía eléctrica en España
а. фролов.-посох ред4
а. фролов.-посох ред4
Aplicación de un retardo
Aplicación de un retardo
Environment Energy
Environment Energy
IBM Interconnect: Think you can Out Innovate Open Source
IBM Interconnect: Think you can Out Innovate Open Source
өсімдіктер тіршілік әрекетін ғылыми қорытындылау
өсімдіктер тіршілік әрекетін ғылыми қорытындылау
Software for Consulting Physicians from HospitalSoftwareShop.com
Software for Consulting Physicians from HospitalSoftwareShop.com
Presentación ceip san juan de la cruz
Presentación ceip san juan de la cruz
Revolución rusa
Revolución rusa
презентация
презентация
Similar to 最速で最速のRuby擴張を作る
Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作
terurou
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発
Koichi Shimozono
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
terurou
Ruby と C# をつなぐ
Ruby と C# をつなぐ
107steps
Sprocketsを捨てたい
Sprocketsを捨てたい
Masato Noguchi
Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4
Koji SHIMADA
CloudCore VPS 開発者支援制度
CloudCore VPS 開発者支援制度
Koichi Shimozono
CSV
CSV
Masahiro Tomita
Java scriptの進化
Java scriptの進化
maruyama097
OpenStack Object Storage; Usage
OpenStack Object Storage; Usage
irix_jp
Leiningen超速入門
Leiningen超速入門
Kiyotaka Kunihira
Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1
Takuya Mukohira
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた
ngi group.
nomlab_okayamaruby_slide
nomlab_okayamaruby_slide
nomlab
20150228_渋谷Webエンジニア朝会LT資料
20150228_渋谷Webエンジニア朝会LT資料
慎平 仁藤
リアルビジネスRuby
リアルビジネスRuby
Tomoya Kawanishi
苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1
苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1
Takuya Mukohira
Redux, Relay, HorizonあるいはElm
Redux, Relay, HorizonあるいはElm
chuck h
JavaとRubyのすてきな関係
JavaとRubyのすてきな関係
garden_tree
JavascriptでRubyの作り方
JavascriptでRubyの作り方
Shuyo Nakatani
Similar to 最速で最速のRuby擴張を作る
(20)
Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
Ruby と C# をつなぐ
Ruby と C# をつなぐ
Sprocketsを捨てたい
Sprocketsを捨てたい
Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4
CloudCore VPS 開発者支援制度
CloudCore VPS 開発者支援制度
CSV
CSV
Java scriptの進化
Java scriptの進化
OpenStack Object Storage; Usage
OpenStack Object Storage; Usage
Leiningen超速入門
Leiningen超速入門
Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた
nomlab_okayamaruby_slide
nomlab_okayamaruby_slide
20150228_渋谷Webエンジニア朝会LT資料
20150228_渋谷Webエンジニア朝会LT資料
リアルビジネスRuby
リアルビジネスRuby
苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1
苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1
Redux, Relay, HorizonあるいはElm
Redux, Relay, HorizonあるいはElm
JavaとRubyのすてきな関係
JavaとRubyのすてきな関係
JavascriptでRubyの作り方
JavascriptでRubyの作り方
More from Sachirou Inoue
Elixir on Containers
Elixir on Containers
Sachirou Inoue
發言の超越論的な根拠
發言の超越論的な根拠
Sachirou Inoue
faastCrystal
faastCrystal
Sachirou Inoue
人工言語作成を樂しむ者の爲の言語學
人工言語作成を樂しむ者の爲の言語學
Sachirou Inoue
人工言語を作るゆるやかな道
人工言語を作るゆるやかな道
Sachirou Inoue
FaaStRuby
FaaStRuby
Sachirou Inoue
DI is for us?
DI is for us?
Sachirou Inoue
How to make a spaghetti
How to make a spaghetti
Sachirou Inoue
Why we update our oss dependencies.
Why we update our oss dependencies.
Sachirou Inoue
Test like a team.
Test like a team.
Sachirou Inoue
Phoenix at scale
Phoenix at scale
Sachirou Inoue
Vivaldi #cd3437
Vivaldi #cd3437
Sachirou Inoue
外傷的Elixir
外傷的Elixir
Sachirou Inoue
勝手に作ったものたち
勝手に作ったものたち
Sachirou Inoue
竝行
竝行
Sachirou Inoue
ActiveHash
ActiveHash
Sachirou Inoue
boilerplate react
boilerplate react
Sachirou Inoue
ElixirでNode.jsを倒す
ElixirでNode.jsを倒す
Sachirou Inoue
大勢でピンポンできるのは、だれ?
大勢でピンポンできるのは、だれ?
Sachirou Inoue
J言語を讃えた
J言語を讃えた
Sachirou Inoue
More from Sachirou Inoue
(20)
Elixir on Containers
Elixir on Containers
發言の超越論的な根拠
發言の超越論的な根拠
faastCrystal
faastCrystal
人工言語作成を樂しむ者の爲の言語學
人工言語作成を樂しむ者の爲の言語學
人工言語を作るゆるやかな道
人工言語を作るゆるやかな道
FaaStRuby
FaaStRuby
DI is for us?
DI is for us?
How to make a spaghetti
How to make a spaghetti
Why we update our oss dependencies.
Why we update our oss dependencies.
Test like a team.
Test like a team.
Phoenix at scale
Phoenix at scale
Vivaldi #cd3437
Vivaldi #cd3437
外傷的Elixir
外傷的Elixir
勝手に作ったものたち
勝手に作ったものたち
竝行
竝行
ActiveHash
ActiveHash
boilerplate react
boilerplate react
ElixirでNode.jsを倒す
ElixirでNode.jsを倒す
大勢でピンポンできるのは、だれ?
大勢でピンポンできるのは、だれ?
J言語を讃えた
J言語を讃えた
最速で最速のRuby擴張を作る
1.
最速で最速の Ruby擴張を作る
2.
.。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)
3.
Ruby
4.
Ruby 最速で開發出來る⾔語
5.
6.
Crystal
7.
Crystal LLVMでcompile出來るRuby-likeな⾔語
8.
Crystal LLVMでcompile出來るRuby-likeな⾔語 Ruby-likeなsyntax 型推論 macroによるDSL Cのlibをそのまま使へる → 最速の開發
9.
Crystal LLVMでcompile出來るRuby-likeな⾔語 型による最適化 LLVMによる最適化 macroによるcompile時計算 Cのlibをover head無く使へる → 最速の實⾏
10.
Rubyの實⾏速度が遅い
11.
Rubyの實⾏速度が遅い ↓ Cで擴張を作る
12.
Rubyの實⾏速度が遅い ↓ Cで擴張を作る ↓ 實⾏速度は速く成ったが 開發速度が遅く成った
13.
Rubyのeco systemに頼りながら 開發速度を落とさず 遲い部分をCrystalで速く出來ないだらうか
14.
既存の試み manastech/crystal_ruby 頑張る前に放棄されてゐる 全然使へない 動かない phoffer/crystalized_ruby 頑張った跡 rb_define_module_function等を⼿動で呼ばなければならない もう動かない
15.
♥ Ruby meets
Crystal ♥ ne-sachirou/sample_ruby_extension_in_crystal
16.
ne-sachirou/sample_ruby_extension_in_crystal ruby hello_cr, def hello_cr
: Nil puts "Hello, World!” end hello_cr
17.
ne-sachirou/sample_ruby_extension_in_crystal ruby Fib, module Fib def
self.fib_cr(n : Int32) : Int32 (1..n-1).reduce([1,1]){|ns|[ns[1],ns[0]+ns[1]]}[1] end end p Fib.fib_cr
18.
ne-sachirou/sample_ruby_extension_in_crystal Benchmark 同じalgorithmで、fibonacci數列の31番⽬を100万回計算する def self.fib_rb(n) ns =
[1, 1] i = 1 while i < n ns0 = ns[0] ns[0] = ns[1] ns[1] = ns0 + ns[1] i += 1 end ns[1] end
19.
ne-sachirou/sample_ruby_extension_in_crystal Benchmark 同じalgorithmで、fibonacci數列の31番⽬を100万回計算する C 0.1秒
20.
ne-sachirou/sample_ruby_extension_in_crystal Benchmark 同じalgorithmで、fibonacci數列の31番⽬を100万回計算する C 0.1秒 Ruby 3.0秒
21.
ne-sachirou/sample_ruby_extension_in_crystal Benchmark 同じalgorithmで、fibonacci數列の31番⽬を100万回計算する C 0.1秒 Ruby 3.0秒 Crystal
0.2秒
22.
ne-sachirou/sample_ruby_extension_in_crystal macro ruby(name, code) {{
code }} {% if code.class_name == "Def" %} Ruby.ruby_def {{ name }}, {{ code }} {% elsif code.class_name == "ModuleDef" %} Ruby.ruby_module_def {{ name }}, {{ code }} {% end %} end LLVMで速いbinaryを作る ⾃動でRubyにmodule/methodを登録する `rake compile`
23.
ne-sachirou/sample_ruby_extension_in_crystal gem化をマテ!
Download now