Slide 1

Slide 1 text

History from Perl 1.0 to Perl 6
 ~ͬ͟ͱݟΔPerlͷྺ࢙~ ീӢΞφάϥ@AnaTofuZ Roppongi.pm #1 9/14

Slide 2

Slide 2 text

ϋΠαΠ!!!

Slide 3

Slide 3 text

Okinawa.pm ͔Βདྷ·ͨ͠

Slide 4

Slide 4 text

Ξφάϥ(@AnaTofuZ)Ͱ͢ • ԭೄ/ླྀٿେֶ޻ֶ෦৘ใ޻ֶՊB4
 (དྷ೥΋ֶੜͰ͢) • ԭೄग़਎Ͱ͸ͳ͍ͷͰ࠮ٗͱݴΘΕ·͢ • Okinawa.pm,PerlೖֶࣜinԭೄʹΑ͍͘·͢ • ࠷ۙ਌஌ΒͣΛൈࣃ͠·͍ͬͯ͘ΔͷͰ
 ޱ͔Β݂ͷຯ͕͠·͢

Slide 5

Slide 5 text

͋Δ೔

Slide 6

Slide 6 text

;ͱࢥ͏

Slide 7

Slide 7 text

Perl5

Slide 8

Slide 8 text

Perl5

Slide 9

Slide 9 text

Perl1 Perl2 Perl3 Perl4

Slide 10

Slide 10 text

࣮ࡏ ͨ͠ͷ͔

Slide 11

Slide 11 text

ීஈ࢖͍ͬͯΔPerlͬͯ… • େମͷํ͕ར༻͍ͯ͠Δ΋ͷ͸Perl5.*
 (Ұ෦ք۾Ͱ͸Perl6) • Perl5.*͕͋Δͱ͍͏͜ͱ͸ɼͦΕҎલͷ
 Perl1.0~Perl4.0͕ଘࡏ͍ͯ͠Δ͸ͣ

Slide 12

Slide 12 text

History from Perl 1.0 to Perl 6
 ~ͬ͟ͱݟΔPerlͷྺ࢙~ ീӢΞφάϥ@AnaTofuZ Roppongi.pm

Slide 13

Slide 13 text

͜ͷτʔΫͰ͸ • ͜ͷτʔΫͰ͸ࠓ͸୭΋࢖͍ͬͯͳ͍(͸ͣ)ͳ
 ྺ࢙తͳPerlΛbuildͯ͠ಛੑΛ୳Γ·͢ • ݱࡏͷPerl5ʹࢸΔ·ͰͷPerlͷྺ࢙Λ20෼Ͱݟͯ ͍͖·͢ • ࡉ͔͍buildͷ࢓ํ͸࠙਌ձͰڵຯ͕͋Ε͹
 ͓࿩͠·͢

Slide 14

Slide 14 text

ΞδΣϯμ • Perl1.0 • Perl2.0 • Perl3.0 • Perl4.0 • Perl5.0 • Perl6

Slide 15

Slide 15 text

աڈͷPerlͷ୳͠ํ • ࠓͷϦϙδτϦ͸Perl5 • ϒϥϯν্ʹPerl4ͷ࠷ऴ൫͸ଘࡏ͍ͯ͠Δ • άάͬͯ΋ͳ͔ͳ͔Perl2,Perl3ͷίʔυ͸
 ݟ͔ͭΒͳ͍

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

ʊਓਓਓਓਓਓਓਓਓਓਓਓਓʊ ʼɹPerl5ͷϦϙδτϦʹݱଘɹʻ ʉY^Y^Y^Y^Y^Y^Y^Y^Y^Y^ʉ

Slide 20

Slide 20 text

Perlͷྺ࢙ • Perl1.0ͷ࣌୅ͷϦϦʔε͕ϦϙδτϦʹ
 ࢒͍ͬͯΔ • ॳظ͸LarryʹΑΓMLʹ౤ߘ͞Ε͍ͯΔ
 (google group͔Βݱࡏ΋ӾཡՄೳ) • GitHub্Ͱ͸id:TimTody (LarryͷΞΧ΢ϯτ)͕ commit͍ͯ͠ΔࣄʹͳͬͯΔ

