not so foreign functions
DESCRIPTION
ESUG 2011, EdinburghTRANSCRIPT
![Page 1: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/1.jpg)
Not-So-Foreign Functions
Calling Ruby from Smalltalk
Martin McClure2011 ESUG
![Page 2: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/2.jpg)
Why Foreign Functions?
![Page 3: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/3.jpg)
Shared library call
![Page 4: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/4.jpg)
Shared library call
Distributed object system
![Page 5: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/5.jpg)
Shared library call
Distributed object system
Is there anin-between way?
![Page 6: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/6.jpg)
Shared library call
Distributed object system
Multi-language VM
![Page 7: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/7.jpg)
MagLev: Ruby and Smalltalk in the same VM
Multi-language VM
![Page 8: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/8.jpg)
How does that work?
![Page 9: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/9.jpg)
An object...
How does that work?
![Page 10: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/10.jpg)
An object...
How does that work?
...is an object...
![Page 11: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/11.jpg)
An object...
How does that work?
...is an object...
...is an object...
![Page 12: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/12.jpg)
A class...
How does that work?
![Page 13: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/13.jpg)
A class...
How does that work?
...is a class...
![Page 14: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/14.jpg)
A class...
How does that work?
...is a class...
...is a class...
![Page 15: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/15.jpg)
How does that work?
BUT...
![Page 16: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/16.jpg)
A message...
How does that work?
![Page 17: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/17.jpg)
A message...
How does that work?
...is Smalltalk...
![Page 18: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/18.jpg)
A message...
How does that work?
...is Smalltalk...
...or is Ruby.
![Page 19: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/19.jpg)
A class...
How does that work?
![Page 20: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/20.jpg)
A class...
How does that work?
...may define different Ruby and Smalltalk
methods...
![Page 21: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/21.jpg)
A class...
How does that work?
![Page 22: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/22.jpg)
A class...
How does that work?
...may have different Ruby and Smalltalk
names...
![Page 23: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/23.jpg)
A class...
How does that work?
![Page 24: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/24.jpg)
A class...
How does that work?
...may have different Ruby and Smalltalk
superclasses.
![Page 25: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/25.jpg)
Selector Supplements● Environment ID● Number/type of sent arguments
![Page 26: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/26.jpg)
Selector Supplements● Default send environment = compile environment
● Must override this default
![Page 27: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/27.jpg)
Onwardto theDemo
![Page 28: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/28.jpg)
Thanks to:
Peter McLainTim Felgentreff
![Page 29: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/29.jpg)
rubygems.org>25000 gems
![Page 30: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/30.jpg)
maglev-gem install mailfactory
![Page 31: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/31.jpg)
![Page 32: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/32.jpg)
What's Next?
● Name “RubyService”?● You tell us...
![Page 33: Not So Foreign Functions](https://reader034.vdocuments.net/reader034/viewer/2022042522/559832571a28abfb798b4587/html5/thumbnails/33.jpg)
?Martin McClure2011 ESUG