Your SlideShare is downloading. ×
0
Power Assert and perl.js
Power Assert and perl.js
Power Assert and perl.js
Power Assert and perl.js
Power Assert and perl.js
Power Assert and perl.js
Power Assert and perl.js
Power Assert and perl.js
Power Assert and perl.js
Power Assert and perl.js
Power Assert and perl.js
Power Assert and perl.js
Power Assert and perl.js
Power Assert and perl.js
Power Assert and perl.js
Power Assert and perl.js
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Power Assert and perl.js

2,723

Published on

My LT slide on YAPC::Asia 2013

My LT slide on YAPC::Asia 2013

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,723
On Slideshare
0
From Embeds
0
Number of Embeds
14
Actions
Shares
0
Downloads
2
Comments
0
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Power Assert YAPC::ASIA 2013, 9/20, Kanagawa Fuji Goro (gfx) <gfuji@cpan.org> 13年9月20日金曜日
  • 2. perl.js Fuji Goro (gfx) YAPC::Asia 2013 myself Working at COOKPAD, Inc. Rubyist / Androider / JSXer CPAN: Xslate Mouse Plack::Middleware::DevFavicon 13年9月20日金曜日
  • 3. perl.js Fuji Goro (gfx) YAPC::Asia 2013 Power Assert http://dontmindthelanguage.wordpress.com/ 2009/12/11/groovy-1-7-power-assert/ Invented in Groovy Ported to JavaScript by @t_wata, 2013 Ported to Perl by @tokurhiom, 2013 13年9月20日金曜日
  • 4. perl.js Fuji Goro (gfx) YAPC::Asia 2013 Test::Power expect { $x->is_foo } expect { $x->foo eq ‘bar’ } 13年9月20日金曜日
  • 5. perl.js Fuji Goro (gfx) YAPC::Asia 2013 FAILURE MESSAGES not ok 1 - L7 : expect { $h->foo->bar == 42 }; # $h->foo # => undef # $h # => bless( {}, 'main' ) 13年9月20日金曜日
  • 6. perl.js Fuji Goro (gfx) YAPC::Asia 2013 END Part 1. End. 13年9月20日金曜日
  • 7. perl.js Fuji Goro (gfx) YAPC::Asia 2013 Part 2. perl.js - Perl 5.18.1 running on browsers build with emscripten 13年9月20日金曜日
  • 8. perl.js Fuji Goro (gfx) YAPC::Asia 2013 Demo http://gfx.github.io/perl.js/ 13年9月20日金曜日
  • 9. perl.js Fuji Goro (gfx) YAPC::Asia 2013 Emscripten LLVM to JavaScript compiler Compile LLVM bitcode into JavaScript 13年9月20日金曜日
  • 10. perl.js Fuji Goro (gfx) YAPC::Asia 2013 Emscripten Use JavaScript as a machine code Like a kernel & CPU, not an emulator nor translator All the syscalls are implemented in the emscripten runtime libraries 13年9月20日金曜日
  • 11. perl.js Fuji Goro (gfx) YAPC::Asia 2013 For example: fork(2) // src/library.js fork: function() { // pid_t fork(void); // We don't support multiple processes. ___setErrNo(ERRNO_CODES.EAGAIN); return -1; }, Most POSIX syscalls are just dummies :( 13年9月20日金曜日
  • 12. perl.js Fuji Goro (gfx) YAPC::Asia 2013 utime(2) // src/library_fs.js utime: function(path, atime, mtime) { var lookup = FS.lookupPath(path, { follow: true }); var node = lookup.node; node.node_ops.setattr(node, { timestamp: Math.max(atime, mtime) }); }, Emscripten has a virtual file system 13年9月20日金曜日
  • 13. perl.js Fuji Goro (gfx) YAPC::Asia 2013 BuilD PERL Write own Makefile based on Makefile.micro cf. pl! - Perl 5.16.3 based emscripten-ed perl 13年9月20日金曜日
  • 14. perl.js Fuji Goro (gfx) YAPC::Asia 2013 Problems Does not support call main() more than twice exit() closes stdin, stdout, stderr but there’s no way to open them again Fatal errors which cause abort() breaks the internal state, which then needs to reload the page (the JavaScript interpreter) 13年9月20日金曜日
  • 15. perl.js Fuji Goro (gfx) YAPC::Asia 2013 Conclusion Use emscripten for C/C++ applications Write once, run everywhere 13年9月20日金曜日
  • 16. perl.js Fuji Goro (gfx) YAPC::Asia 2013 END http://github.com/gfx/perl.js 13年9月20日金曜日

×