Slide 21

Slide 21 text

աڈͷPerlͷงғؾͷ஌Γํ • ී௨ʹݕࡧͯ͠΋αϯϓϧίʔυ౳͕
 ग़ͯ͜ͳ͍Մೳੑ͕ߴ͍ • manͱςετίʔυ͕ख͕͔Γ • manͰ࣮૷͞Ε͍ͯΔػೳΛ֬ೝ • ςετίʔυͰ࣮ࡍͷ࢖͍ํΛ୳Δ

Slide 22

Slide 22 text

աڈͷPerlͷbuildํ๏ • Mac OSͷ৔߹σϑΥϧτͰೖ͍ͬͯΔgcc͜ͱ clangͰ͸ϔομʔϑΝΠϧؔ࿈ͷΤϥʔ͕ଟൃ • ͦͷͨΊࣗલͰgccΛbuildͯͦ͠ΕΛར༻͢Δ ඞཁ͕͋Δ • brewͰinstallͨ͠gccͰ͸ବ໨

Slide 23

Slide 23 text

Perl1.0

Slide 24

Slide 24 text

Perl1.0 • ݱଘ͢Δ࠷ݹͷPerl • LarryWall͕ॻ͍ͨ • C,awk,sed,shͷྑ͍ͱ͜ΖΛऔͬͨݴޠ • 1987/12/18ʹϦϦʔε(stat͢Δͱ֬ೝͰ͖Δ)

Slide 25

Slide 25 text

ؾʹͳΔPerl1.0࠷৽ಈ޲(2) • As a birthday present to Perl and Larry, through the work of the perl1-porters, in particular Richard Clamp, resurrected here is Perl 1.0 with minimal patches for modern machines. • ϕʔΦ΢ϧϑͷࢻͱڞʹ2002೥ͷ12݄19೔ʹ
 gcc-3ʹରԠͨ͠ύονͷtag͕ଧͨΕΔ • LarryͱPerl΁ͷ͓஀ੜ೔ϓϨθϯτ

Slide 26

Slide 26 text

ؾʹͳΔPerl1.0࠷৽ಈ޲(2) • chastai͞Μ͕Perl1.0ͷϝϯςΛ͍ͯͨ͠΋ͷ Λbitbucketʹ͍͋͛ͯͨ
 https://bitbucket.org/chastai/perl-1.0 • ·͔͞ͷςετ͕100%௨Δ • ࠓ೔ݟͨΒϦϙδτϦ͕ফ͍͑ͯͨ

Slide 27

Slide 27 text

Perl5ͷσʔλܕ • εΧϥʔ • ഑ྻ • ϋογϡ • ϦϑΝϨϯε

Slide 28

Slide 28 text

Perl1ͷσʔλܕ • εΧϥʔ • ഑ྻ • ϋογϡ • ϦϑΝϨϯε

Slide 29

Slide 29 text

Perl1ͷσʔλܕ • εΧϥʔ • ഑ྻ • ϋογϡ • ϦϑΝϨϯε

Slide 30

Slide 30 text

Perl1ͷσʔλܕ • εΧϥʔ • ഑ྻ + ࿈૝഑ྻ

Slide 31

Slide 31 text

Perl1ͷσʔλܕ • εΧϥʔ • ഑ྻ + ࿈૝഑ྻ

Slide 32

Slide 32 text

Perl1ͷσʔλܕ • String • String഑ྻ + ࿈૝഑ྻ

Slide 33

Slide 33 text

Perl1Ͱͳ͍΋ͷ • ൣғԋࢉࢠ • foreach (ग़དྷͳ͘͸ͳ͍) • ଞϞδϡʔϧ • use • my,our,local…

Slide 34

Slide 34 text

Perl1Ͱ͋Δ΋ͷ • ஔ׵ • جຊਖ਼نදݱ • Ϧετૢ࡞ (shift,unsift,pop,push) • @_ • จࣈྻԋࢉࢠ • chop • each

