Mozilla 發布的編程語言,Rust 0.3 發布

jopen 12年前發布 | 6K 次閱讀 Mozilla

Rust 0.3 發布了,Rust 是 Mozilla 目前正在開發一個新的編程語言,由web語言的領軍人物Brendan Eich(js之父),Dave Herman以及Mozilla公司的Graydon Hoare 合力開發。

創建這個新語言的目的是為了解決一個很頑疾的問題:軟件的演進速度大大低于硬件的演進,軟件在語言級別上無法真正利用多核計算帶來的性能提升。Rust是針對多核體系提出的語言,并且吸收一些其他動態語言的重要特性,比如不需要管理內存,比如不會出現Null指針等等。

Rust 最早是在Mozilla的社區峰會上公之于眾的,當時就有人問以后是否會用Rust重寫Firefox,Brenda說希望如此。Rust目前還處于初期的開發階段,開發團隊目前并不想花太多的時間在語法上,不過他們還是提供了一小段代碼:

iter pairs() -> tup(int,int) {

let int i = 0;

let int j = 0;

while (i < 10) {

put tup(i, j);

i += 1;

j += i;

}

}

fn main() {

let int i = 10;

let int j = 0;

for each (tup(int,int) p in pairs()) {

  log p._0;

  log p._1;

  check (p._0 + 10 == i);

  i += 1;

  j = p._1;

}

check(j == 45);

}</pre>

Rust 0.3 Changes:

   
   * ~1900 changes, numerous bugfixes

   * New coding conveniences
      * Integer-literal suffix inference
      * Per-item control over warnings, errors
      * #[cfg(windows)] and #[cfg(unix)] attributes
      * Documentation comments
      * More compact closure syntax
      * 'do' expressions for treating higher-order functions as
        control structures
      * *-patterns (wildcard extended to all constructor fields)
   * Semantic cleanup
      * Name resolution pass and exhaustiveness checker rewritten
      * Region pointers and borrow checking supersede alias
        analysis
      * Init-ness checking is now provided by a region-based liveness
        pass instead of the typestate pass; same for last-use analysis
      * Extensive work on region pointers
   * Experimental new language features
      * Slices and fixed-size, interior-allocated vectors
      * #!-comments for lang versioning, shell execution
      * Destructors and iface implementation for classes;
       type-parameterized classes and class methods
      * 'const' type kind for types that can be used to implement
        shared-memory concurrency patterns
   * Type reflection
   * Removal of various obsolete features
      * Keywords: 'be', 'prove', 'syntax', 'note', 'mutable', 'bind',
                 'crust', 'native' (now 'extern'), 'cont' (now 'again')
      * Constructs: do-while loops ('do' repurposed), fn binding,
       resources (replaced by destructors)
   * Compiler reorganization
      * Syntax-layer of compiler split into separate crate
      * Clang (from LLVM project) integrated into build
      * Typechecker split into sub-modules
   * New library code
      * New time functions
      * Extension methods for many built-in types
      * Arc: atomic-refcount read-only / exclusive-use shared cells
      * Par: parallel map and search routines
      * Extensive work on libuv interface
      * Much vector code moved to libraries
      * Syntax extensions: #line, #col, #file, #mod, #stringify,
       #include, #include_str, #include_bin
   * Tool improvements

      * Cargo automatically resolves dependencies
</pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!