ä»æ¥ã¯ãéå»ã調ã¹ãŠRustèšèªã®æŽå²ãèªããéçºæéäžã«Rustèšèªã®æ©èœãã©ã®ããã«å€åãããã瀺ãããã®PLãå®è·µããå ·äœäŸã瀺ããããšæããŸãã
/ image ãžã§ããã£ã¢ CC
å人ãããžã§ã¯ãïŒ2006â2010ïŒ
ããèªäœããæªæ¥ãæãããšãç®çãšããéå»ã®æè¡ããã¯ã2016幎ã®ACMäŒè°ã§ã®ãã¬ãŒã³ããŒã·ã§ã³äžã«Rustãããžã§ã¯ãéçºããŒã ããSteve KlabnikãçºèšããGraidon Horã®åŒçšã®1ã€ã§ãïŒãã¬ãŒã³ããŒã·ã§ã³ã®ã¹ã©ã€ãã¯ãã¡ãã«ãããŸãããã¹ã©ã€ãéã移åããã«ã¯ãããŒããŒãã®ç¢å°ïŒã ãããã®èšèã¯ãRustãé«åºŠãªæ©èœãåããé©æ°çãªèšèªã§ã¯ãªããšããäºå®ãããåæ ããŠããŸãã ãå€ããèšèªã®å€ãã®äœæ¥ã¡ãœããïŒC ++ãå«ãïŒãå«ãŸããŠããã ãã§ãã»ãã¥ãªãã£ãåäžããŠããŸãã
-Rust Developer ãGraydon Hoare
Graidon Chorus 㯠ã2006幎ã«Rustã®éçºãéå§ããŸãããåœæã圌ã¯Mozillaã®åŸæ¥å¡ã§ããã空ãæéã«ãããžã§ã¯ãã«é¢äžããŠããŸããã ã°ã©ã€ãã³ã«ããã°ãèã¯ãåäžé害ç¹ããæãããäŸå€çãªçåå¯èœæ§ãæãããååžçç©ãã§ããããã ãã³ç§ã®çèã«ã¡ãªãã§åœåãããŸããã ãã®ãããªããã³ã¯ã©ã€ããµã€ã¯ã«ã«5ã€ã®æ®µéããããããã«èœãåºãŸãã åå±å£ã¯ããããå®å šæ§ãšé床ã«çŠç¹ãåœãŠãPLã®è¯ãé¡æšã ãšå€æããŸããã
ã°ã©ã€ãã³ã¯èšèªã«åŸäºããŠãããããç¹å®ã®ã«ãŒã«ã確ç«ããŸããã 圌㯠ãããããèšèªã®ã»ãã³ãã£ã¯ã¹ã«æ³šæãæãããšãå¿ èŠã§ãããæ§æã®äœæ¥ãæåŸã§ããããšãææããŸããã ãããã£ãŠãRustã®åæã®å®è£ ã§ã¯ãããŒã¯ãŒãã¯5æå以äžã§ãããèšèªã¯ãçãããlogãretãfnãªã©ã®æŒç®åã䜿çšããŠããŸããã
ããšãã°ããªãªãŒã¹ãããæåã®Rustã³ãŒãã¯æ¬¡ã®ããã«ãªããŸããã
fn main() { log "hello, world"; } fn max(int x, int y) -> int { if (x > y) { ret x; } else { ret y; } }
Steve KlabnikãææããŠããããã« ããã®å¶éã¯æéã®çµéãšãšãã«åé€ãããŸãããããšãã°ãretãreturnã«å€ãããäžéšã¯å®å šã«çœ®ãæãããããªã©ãäžéšã®ããŒã¯ãŒãã¯ãé·ãããªããŸããã æ¯èŒã®ããã«ãçŸä»£ã®èšèªå®è£ ã§ã¯ãæååãHello worldïŒãã®åºåã¯æ¬¡ã®ããã«ãªããŸãã
fn main() { println!("Hello, world!"); }
ãŸããé²åã®éçšã§ãèšèªã®æŠå¿µãšããŒã¯ãŒãã®äžéšãåé€ãããŸããã Graidonããã®èšèªã§äœæ¥ãããšããRustã¯ãªããžã§ã¯ãæåã§ããããªããžã§ã¯ããèšè¿°ããããã«objæŒç®åã䜿çšããŸããã çŸåšãOOPã¯ãã®èšèªã§ã¯ãµããŒããããŠããŸããããRustã§ã¯æœè±¡åã䜿çšããŠãã®æŠå¿µã®å€ããå®è£ ã§ããŸãã
Rustã¯ã ãã©ã¡ãŒã¿ãŒããªã¢ãŒãã£ãºã é¢æ°ãšãé£æºããŸãã ã äžè¬çãªããã°ã©ãã³ã°ã®æŠå¿µã¯çŸåšãã®èšèªã§ä¿æãããŠããŸãïŒãã®ããã¥ã¡ã³ãã§ã³ãŒããèŠã€ããããšãã§ããŸãïŒãã10幎åããã©ã¡ãŒã¿ãŒã®çš®é¡ã瀺ãããã«è§ãã£ãã䜿çšãããŠããŸããã
obj swap[T](tup(T,T) pair) -> tup(T,T) { ret tup(pair._1, pair._0); } fn main() { auto str_pair = tup("hi", "there"); auto int_pair = tup(10, 12); str_pair = swap[str](str_pair); int_pair = swap[int](int_pair); }
Gradonã¯ãRustã§4幎éç¬ç«ããŠåããŸããã ãã®éã圌ã¯èšç»ãããæ©èœã®çŽ90ïŒ ãå®çŸããããšãã§ããŸããïŒãã®äžéšã¯ããªãç²éãªå®è£ ã§ããïŒã ã³ãŒãå®è¡ç°å¢ã¯70ïŒ å®äºããŸããã ãã®éãChorusã¯OCamlã³ã³ãã€ã©çšã«åèš38,000è¡ã®ã³ãŒããäœæããŸããã
Mozillaãžã®ç§»è¡ïŒ2010â2012ïŒ
ç§ã¯ãèšèªã«äž»èŠãªæ©èœãããã¹ãã ãšã¯æããŸããã4幎åŸãGraidon ã¯ãããã¿ã€ããMozillaã®ãããŒãžã£ãŒã«èŠããããšã«æ±ºããŸãã ã å瀟ã¯ãC ++ãããåçŽãªãã¯ãããžãŒã§ãã©ãŠã¶ãŒã¹ã¿ãã¯ãåæ§ç¯ããããŒã«ãæ¢ããŠããããããããžã§ã¯ãã«é¢å¿ã瀺ããŸããã ãã®ãããå瀟ã¯ïŒGraidonãçããïŒããŒã ãäœæããŠRustã§äœæ¥ãããããServoãã©ãŠã¶ãŒãšã³ãžã³ã®åºç€ã«ãªããŸããã
æ確ã§ä¿¡é Œæ§ã®é«ãäžé£ã®ã¢ãžã¥ãŒã«ã§æ§æãããçžäºã«çµã¿åãããŠé©åã«æ©èœããå¿ èŠããããŸãã
-Rust Developer ãGraydon Hoare
ãã®åŸãMozillaãšã³ãžã³ã¯ ãã·ã³ã°ã«ã¹ã¬ããã®ã³ã³ãã³ãåŠçã¹ããŒã ãåããŠããããããã«ãã³ã¢ã·ã¹ãã ã§å®å šã«åäœã§ããŸããã§ãã ã ããšãã°ãã·ã³ã°ã«ã¹ã¬ããé¢æ°ã¯ããŠã£ã³ããŠã®ã³ã³ãã³ãã®åœ¢æã§ãããJavaScriptãå®è¡ããŸãã Rustã«ãããã¬ã³ããªã³ã°ã³ãŒãã䞊åã«å®è¡ãããããã¿ã¹ã¯ã«åå²ããCPUãªãœãŒã¹ãç¯çŽããããšãã§ããŸããã
æäœã䞊ååããããšã§æäœãé«éåããããšã«å ããŠãRustã¯ãã©ãŠã¶ãŒã®ã»ãã¥ãªãã£ãæ¹åããŸããã åœæãFirefoxã¯C ++ã§å®è£ ãããŠããã450äžè¡ã®ã³ãŒããå«ãŸããŠããŸããã C ++ã¯ãæ£ç¢ºãªãããã°ã©ãã³ã°èšèªã§ããã现éšã«ãŸã§æ³šæãæãå¿ èŠããããããããã°ã©ãã®ãšã©ãŒãæ·±å»ãªè匱æ§ã«ã€ãªããå¯èœæ§ããããŸãã Rustã®ã¿ã¹ã¯ã¯ãã³ã³ãã€ã©ã䜿çšããŠäººçèŠå ã®åœ±é¿ãæžããããšã§ããã
2010幎ãèšèªéçºè ã¯ä»¥å䜿çšããŠããOCamlã³ã³ãã€ã©ãRustã§èšè¿°ãããã³ã³ãã€ã©ã«å€æŽããŸããã 2011幎ã«Graidonã¯ã³ã³ãã€ã©ãæ£åžžã«ãã¢ã»ã³ãã«ãã§ããããšã瀺ãã¡ãã»ãŒãžãå ¬éãã2012幎ã«RustããŒã ã¯ã³ã³ãã€ã©ã®ã¢ã«ãã¡ããŒãžã§ã³ã®ãªãªãŒã¹ãçºè¡šããŸãããããã¥ã¡ã³ãã¯å®å šã§ã¯ãªãããã«ãé床ã¯çæ³ããã¯ã»ã©é ããã®ã®ãã»ãšãã©ã®èšèªæ©èœãšã¯ãã¹ã³ã³ãã€ã«ããµããŒãããŸããã
幎åã·ã¹ãã ïŒ2012â2014ïŒ
察象èªè ã¯ã倱æããC ++éçºè ãã§ãããã®æç¹ã§ãGraidonã¯Rustã§ã®äœæ¥ããé¢ããä»ã®ãããžã§ã¯ãã«åãæ¿ããŸããã Steve Klabnikã«ãããš ããã®åŸã管çã·ã¹ãã ã¯ãããåæ£ããããŠããŸãã é£éŠæ¿åºã®æ§é ã圢æããããããžã§ã¯ãã®ããŸããŸãªéšåã§å°å ¥ãããå€æŽãå¥ã®éçºè ã°ã«ãŒããæ åœããŸããã
-Rust Developer ãGraydon Hoare
ããŒã ã¯æé·ãç¶ããè€éãªã¿ã€ãã®ã·ã¹ãã ã«ç²Ÿéãã人ã ãç»å Žãå§ããŸããã ãããã£ãŠãã¿ã€ãã·ã¹ãã ã®ç©æ¥µçãªéçºãå§ãŸããèšèªã®ããå€ãã®åŽé¢ãã©ã€ãã©ãªã«æåºãããŸããã
ããšãã°ãRustã®åæ段éã§ã¯ãã¡ã¢ãªã»ãã¥ãªãã£ãŒã匷åããããã«Graidonãå°å ¥ãããã¬ããŒãžã³ã¬ã¯ã¿ãŒïŒGCïŒããå®è£ ãããŸããã ãããããã®åŸãéçºè ã¯ãåã·ã¹ãã ã䜿çšããŠåãã¬ãã«ã®ä¿¡é Œæ§ãæäŸã§ãããšããçµè«ã«éããGCã¯æŸæ£ãããŸããã
ãã®æ±ºå®ã¯ãRustã§äœ¿çšããããã€ã³ã¿ãŒã·ã¹ãã ã«ã圱é¿ããŸããã ãã¬ããŒãžã³ã¬ã¯ã¿ãŒããåé€ãããåããã®èšèªã«ã¯3ã€ã®äž»èŠãªãã€ã³ã¿ããããŸããã
- @ïŒGCã«ãã£ãŠçµã¿ç«ãŠããããã€ã³ã¿ãŒïŒ
- ãïŒäžæã®ãã€ã³ã¿ãŒïŒ
- ïŒïŒ åçšãã€ã³ã¿ãŒ ïŒ
GCãåé€ããåŸããã€ã³ã¿ãŒã·ã¹ãã ã¯å€æŽããã次ã®åœ¢åŒãåããŸããã
- ããã¯ã¹ïŒäžæã®ã€ã³ããã¯ã¹ïŒ
- ïŒïŒããªã³ã¯ããšåŒã°ããåçšãã€ã³ã¿ãŒïŒ
ããã°ã©ãã³ã°èšèªã®éçºã®ãã®æ®µéã§ã¯ãåã·ã¹ãã ã«é¢ä¿ã®ãªãå€ãã®æ¹åãè¡ãããŸããã ããšãã°ãCargoããã±ãŒãžãããŒãžã£ãŒãšCrates.ioãªã³ã©ã€ã³ãªããžããªã§äœæ¥ãé²è¡äžã§ãã éçºè ã¯ãã³ã³ãã€ã©èšå®ãã«ã¹ã¿ãã€ãºããæ©èœãè¿œå ããä»ã®èšèªããRustãžã®ç§»è¡ãç°¡çŽ åããŸããã æ°èŠãŠãŒã¶ãŒã¯ãã³ã³ãã€ã«äžã«ãã®ãã©ã°ãŸãã¯ãã®ãã©ã°ãå¿ èŠãªçç±ãç解ããå¿ èŠã¯ãããŸããã§ããã ãšããã§ãSteve Klabnikã®ãã¬ãŒã³ããŒã·ã§ã³ã§ ãCargoããã±ãŒãžãããŒãžã£ãŒã®ã³ãã³ããèŠã€ããããšãã§ããŸãã
2012幎ãã2014幎ãŸã§ã®æéã¯ãRustã³ãã¥ããã£ã圢ã«ãªãå§ããææã§ãã C ++ãŠãŒã¶ãŒãã¹ã¯ãªããèšèªã®ãŠãŒã¶ãŒãæ©èœããã°ã©ããŒãšãã3ã€ã®å€§ããªããã£ã³ããã圢æããŸããã 圌ãã®å°éç¥èã¯èšèªã«åœ±é¿ãäžããŸãã-åŸã ã«ãé¢æ°åããã°ã©ãã³ã°ãšæç¶ãåããã°ã©ãã³ã°ã®ãã©ãã€ã ãçµã¿åããå§ããŸããã
2014幎3æã«ã¯ãèšèªã®éèŠãªå€æŽãè¡šãããã«äœ¿çšãããRFCããã»ã¹ã圢æãããŸããã ãã®ãœãªã¥ãŒã·ã§ã³ã¯Python PEPã®ã€ã¡ãŒãžãšé¡äŒŒæ§ã«åºã¥ããŠæ§ç¯ãããçŸåšã§ã¯3å件ã®ã³ããããè¡ã£ãŠããŸãã ããã«ãéçºè ã«ãã£ãŠè¡ãããå€æŽãRFCã«åæ ãããŸãã RustããŒã ã®ã«ãŒã«ã«ãããšãã³ãã¥ããã£ãšãœãªã¥ãŒã·ã§ã³ã«ã€ããŠè©±ãåããªããã°ã誰ã倧ããªå€æŽãå ããããšã¯ã§ããŸããã
ãªãªãŒã¹ïŒ2015ïŒ
äœãèµ·ããã®ãã¯ç¢ºãã§ã¯ãããŸããã2015幎ã®åãã«ãRust 1.0 AlphaããªãªãŒã¹ãããŸãã ã èšèªã®ã³ã¢ãå®å®åãããã¯ãã·ã¹ãã ãéçºããæçµçã«isizeããã³usizeãšããååãæŽæ°åintããã³uintã«å²ãåœãŠãŸããã å幎ã®ç¬¬2ååæã®åãã«ãRust 1.0 ã¯ããŒã¿çã«ãªããŸãã-ãã®æç¹ã§crates.ioãªããžããªã«ã¯1,700ã¯ã¬ãŒãïŒ ã³ã³ãã€ã«åäœ ïŒãããããªããžããªããã®ããŠã³ããŒãæ°ã¯100äžãè¶ ããŸããã
-Rust Developer ãGraydon Hoare
2015幎5æãå ¬åŒãªãªãŒã¹-Rust 1.0 ã ãããå®å®ã®å§ãŸãã瀺ããŸããã ãã®æç¹ãããè¡ããããã¹ãŠã®å€æŽã«ã¯åŸæ¹äºææ§ãå¿ èŠã§ãããããã«ããRustãå®éã®ãããžã§ã¯ãã§äœ¿çšã§ããããã«ãªããŸããã 圌ã¯ãã²ãŒã éçºãWebéçºããªãã¬ãŒãã£ã³ã°ã·ã¹ãã éçºãªã©ã®åéã§ã¢ããªã±ãŒã·ã§ã³ãèŠã€ãå§ããŸããã
çç£ãžã®ç§»è¡ïŒ2016幎5æïŒ
èšèªããã£ã1ã€ã®ç¹ã§åªããŠããå Žåãããã¯å€±æã§ã2015幎ãStackOverflowãã©ãããã©ãŒã ã¯éçºè ã察象ã«èª¿æ»ãå®æœããŸããã調æ»ã§ã¯ãã©ã®ããã°ã©ãã³ã°èšèªã䜿çšããããã©ã®ããã°ã©ãã³ã°èšèªãç¥ãããããå°ããããŸããã ãã®åŸãRust ã¯è©äŸ¡ã®3è¡ç®ãåããŸãã ã ãããã1幎åŸã圌㯠1äœã«ãªããŸãã-ãŠãŒã¶ãŒã®79ïŒ ã圌ãšã®ä»äºãç¶ããããšããæåãè¡šæããŸããã
-Rust Developer ãGraydon Hoare
Hacker Newsã®äœæ°ã®1人ã¯ãããã¥ã¡ã³ãã®éææ§ãšã·ã³ãã«ãããã®èšèªã®äž»ãªå©ç¹ãšåŒã³ãŸãã ã ä»ã®ãŠãŒã¶ãŒããPLã®æ©èœã®ç 究ãæ¯æŽããæºåãã§ããŠããRustã³ãã¥ããã£ã®éæŸæ§ãšå奜æ§ã«æ³šç®ããŸããã
ãã ããå€ãã®éçºè ã¯ããã®ã»ãã¥ãªãã£ã¡ã«ããºã ã®ããã«ããã®èšèªã§ã®äœæ¥ãç¶ç¶ããããšã決å®ããŸãã RedditãŠãŒã¶ãŒã®äžäººãèšã£ãããã«ããRustã§ã®ããã°ã©ãã³ã°ã¯ãä¿éºãšä¿è·ãåãããã«ã¯ãŒã«ã®ãããªãã®ã§ãã å¥åŠã«èŠããããšããããŸãããèªåã§äœããå£ãããšãæããããšãªããå€ãã®ããªãã¯ãè¡ãããšãã§ããŸãã
Rustã®å®å®ããŒãžã§ã³ã®ãªãªãŒã¹ä»¥æ¥ãæ¬çªç°å¢ã§ã®ãã«äœ¿çšæéãå§ãŸã£ãŠããŸãã ãããžã§ã¯ãã§Rustã䜿çšããæåã®äŒæ¥ã®1ã€ã¯ Mozillaã§ãã LinuxçFirefox 45ã®ãå éšãã®äžéšã¯Rustã§æžãçŽãããFirefox 47以éãRustã³ãŒãã¯WindowsããŒãžã§ã³ã«ãååšããŸãã 2016幎10æã«çºè¡šãããProject Quantumã«ã¯ãServoã³ã³ããŒãã³ããçµã¿èŸŒãŸããŠããŸãã
Rust 㯠Dropboxã§ã䜿çšãããŠããŸã-補åã®ã³ã¢ã¯ãã®èšèªã§æžãããŠããŸãã Dropbox 㯠ãæ°ããMagic Pocketã¯ã©ãŠãã¹ãã¬ãŒãžãäœæããAmazon S3ããæ å ±ã転éããŸãã ã åœåã¯Goã§å®è£ ãããŠããŸããããè² è·ãé«ãå Žåãã¡ã¢ãªæ¶è²»éãå€ããGoã³ãŒãã®åäœã®äºæž¬æ§ãäœããšããåé¡ããããŸããã ãããã®åé¡ã解決ããããã«ãRustã¯éšåçã«é¢äžããŸããã
æšå¹ŽãRustã䜿çšããŠnpmã§JavaScriptããã±ãŒãžãåŠçãå§ããŸããã Rustã¯ã1æ¥ããã3å5,000äžãã±ãããå®è¡ããã·ã¹ãã ã®é 延ã解æ¶ããã®ã«åœ¹ç«ã¡ãŸããã npmãµããŒãã¹ãã·ã£ãªã¹ãã®ã¢ã·ã¥ãªãŒãŠã£ãªã¢ã ãºã¯ããŠã¯ã©ã€ãã®RustFestã§ã®Rustã®çµéšã«ã€ããŠè©±ããŸããã ããã§ãããªãèŠã€ããããšãã§ããŸãã
ãŸããBitfuryã§Rustã䜿çšããŠããŸãã ããã°ã©ãã³ã°èšèªã¯ã Exonumãããã¯ãã§ãŒã³ãã¬ãŒã ã¯ãŒã¯ãå®è£ ããŠããŸãã RustFest 2017ã«ã³ãã¡ã¬ã³ã¹ã§åããŠãã©ãããã©ãŒã ã玹ä»ãããã®æ©èœã瀺ããæå·é貚äœæãµãŒãã¹ã®äœæ¥ãå®æŒããã¯ãŒã¯ã·ã§ãããéå¬ããŸããïŒExonumã§æå·é貚ãäœæããæ¹æ³ã®ç°¡åãªã¬ã€ãã¯ãã¡ãã«ãããŸã ïŒã
Rustã®å®è£ ã¯ãã¹ããŒãã³ã³ãã©ã¯ãã䜿çšããéã«åœ¹ç«ã¡ãŸããã ããã«ãããExonumã¹ããŒãã³ã³ãã©ã¯ãã¯EthereumïŒãŸãã¯FabricïŒã³ã³ãã©ã¯ããããçç£çã«ãªããŸãã ãã©ãããã©ãŒã ã³ãŒãã¯å®å šã«ãªãŒãã³ã§ã GitHubã®ãããžã§ã¯ããªããžããªã«ãããŸã ã
Rustã¯ãæ å ±ã»ãã¥ãªãã£ã®åéã§ãã¢ããªã±ãŒã·ã§ã³ãèŠã€ããŠããŸãã Torã®ãããªãããžã§ã¯ãã¯ãã§ã«ã³ãŒãã®äžéšãRustã«ç§»æ€ããŠããŸãã
äžè¬ã«ã105瀟ã補åã«Rustã䜿çšããŠããŸãã ãããã®å®å šãªãªã¹ãïŒBitfury GroupãããŒã¯ãããŠããŸãïŒã¯ãå ¬åŒWebãµã€ãã®Friends of RustããŒãžã«ãããŸãã ãŸããRustã§ãœãããŠã§ã¢è£œåãäœæããäŒæ¥ã®æ°ã¯çµ¶ããå¢ãç¶ããŠãããèšèªéçºè ã¯éåžžã«æºè¶³ããŠããŸãã
- 2æ28æ¥ã«ã¢ã¹ã¯ã¯ã§ãéçºè ExonumãBitfury GroupãParity TechnologiesãšRust-mitapãéå¬ããŸãã RustãšWebAssemblyã䜿çšããã¹ããŒãã³ã³ãã©ã¯ãã®äœæã«ã€ããŠèª¬æããŸãã ã¬ããŒãã«å ããŠãExonumã®WASMå¥çŽã®äœæã«é¢ããå®çšçãªéšåããããŸãã ã€ãã³ãã®è©³çŽ°ã«ã€ããŠã¯ã ãã¡ããã芧ãã ãã ã
- 3æ1æ¥ã«ãªãŒãã³ã¯ãŒã¯ã·ã§ãããéå¬ããã¹ããŒãã³ã³ã¿ã¯ãã ãã§ãªããExonumãããã¯ãã§ãŒã³ã®ã¯ã©ã€ã¢ã³ãéšåãWASMã«è»¢éããæ¹æ³ã瀺ããŸãã ããŒãã£ã³ã°ã®è©³çŽ°ã¯ãã¡ããã芧ãã ãã ã
ã€ãã³ããžã®å ¥å Žã¯äºåç»é²ã«ããç¡æã§ãã