Slide 35

Slide 35 text

αϒϧʔνϯ΋͋Δͧ!! sub MAX { $max = pop(@_); while ($foo = pop(@_)) { $max = $foo if $max < $foo; } $max; } ... $bestday = do MAX($mon,$tue,$wed,$thu,$fri);

Slide 36

Slide 36 text

for loop΋ग़དྷΔͧ!! #!/usr/bin/env perl @array = (1,2,3,4,5,6,7,8,9,10); for ( $i = 0; $i < $#array; $i++){ print $array[$i] ."\n"; }

Slide 37

Slide 37 text

for loop (੒ޭ) #!/usr/bin/env perl @array = (1,2,3,4,5,6,7,8,9,10); for ( $i = 0; $i < $#array; $i++){ print $array["$i"] ."\n"; }

Slide 38

Slide 38 text

ऑ఺ • γϯϘϧςʔϒϧʹΞΫηεͰ͖ͳ͍ • αϒϧʔνϯʹ഑ྻΛ౉ͤͳ͍
 (ग़དྷͳ͘͸ͳ͍) • ίϯύΠϧΤϥʔͷϝοηʔδ͕ແͯ͘ݫ͠ ͍

Slide 39

Slide 39 text

Perl1.0/perl.h • Perlͷ಺෦σʔλܕ͸perl.hͰtypedef͠
 େจࣈͷํΛར༻͢Δ 1 typedef struct arg ARG; 2 typedef struct cmd CMD; 3 typedef struct formcmd FCMD; 4 typedef struct scanpat SPAT; 5 typedef struct stab STAB; 6 typedef struct stio STIO; 7 typedef struct string STR; 8 typedef struct atbl ARRAY; 9 typedef struct htbl HASH;

Slide 40

Slide 40 text

Perl1.0ͷ഑ྻ • atblߏ଄ମ͕഑ྻͱͯ͠ػೳ • ࣮૷͸ࢸͬͯγϯϓϧͰSTRͷϙΠϯλ഑ྻͱ
 ഑ྻͷ࠷େ஋ary_max,ݸ਺ͷ൑அʹ࢖͏ary_fill • 
 1 struct atbl { 2 STR **ary_array; 3 int ary_max; 4 int ary_fill; 5 };

Slide 41

Slide 41 text

Perl2.0

Slide 42

Slide 42 text

Perl2.0 • 1988೥6݄5೔ϦϦʔε • foreach͕௥Ճ • local͕ॳొ৔ • σʔλߏ଄͕Perl1.0ΑΓ΋ෳࡶʹॻ͖׵ΘΔ • ࿈૝഑ྻͷdelete͕௥Ճ • (౰࣌)sedΑΓ΋ߴ଎ʹͳͬͨ

Slide 43

Slide 43 text

Perl2.0 • ֦ுਖ਼نදݱ͕αϙʔτ
 /(foo|bar)/, /(foo)*/,/(foo)+/ • \s,\S,\d,\D͕࢖༻Մೳʹ • αϒϧʔνϯͷ࠶ؼݺͼग़͕͠Մೳʹͳͬͨ • do ‘foo.pl’ ͳͲͰ֎෦ϑΝΠϧΛऔΓࠐΊΔ༷ʹ • libҎԼʹPerl੡ͷϞδϡʔϧ͕஀ੜ(getopt.plͳͲ)

Slide 44

Slide 44 text

Perl2.0ͰϑΟϘφον਺ྻ 1 sub fib { 2 local($arg) = @_; 3 local($foo); 4 $level++; 5 if ($arg <= 2) { 6 $foo = 1; 7 } 8 else { 9 $foo = do fib($arg-1) + do fib($arg-2); 10 } 11 $level--; 12 $foo; 13 }

Slide 45

Slide 45 text

Perl2.0͓΋͠ΖϙΠϯτ • จࣈྻதͷ഑ྻ͸ల։͞Εͳ͍ 1 @helo = (1,2,3); 2 3 print @helo.”\n”; #3 4 print “@helo\n"; #@hello

