Rustæ¯äžéšç³»ç»çº§çŒçšè¯èšïŒåCãC++ãGoçè¯èšç讟计**æèŸå€§å·®åŒãåŠä¹ Rust并äžä» ä» åŠä¹ äžéšè¯èšïŒæŽéèŠæ¯åŠä¹ å®ç讟计**ã
æ们éœæ¯äººïŒæ们ç泚æåæ¯æéçïŒæ们çè®°å¿æ¯äžçš³å®ç--æ¢å¥è¯è¯ŽïŒæ们容æç¯éã
计ç®æºå蜯件æ å€äžåšïŒåšå€ªç©ºãå°é¢ãæµ·æŽãçè³æ们ç身äœäžãæ¯å€©éœæè¶æ¥è¶å€çç³»ç»å®ç°èªåšåïŒè¶æ¥è¶å€ç人äŸèµèœ¯ä»¶(é«çš³å®æ§ãé«èŽšé)ã
èªç©ºçµå讟å€ãèªåšé©Ÿé©¶æ±œèœŠãæ žçµç«ã亀éæ§å¶ç³»ç»ãæ€å ¥åŒå¿èèµ·æåšçãæ€ç±»ç³»ç»äžçé误å ä¹æ»æ¯å±æºäººç±»çåœã
ãéè¿æµè¯æ£æ¥çšåºæ£ç¡®æ§ãåãé»èŸè¯æçšåºæ£ç¡®æ§ãä¹éŽååšç巚倧差åŒãäžå¹žçæ¯ïŒå³äœ¿æ们对代ç çæ¯äžæ ·éœè¿è¡äºæµè¯ïŒæ们ä»ç¶æ æ³ç¡®å®å®æ¯åŠæ£ç¡®ã
ãRustäœäžºäžç§çŒçšè¯èšãçäžåä¹å€ïŒåŠä¹ Rustäžæ¯å 䞺å®è±åšçè¯æ³æçæ ç瀟åºïŒèæ¯å 䞺人们åšçšå®äŸ¿æºçšåºæ¶è·ççä¿¡å¿ãRustéåžžäž¥æ Œå䞥谚ççŒè¯åšæ£æ¥æšäœ¿çšçæ¯äžªåé以åæšåŒçšçæ¯äžªå åå°å ãçèµ·æ¥å®äŒåœ±åæšçŒåæçãå¯æè¡šç°åç代ç ïŒäœä»€äººæ讶çæ¯ïŒæ°æ°çžåïŒçŒåäžäžªææäžæ¯çšçRustçšåºå®é äžæ¯çŒåæœåšæŒæŽççšåºæŽå®¹æ ã
åšåäžç§æ åµäžïŒæšå°äžçŒè¯åšå²çªïŒå 䞺æšçæ¯äžªæäœéœå¯èœå¯ŒèŽå åå®å šæŒæŽã
äžåŸå³äŸ§æŸç€ºäºå¹¶åæ§åå åå®çžå ³çé®é¢ïŒè¿äºé®é¢æ ¹æºäžäžå¯èœåçåšåžžè§(éunsafe)Rust代ç äžãæ以ïŒåªéèŠæ¢æRustïŒä»ä»¬å°±å¯ä»¥æç»è¿æ®µæ¶éŽå äžå€§åçBugïŒå 䞺å®ä»¬äŒå¯ŒèŽæºå¯æ³æŒãæç»æå¡åè¿çšä»£ç æ§è¡æŒæŽã
Linux å æ žæ¯ç±äžå 顶级ç 5% äžç䜌䜌è çŒåçïŒç¶èæ¯å¹Žä»ç¶å¯ä»¥åšCVE(CVEæ¯åœé èåçå®å šæŒæŽåº)äžåç°50å€äžªå®å šæŒæŽãåœç¶ïŒäžæ°çŸäžè¡ä»£ç çžæ¯ïŒè¿ 50 䞪é误埮äžè¶³éãäœæ¯ïŒçæ»é®é¢ïŒè¿è®°åŸåïŒ åœæ们è°è®ºå ³é®ç³»ç»æ¶ïŒå³äœ¿æ¯åŸ®å°çé误ä¹å¯èœå¯ŒèŽçŸéŸæ§çåæãæŽäžçšè¯Žè¿ 50 䞪æ¯åç°çé误ïŒè°ç¥éè¿æå€å°æ²¡æ被åç°çïŒ åŠæ䜿çšRustïŒæ们äŒåšçŒè¯åç°è¿äºé®é¢ ã
ç°åšçŒçšè¯èšäžç å åå®å šäŒŽéçååŸåæ¶çææ¬ ïŒå¹¶åéåžžéè¿åæ¥ååæ§éå®æå圱åçæ°æ®ç»æåæ§è¡è·¯åŸè¿è¡è§£å³ã对äºRustæ¥è¯ŽïŒå¹¶äžäŒéçšè¿è¡æ¶GCè¿ç§æ¹åŒä¿è¯å åå®å šïŒRuståšçŒè¯æ¶å°±è§£å³äºè¿äºé®é¢ã
åšC++
äžïŒåªéèŠäžºäœ¿çšçå
åèŽèŽ£ãäŸåŠïŒåšRustäžïŒåªæåšç»å¯¹éèŠæ¶æ䜿çšMutexïŒèäžRustçŒè¯åšäŒåŒºå¶äœ 䜿çšå®ïŒæä»¥äœ æ°žè¿äžäŒå¿è®°æ·»å å®ãèè¿äžååºæ¬äžéœæ¯é¶ææ¬çãç±äºå€§å€æ°æ£æ¥æ¯åšçŒè¯åšæ§è¡çïŒå æ€çŒè¯åççšåºäžC
æC++
çŒè¯åšçæççšåºé没æ倪倧åºå«ãæ£å 䞺åŠæ€ïŒRustç°åšåšåµå
¥åŒçµåãç©èçœïŒçè³æäœç³»ç»åŒåé¢åéœéåžžæåé -- 以åç±äºé«æ§å¶èŠæ±åäž¥æ Œçèµæºåæ§èœéå¶ïŒè¿äºé¢åç±C
䞻富ã
Rustææ°çæ¬çè³äžºçšæ·ç©ºéŽåžŠæ¥äºSIMDæ¯æãä¹åïŒç±äºAPIçš³å®æ§éå¶ïŒå®ä»
åšbeta
çæ¬äžå¯çšãç°åšïŒäœ å¯ä»¥éè¿çŽæ¥äœ¿çšåéæ什æ䜿çšæ¹äŸ¿çlibåºæ¥éæŸç¡¬ä»¶çæœåã
- 没ææ æçå
å访é®
- 没æçŒå²åºæº¢åº(No buffer overflows)
- 没ææ¬åæé(No dangling pointers)
- 没ææ°æ®ç«äº(No data race)
- rustup: äžåçç®åœå¯ä»¥æ建äžåçrustçæ¬
- cargo: èªåšäžèœœãçŒè¯åéŸæ¥äŸèµé¡¹
- rustfmt: æ ¹æ®æ ·åŒæ ŒåŒårust代ç
- Rust Playground: 以æµè§åšæ¹åŒè¿è¡åå ±äº«ä»£ç ç段
- clippy: è¯æ³æ£æ¥å·¥å ·
- proptest: å±æ§æµè¯æ¡æ¶
- bootimage: ä» Rust å æ žå建å¯åŒå¯Œç£çæ å
- éå«ç¹åŸ(impl Trait): ä»åœæ°è¿åéå
- Non-Lexicalçåœåšæ: æŽæºèœçåçšæ£æ¥åš
- WebAssembly: åšæµè§åšäžè¿è¡Rust
- Async: Async/AwaitãGenerators(yield)
继äºé©¬éAWSãå䞺ãè°·æGoogleã埮蜯MicrosoftåMozillaåïŒFaceBook宣åžå å ¥RuståºéäŒïŒå¹¶æ¿è¯ºå°å 倧对Rustéçšã
Rustè£äºäŒæåå ±æ12人ïŒåå§æåæ¿è¯ºïŒåš2幎å ïŒå°æäŸæ¯å¹Žè¶ è¿100WçŸå çé¢ç®ïŒçšäºRust项ç®ç绎æ€ãåŒååæšå¹¿ã
2021/07/04å·ïŒLinuxæ¯æRustäœäžºç¬¬äºè¯èšä»¥æ¯æè¡¥äžå°Linuxå æ žïŒåŸå°LinuxåºéäŒçå å讀å¯ã
LKML Archive on lore.kernel.org
.
âââ RuståŠä¹ ç¬è®°_åº_2021
â âââ Rustæ建Webåºçšçšåº
â â âââ hyper
â â âââ hyper
â â âââ hyperurl
â â â âââ Cargo.lock
â â â âââ Cargo.toml
â â â âââ src
â â â âââ main.rs
â â â âââ service.rs
â â â âââ shortener.rs
â â âââ shorten
â â âââ Cargo.lock
â â âââ Cargo.toml
â â âââ src
â â âââ main.rs
â âââ Rustçœç»çŒçš
â â âââ README
â â âââ åŒæ¥çœç»IO
â â âââ æ建åæ¥Redisæå¡åš
â âââ exercises
| | âââ advanced_errors
| | âââ clippy
â â âââ collections
| | âââ conversions
â â âââ enums
| | âââ error_handling
â â âââ functions
| | âââ generics
| | âââ if
| | âââ macros
| | âââ modules
| | âââ move_semantics
â â âââ options
| | âââ primitive_types
| | âââ standard_library_types
â â âââ strings
â â âââ structs
| | âââ tests
| | âââ threads
â â âââ traits
â â âââ variables
| | âââ quiz1.rs
| | âââ quiz2.rs
| | âââ quiz3.rs
| | âââ quiz4.rs
â âââ æ¥å¿
â â âââ rustæ¥å¿è®°åœ
â â âââ rustæ¥å¿è®°åœ_log4rs
â â âââ rustæ¥å¿è®°åœ_slog
â âââ çœç»çŒçš
âââ RuståŠä¹ ç¬è®°_åºç¡_2021
â âââ rustå¿«æ¥æå
â âââ unsafeåå€éšåœæ°è°çš
â â âââ rust_c
â â âââ unsafe
â âââ å
â â âââ å
â â â âââ å
â â âââ ç®±
â â â âââ ç®±
â â âââ æš¡å
â â â âââ æš¡å
â â âââ 富å
¥
â â âââ å·¥äœç©ºéŽ
â â âââ å·¥äœç©ºéŽ
â âââ åœæ°
â â âââ éå
â â â âââ éå
â â â âââ äœäžºåæ°
â â â âââ äœäžºè¿ååŒ
â â âââ åœæ°
â âââ 对象
â â âââ å€å¶
â â âââ æ¹æ³
â â âââ ææ
â â âââ æ³å
â â âââ ç¹åŸ
â â â âââ äŒ é
â â â âââ å
³è
â â â âââ åå
â â â âââ å€æ
â â â âââ æ³å
â â â âââ 继æ¿
â â â âââ å
¶å®
â â â âââ ç¹åŸ
â â â âââ æäœç¬Š
â â â âââ ç¹åŸåºéŽ
â â â âââ ç¹åŸå¯¹è±¡
â â â âââ ç¹åŸå¯¹è±¡å对象å®å
šæ§
â â âââ è¿ä»£åš
â âââ å·¥å
·
â â âââ å·¥å
·
â âââ 并è¡
â â âââ 计ç®æºç³»ç»ç»æ
â âââ 并å
â â âââ åæ¥
â â âââ åŒæ¥
â â | âââ PinåUnpin.md
â â | âââ asyncåawait!
â â | âââ futureåç
â â | âââ waker
â â âââ æ¶æ¯
â â âââ 线çš
| | | âââ barrier(å±é)
| | | âââ mutex(äºæ¥é)
| | | âââ rwlock(读åé)
| | | âââ send_sync
| | | âââ 代ç æ§è¡æµçš
â â | âââ 线çšç并åæš¡å
â âââ æ°æ®
â â âââ åç
â â âââ åé
â â âââ æé
â â âââ æ䞟
â â âââ ç»æ
â â âââ èå
â â âââ å笊䞲
â â âââ å
šå±åŒ
â âââ æµè¯
â â âââ åå
æµè¯
â â âââ åºåæµè¯
â âââ ç±»å
â â âââ å«å
â â âââ åé
â â âââ åžžé
â â âââ ç±»å
â â âââ 蜬æ¢
â â âââ ç±»å蜬æ¢
â â â âââ FromåInto
â â â âââ ToStringåFromStr
â â â âââ TryFromåTryInto
â â âââ ç±»å倧å°
â âââ è¿é¶
â â âââ å®
â â âââ 泚é
â âââ é误
â â âââ åŒåžžå€ç
â â âââ å¯æ¢å€é误
â â âââ äžå¯æ¢å€é误
â âââ éåœ
â â âââ å®è£
â â âââ çŒè¯
â â âââ èµæº
â âââ æææ
â â âââ Borrow
â â âââ æææ
â â âââ çåœåšæ
â â âââ åŒçšååçš
â âââ 衚蟟åŒ
â â âââ æ§å¶æµ
â â âââ 衚蟟åŒ
â â âââ è¿ä»£åš
â â âââ æš¡åŒå¹é
â âââ å
å管ç
â âââ å
éšå®ç°
â âââ å®åå
çŒçš
â âââ å®
â âââ å
çŒçš
âââ