Power Assert
YAPC::ASIA 2013, 9/20, Kanagawa
Fuji Goro (gfx) <gfuji@cpan.org>
13年9月20日金曜日
perl.js Fuji Goro (gfx) YAPC::Asia 2013
myself
Working at COOKPAD, Inc.
Rubyist / Androider / JSXer
CPAN:
Xslate
Mouse
Pla...
perl.js Fuji Goro (gfx) YAPC::Asia 2013
Power Assert
http://dontmindthelanguage.wordpress.com/
2009/12/11/groovy-1-7-power...
perl.js Fuji Goro (gfx) YAPC::Asia 2013
Test::Power
expect { $x->is_foo }
expect { $x->foo eq ‘bar’ }
13年9月20日金曜日
perl.js Fuji Goro (gfx) YAPC::Asia 2013
FAILURE MESSAGES
not ok 1 - L7 : expect { $h->foo->bar == 42 };
# $h->foo
# => und...
perl.js Fuji Goro (gfx) YAPC::Asia 2013
END
Part 1. End.
13年9月20日金曜日
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日金曜日
perl.js Fuji Goro (gfx) YAPC::Asia 2013
Demo
http://gfx.github.io/perl.js/
13年9月20日金曜日
perl.js Fuji Goro (gfx) YAPC::Asia 2013
Emscripten
LLVM to JavaScript compiler
Compile LLVM bitcode into JavaScript
13年9月2...
perl.js Fuji Goro (gfx) YAPC::Asia 2013
Emscripten
Use JavaScript as a machine code
Like a kernel & CPU, not an emulator n...
perl.js Fuji Goro (gfx) YAPC::Asia 2013
For example: fork(2)
// src/library.js
fork: function() {
// pid_t fork(void);
// ...
perl.js Fuji Goro (gfx) YAPC::Asia 2013
utime(2)
// src/library_fs.js
utime: function(path, atime, mtime) {
var lookup = F...
perl.js Fuji Goro (gfx) YAPC::Asia 2013
BuilD PERL
Write own Makefile based on Makefile.micro
cf. pl! - Perl 5.16.3 based em...
perl.js Fuji Goro (gfx) YAPC::Asia 2013
Problems
Does not support call main() more than twice
exit() closes stdin, stdout,...
perl.js Fuji Goro (gfx) YAPC::Asia 2013
Conclusion
Use emscripten for C/C++ applications
Write once, run everywhere
13年9月2...
perl.js Fuji Goro (gfx) YAPC::Asia 2013
END
http://github.com/gfx/perl.js
13年9月20日金曜日
Upcoming SlideShare
Loading in...5
×

Power Assert and perl.js

2,765

Published on

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,765
On Slideshare
0
From Embeds
0
Number of Embeds
14
Actions
Shares
0
Downloads
2
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Power Assert and perl.js

  1. 1. Power Assert YAPC::ASIA 2013, 9/20, Kanagawa Fuji Goro (gfx) <gfuji@cpan.org> 13年9月20日金曜日
  2. 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. 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. 4. perl.js Fuji Goro (gfx) YAPC::Asia 2013 Test::Power expect { $x->is_foo } expect { $x->foo eq ‘bar’ } 13年9月20日金曜日
  5. 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. 6. perl.js Fuji Goro (gfx) YAPC::Asia 2013 END Part 1. End. 13年9月20日金曜日
  7. 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. 8. perl.js Fuji Goro (gfx) YAPC::Asia 2013 Demo http://gfx.github.io/perl.js/ 13年9月20日金曜日
  9. 9. perl.js Fuji Goro (gfx) YAPC::Asia 2013 Emscripten LLVM to JavaScript compiler Compile LLVM bitcode into JavaScript 13年9月20日金曜日
  10. 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. 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. 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. 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. 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. 15. perl.js Fuji Goro (gfx) YAPC::Asia 2013 Conclusion Use emscripten for C/C++ applications Write once, run everywhere 13年9月20日金曜日
  16. 16. perl.js Fuji Goro (gfx) YAPC::Asia 2013 END http://github.com/gfx/perl.js 13年9月20日金曜日
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×