Slide 46

Slide 46 text

Perl2.0ͷStringܕ • STAB͕಺෦ʹຒΊࠐ·ΕΔΑ͏ʹͳͬͨ 1 struct string { 2 char * str_ptr; /* pointer to malloced string */ 3 double str_nval; /* numeric value, if any */ 4 int str_len; /* allocated size */ 5 int str_cur; /* length of str_ptr as a C string */ 6 union { 7 STR *str_next; /* while free, link to next free str */ 8 STAB *str_magic; /* while in use, ptr to magic stab, if an */ 9 } str_link; 10 char str_pok; /* state of str_ptr */ 11 char str_nok; /* state of str_nval */ 12 char str_rare; /* used by search strings */ 13 char str_prev; /* also used by search strings */ 14 };

Slide 47

Slide 47 text

Perl3.0

Slide 48

Slide 48 text

Perl3.0 • 1988೥6݄5೔ϦϦʔε • ҹ৅ͱͯ͠Perl5ͷݪܕ͕׬੒͢Δ • foreach͕಺෦తʹforͱಉ౳ʹͳΔ • ൣғԋࢉࢠ..͕഑ྻίϯςΩετʹରԠ

Slide 49

Slide 49 text

Perl3 • ܕάϩϒ͕ొ৔
 αϒϧʔνϯʹ೚ҙͷม਺Λ౉͢ࣄ͕Մೳʹ •࿈૝഑ྻ͕ެࣜͷσʔλܕʹঢ֨
 εΧϥʔ,εΧϥʔͷ഑ྻ,εΧϥʔͷ࿈૝഑ྻ ͷ3छྨ

Slide 50

Slide 50 text

Perl3 • αϒϧʔνϯίʔϧ͕do hoge͔Β
 &hogeʹมߋ͞Ε,Ҿ਺ͳ͠Ͱ΋࣮ߦՄೳʹ • -uΦϓγϣϯ͕௥Ճ͞ΕPerlεΫϦϓτ࣮ߦޙ ʹdump͢Δػೳ͕͍ͭͨ(όΠφϦ͕ੜ੒ग़ དྷΔΑ͏ʹͳͬͨ)

Slide 51

Slide 51 text

Perl3 • จࣈྻதͷ@array͕ల։͞ΕΔΑ͏ʹͳͬͨ • αϒϧʔνϯ΍mainͰshiftͱॻ͘ͱARGV͔@_ ΛΑ͠ͳʹର৅ʹͯ͘͠ΕΔΑ͏ʹਐԽ • mkdir,chrootͳͲͷOSܥͷؔ਺௥Ճ • reverse,definedͳͲ͕௥Ճ͞ΕΔ

Slide 52

Slide 52 text

ൣғԋࢉࢠͷಈ͖ • scalar operatorͱͯ͠ͷಈ͖
 (҉໧తʹߦ൪߸$.ͱൺֱ) 2 if (101 .. 200) { print; } # print 2nd hundred lines 3 4 next line if (1 .. /^$/); # skip header lines 5 6 s/^/> / if (/^$/ .. eof()); # quote body 7 9 for (101 .. 200) { print; } # print $_ 100 times 10 11 @foo = @foo[$[ .. $#foo]; # an expensive no-op 12 @foo = @foo[$#foo-4 .. $#foo]; # slice last 5 items • array operatorͱͯ͠ͷಈ͖

Slide 53

Slide 53 text

Perl3 • ܕάϩϒ
 Perl͕ม਺ͷ৘ใΛอଘ͢ΔγϯϘϧςʔϒϧ ΁ͷΞΫηεํ๏

Slide 54

Slide 54 text

Perl3-Perl4ͷܕάϩϒ 1 #!../perl 2 3 $hoge = "wanwan"; 4 %hoge = ('cat' , "nyanya"); 5 *foo = *hoge; 6 7 print "$foo{'cat'}\n"; 8 *piyo = $_main{'hoge'}; 9 print "$piyo\n";

Slide 55

Slide 55 text

