Towards ¡ Small ¡Portable ¡ VMs ¡ N. ¡Bouraqadi ¡and ¡L. ¡Fabresse ¡ Smtalltalks ¡nov ¡2010 ¡
Mul@ple ¡devices ¡=> ¡Mul@ple ¡VMs ¡ Image ¡ VM ¡1 ¡ VM ¡2 ¡ VM ¡3 ¡ OS ¡1 ¡ OS ¡2 ¡ OS ¡3 ¡
Por@ng ¡the ¡Squeak ¡VM ¡ Image ¡ Library ¡A ¡ Library ¡B ¡ Library ¡Z ¡ Plugin1 ¡ Plugin2 ¡ Plugin ¡x ¡ VM ¡ OS ¡ API ¡α ¡ API ¡β ¡ API ¡ψ ¡
Por@ng ¡the ¡Squeak ¡VM ¡ Image ¡ Library ¡A ¡ Library ¡B ¡ Library ¡Z ¡ Plugin1 ¡ Plugin2 ¡ Plugin ¡x ¡ VM ¡ Other ¡OS ¡ API ¡α ¡ API ¡β ¡ API ¡ψ ¡
Por@ng ¡the ¡Squeak ¡VM ¡ Image ¡ Library ¡A ¡ Library ¡B ¡ Library ¡Z ¡ Plugin1 ¡ Plugin2 ¡ Plugin ¡x ¡ VM ¡ Other ¡OS ¡ API ¡α ¡ API ¡β ¡ API ¡ψ ¡
Port ¡a ¡VM ¡ Modify plugins code
Steps ¡to ¡Port ¡a ¡VM ¡ Low Level Poor IDE
Currently ¡ Image ¡ VM ¡
Currently ¡ Proposal ¡ Image ¡ Image ¡ VM ¡ VM ¡
Currently ¡ Proposal ¡ OOP Image ¡ Image ¡ Smalltalk IDE VM ¡ VM ¡ Low Poor Level IDE
Currently ¡ Proposal ¡ Easier Hard to Port to Port OOP Image ¡ Image ¡ Smalltalk IDE VM ¡ VM ¡ Low Poor Level IDE
Proposal: ¡a ¡Smaller ¡VM ¡ Image ¡ Library ¡A ¡ Library ¡B ¡ Library ¡Z ¡ FFI ¡ VM ¡ OS ¡ API ¡α ¡ API ¡β ¡ API ¡ψ ¡
Por@ng ¡a ¡Smaller ¡VM ¡ Image ¡ Library ¡A ¡ Library ¡B ¡ Library ¡Z ¡ FFI ¡ VM ¡ Other ¡OS ¡ API ¡α ¡ API ¡β ¡ API ¡ψ ¡
Por@ng ¡a ¡Smaller ¡VM ¡ Image ¡ Library ¡A ¡ Library ¡B ¡ Library ¡Z ¡ FFI ¡ VM ¡ Other ¡OS ¡ API ¡α ¡ API ¡β ¡ API ¡ψ ¡
Port ¡Smaller ¡VM ¡ Image ¡ Library ¡A ¡ Library ¡B ¡ Library ¡Z ¡ Smalltalk IDE OOP FFI ¡ VM ¡ Other ¡OS ¡ API ¡α ¡ API ¡β ¡ API ¡ψ ¡
Experiment: ¡ FFI-‑based ¡Network ¡Library ¡
Current ¡network ¡library ¡ Image ¡ Network ¡ Socket ¡ VM ¡ Plugin ¡ Hard to port OS ¡ Network ¡API ¡
Current ¡network ¡library ¡ ByteArray ¡ TCP+ ¡ IPv4 ¡+IPv6 ¡ IPv4 ¡+IPv6 ¡ UDP+… ¡ Socket ¡ SocketAdress ¡ ! y t HTTPSocket ¡ SocksSocket ¡ r i D 0% tested
Overview ¡of ¡OCEAN ¡ Alien ¡ OCEAN ¡ Image ¡ Library ¡ Wrap POSIX Alien ¡ VM ¡ Lib. plugin ¡ POSIX ¡ OS ¡ <sys/socket.h> ¡
OCEAN ¡Library ¡ Socket networkLibrary NetworkLibraryProxyFactory socketID WindowsLibrary MacOSLibrary TcpSocket UdpSocket LinuxLibrary PosixLibrary
OCEAN ¡Library ¡ Socket networkLibrary NetworkLibraryProxyFactory socketID WindowsLibrary MacOSLibrary TcpSocket UdpSocket LinuxLibrary 100% P O O tested PosixLibrary
Latest OCEAN ¡Library ¡ version Socket networkLibrary NetworkLibraryProxyFactory socketID WindowsLibrary MacOSLibrary TcpSocket UdpSocket LinuxLibrary 100% P O O tested PosixLibrary
Hard ¡@me ¡wri@ng ¡tests! ¡ Socket ¡ Data ¡ closed? ¡ sent? ¡ Socket ¡ connected? ¡ Data ¡ received? ¡ ! ! ! ! ! ! y y c c n n e e r r r r u u c c n n o o C C
OSProcess ¡for ¡tests ¡ Alien ¡ OSProcess ¡ OCEAN ¡ Image ¡ Library ¡ Library ¡ Alien ¡ OSProcess ¡ VM ¡ plugin ¡ plugin ¡ OS ¡ POSIX ¡ OS ¡ <sys/socket.h> ¡ API ¡
OCEAN ¡first ¡evalua@on ¡ 350 ¡ 300 ¡ 250 ¡ 200 ¡ Ocean ¡ ms ¡ OldSocket ¡ 150 ¡ 100 ¡ 50 ¡ 0 ¡ Receive ¡10MB ¡ Send ¡10MB ¡
Summary ¡ Smaller ¡VM ¡ Ease porting ¡ Image ¡ OOP VM ¡ FFI ¡ Smalltalk OS ¡ IDE
Experiment ¡ Portable OOP Promising first 100% Alien-based Bench tested Networking Library
Future Work Finish the OCEAN experiment Remove other VM plugins Identify the Minimal VM
Towards ¡ Small ¡Portable ¡ VMs ¡ N. ¡Bouraqadi ¡and ¡L. ¡Fabresse ¡ Smtalltalks ¡nov ¡2010 ¡
Recommend
More recommend