(ࢀߟ)Perl5ͷܕάϩϒ 1 #!/usr/bin/env perl 2 our $hoge = 'wanwa'; 3 $hoge_glob = *hoge{SCALAR}; 4 5 print "${$hoge_glob}\n";

Slide 56

Slide 56 text

Perl5ͷܕάϩϒͱͷҧ͍ • ΤϯτϦʔΛ·Δ͝ͱ࣋ͬͯ͘ΔͨΊSCALAR ͳͲͷࢦఆ͕ෆՄೳ • $_main͕mainؔ਺ͷγϯϘϧςʔϒϧͰ͋Γ ௚઀ૢ࡞Մೳ(%main::Ͱ͸ͳ͍)

Slide 57

Slide 57 text

Perl3ͷεΧϥʔܕ 1 struct string { 2 char * str_ptr; /* pointer to malloced string */ 3 union { 4 double str_nval; /* numeric value, if any */ 5 STAB *str_stab; /* magic stab for magic "key" string */ 6 long str_useful; /* is this search optimization effective? */ 7 ARG *str_args; /* list of args for interpreted string */ 8 HASH *str_hash; /* string represents an assoc array (stab?) */ 9 ARRAY *str_array; /* string represents an array */ 10 } str_u; 11 int str_len; /* allocated size */ 12 int str_cur; /* length of str_ptr as a C string */ 13 STR *str_magic; /* while free, link to next free str */ 14 /* while in use, ptr to "key" for magic items */ 15 char str_pok; /* state of str_ptr */ 16 char str_nok; /* state of str_nval */ 17 unsigned char str_rare; /* used by search strings */ 18 unsigned char str_state; /* one of SS_* below */ 19 /* also used by search strings for backoff */ 20 #ifdef TAINT 21 bool str_tainted; /* 1 if possibly under control of $< */ 22 #endif 23 };

Slide 58

Slide 58 text

Perl3ςΫχοΫ • ଟ࣍ݩ഑ྻ͸࿈૝഑ྻΛ࢖ͬͯΤϛϡϨʔτ ͍ͯͨ͠ 1 %hash = (); 2 3 $hash{'piyo','foo'} = "hoge"; 4 5 print "$hash{'piyo','foo'}\n"; • ࿈૝഑ྻͷ =>͸·ͩ࢖͑ͣ, ’΍”΋লུෆՄ

Slide 59

Slide 59 text

Perl3ͷ಺෦ߏ଄ • Newzͱ͍͏ϚΫϩͰsafemalloc͞ΕΔ༷ʹ ͳͬͨ
 (Perl2·Ͱ͸ܕͷؔ਺಺Ͱmalloc͍ͯͨ͠)

Slide 60

Slide 60 text

Perl4.0

Slide 61

Slide 61 text

Perl4ͷมߋ఺ • 1991೥3݄21೔ϦϦʔε • ϓϩάϥϛϯάPerlग़൛ه೦ʹϦϦʔε͞Εͨ • bug fixͱίʔυͷվྑ͕ओ

Slide 62

Slide 62 text

Perl4ͷมߋ఺ • MS-DOS,OS2ʹରԠ࢝͠ΊΔ • YaccͰจ๏Λఆ͍ٛͯͨ͠ϑΝΠϧ໊͕perl.y͔ Βperly.yʹमਖ਼͞ΕΔ • mainؔ਺΋perly.c͔Βperl.cʹमਖ਼ • ςετίʔυͷ֦ுࢠΛ”.t”ʹ౷Ұ

Slide 63

Slide 63 text

Perl4ͷมߋ఺ • NDBM୯ମ͔ΒGNUͷDBϚωʔδϟʔͷGDBM ΋ϋογϡੜ੒࣌ʹαϙʔτ࢝͠ΊΔ • Time::LocalͷݪܕtimelocalϥΠϒϥϦ͕ύο έʔδʹՃΘΔ • SETREGIDͳͲͷϚΫϩͷ໊લ͕HAS_SETREGID ʹมߋ͞ΕΔ

Slide 64

Slide 64 text

Perl4ͷࢥ͍ग़ • require͕ొ৔ • Ұ੪Λ෩ᴆͨ͠jcode.plͳͲ͕ొ৔ • ౰࣌ͷύοέʔδͷ۠੾Γ͸::Ͱ͸ͳ͘’
 &jcode::convert (Perl5)
 &jcode’convert (Perl4)

Slide 65

Slide 65 text

Perl4/perl.h 1 typedef struct arg ARG; 2 typedef struct cmd CMD; 3 typedef struct formcmd FCMD; 4 typedef struct scanpat SPAT; 5 typedef struct stio STIO; 6 typedef struct sub SUBR; 7 typedef struct string STR; 8 typedef struct atbl ARRAY; 9 typedef struct htbl HASH; 10 typedef struct regexp REGEXP; 11 typedef struct stabptrs STBP; 12 typedef struct stab STAB; 13 typedef struct callsave CSV; • Perl4Ͱ͸

Slide 66

Slide 66 text

Perl5.0

Slide 67

Slide 67 text

Perl5 • େ͖͘Perl͕ॻ͖׵ΘΔ • ΦϖίʔυΛར༻ͨ͠ίϯύΠϧ+ΠϯλϓϦ λܕͷݴޠ΁ͱ੾ΓସΘΔ • PerlͷΦϖίʔυ͸ؔ਺ͱରԠ

Slide 68

Slide 68 text

Perl5 • ϦϑΝϨϯε,blessొ৔ • strictϞʔυ͕ଘࡏ͍ͯ͠ͳ͍ͨΊ
 
 
 
 
 ͜Μͳॻ͖ํ΋ςετίʔυʹొ৔ 6 # Test real references. 7 8 $FOO = \$BAR; 9 $BAR = \$BAZ; 10 $BAZ = "ok 8\n"; 11 print $$$FOO;

Slide 69

Slide 69 text

Perl5 • miniperl͕buildର৅ͱͯ͠ొ৔ • perlͷυΩϡϝϯτ͕man͔Βpodʹมߋ͞Ε
 miniperlΛར༻͠buildͨ͠pod2manΛར༻͠
 manΛੜ੒͢Δ༷ʹͳͬͨ • use,my,XS͕ొ৔

Slide 70

Slide 70 text

Perl5ͷσʔλߏ଄ • ಺෦తʹεΧϥʔܕ͸SVܕʹඥ͚ͮ͞ΕΔ
 (ݱࡏͷPerl5ͱಉ༷ͷߏ଄) • όΠτίʔυΛ֨ೲ͢ΔOPܕͳͲ΋ొ৔ • Perl4·Ͱͱ͸ҟͳΓɼߏ଄ମ໊ͷେจࣈ͕ܕ ໊ͱͳ͍ͬͯΔ

Slide 71

Slide 71 text

Perl5.0ͷSVܕ • ݱࡏͷPerl5ͱ͸த਎͕ҟͳΔ͕͓͓Αͦݪܕ ͕࡞ΒΕ͍ͯΔ 1 /* Using C's structural equivalence to help emulate C++ inheritance here... */ 2 3 struct sv { 4 void* sv_any; /* pointer to something */ 5 U32 sv_refcnt; /* how many references to us */ 6 U32 sv_flags; /* what we are */ 7 };

Slide 72

Slide 72 text

perl.hͰtypedef͞Ε͍ͯΔ σʔλܕͷਪҠ • Perl1.0 • 9 • Perl2.0 • 11 • Perl3.0 • 12 • Perl4.0 • 14 • Perl5.0 • 49

Slide 73

Slide 73 text

Perl5.10 • featureϓϥάϚ͕ಋೖ͞ΕͨΓͱPerlͷసػ ͱͳͬͨόʔδϣϯͷ1ͭ • ͜ͷόʔδϣϯ͔ΒPerlͷtagͷ໋໊نଇ͕ม ߋ͞ΕΔ
 old: perl-5.95
 new: v5.10.0

Slide 74

Slide 74 text

Perl5.03 • ͓͓ΑͦPerl5.003_01ͱPerl5.003_02ͷؒ
 ͘Β͍ʹAnaTofuZ͕஀ੜ͢Δ

Slide 75

Slide 75 text

Perl5/perl.h 1 typedef struct Outrec Outrec; 2 typedef struct interpreter PerlInterpreter; 3 typedef struct ff FF; 4 typedef struct sv SV; 5 typedef struct av AV; 6 typedef struct hv HV; 7 typedef struct cv CV; 8 typedef struct regexp REGEXP; 9 typedef struct gp GP; 10 typedef struct sv GV; 11 typedef struct io IO; 12 typedef struct context CONTEXT; 13 typedef struct block BLOCK;

Slide 76

Slide 76 text

ྺ࢙తͳPerlͷϙΠϯτ • ࠷ޙͷߦ຤ͷ;Λলུ͕okͱ͍͏ػೳ͸ແ͍ҝ
 ϫϯϥΠφʔͰ΋ perl -e ‘print “1\n”;’ͱ
 ηϛίϩϯ͕ඞਢ • versionΛݟΔʹ͸-vΦϓγϣϯ
 (௕͍Φϓγϣϯ͸ະରԠ)

Slide 77

Slide 77 text

ػೳతͳൺֱ • 1ສͱ1ઍສͷFizzBuzzΛܭଌ • bytecodeʹམͱ͞ͳ͍෼
 ਺͕গͳ͍৔߹
 ॳظͷPerl͕ߴ଎ • ݅਺͕ଟ͍৔߹bytecode
 ʹམͱ͢Perl5͕ߴ଎ 5JUMF ສ ઍສ

Slide 78

Slide 78 text

Perl6

Slide 79

Slide 79 text

Perl6 • ເ͋;ΕΔݴޠ • NQPͱݺ͹ΕΔPerl6ͷαϒηοτͰPerl6͸ هड़͞Ε͍ͯΔ • ݱࡏ͸Rakudo͕΄΅ެࣜ • MoarVM,JVM,js,GraalVMͰಈ͘

Slide 80

Slide 80 text

Perl6 • ࢓༷ͱ࣮૷͕ಉҰͩͬͨPerl5ͱҧ͍
 ࢓༷ͱ࣮૷͕෼཭͍ͯ͠Δ • ࢓༷͸http://design.perl6.org/ • ࣮૷తͳυΩϡϝϯτ͸
 https://docs.perl6.org/

Slide 81

Slide 81 text

Rakudo • MoarVMͰ͸6modelͱ͍͏ΦϒδΣΫτγε ςϜΛ࠾༻͍ͯ͠Δ • ࠷ۙ͸JIT͕Α͘commit͞Ε͍ͯΔ •

Slide 82

Slide 82 text

231KͷϩάΞφϥΠζΛ͢Δ • Perl5 • 0.04s • Ruby • 0.15s • Python • 0.06s • Java • 0.27s • Perl6(Moar) • 0.86s • Perl6(JVM) • 21.48s

Slide 83

Slide 83 text

3GͷϩάΞφϥΠζΛ͢Δ • Perl5 • 41.35s • Ruby • 574.52s • Python • 101.16s • Java • 48.85s • Perl6(Moar) • 2331.08s • Perl6(JVM) • 1665.56s

Slide 84

Slide 84 text

·ͱΊ • Perl͸Perl5ͱPerl6Ͱେن໛ͳमਖ਼͕ೖͬͨ • ݴޠతʹ͸Perl1.0͔ΒPerl5͸៉ྷʹਐԽͯ͠ ͍͍ͬͯΔ •

Slide 85

Slide 85 text

ػೳతͳൺֱ • 1ສͱ1ઍສͷFizzBuzzΛܭଌ • bytecodeʹམͱ͞ͳ͍෼
 ਺͕গͳ͍৔߹
 ॳظͷPerl͕ߴ଎ • ݅਺͕ଟ͍৔߹bytecode
 ʹམͱ͢Perl5͕ߴ଎ 5JUMF ສ ઍສ