专栏首页Rust语言学习交流【Rust日报】 2019-08-30 - Linux 未來可以使用 Rust 開發內核

【Rust日报】 2019-08-30 - Linux 未來可以使用 Rust 開發內核

Linux 未來可以使用 Rust 開發內核

Josh Triplett (Linux主要開發者之一)在一次的演講提到了Rust的可能性,

但他強調他不是要大家一定要使用Rust,他只是覺得Rust可以給Linux帶來更多可能性,

Josh也跟Greg Kroah-Hartman(Linux主要開發者之一)談過,Greg說他願意接受內核中用於在Rust中編寫驅動程序的框架

  1. 現在Rust默認沒有啟用即使你做了“make” "allyesconfig" 這樣人們就不需要安裝Rust來構建內核,
  2. 它顯示了除了編寫C之外的真正好處,例如安全的內核API。

看來大家在未來有很大的機會可以使用Rust來編寫Linux Kernel。

Read more

Wasmtime - 可以讓 php, node js, rust, c++ 直接執行wasm 的 runtime

可以讓 php, node js, rust, c++ 直接執行wasm的一個runtime

影片裡用 markdown 的庫展現了 wasmtime 的可能性

從四種語言語言呼叫 wasm 裡編譯好的函數,非常方便

Read more

Lumen:針對WebAssembly的Erlang VM

使用rust nightly

功能包括 Compiler 與 Runtime

開發Lumen的主要動機是將基於BEAM的應用程序(即用Elixir,Erlang,LFE,Alpaca等編寫的程式)編譯成WebAssembly模塊

原因是官方BEAM的實現與WebAssembly的現有技術不兼容,就是Emscripten編譯C / C ++程式的這部份

一個問題是WebAssembly中運行VM執行bytecode會產生不小的開銷(BEAM bytecode由BEAM VM解釋,BEAM VM作為WASM執行,它被瀏覽器WebAssembly引擎編譯執行)。

這也要求每個BEAM模塊要能讓能夠從瀏覽器執行並由VM加載。即使BEAM VM可以直接編譯為WASM,這些問題也沒有簡單的解決方案。

Lumen的BEAM bytecode是用AOT執行,而不是在JIT。這避免了BEAM bytecode的膨脹,產生出的WASM模塊可以直接加載,並且沒有JIT的runtime 開銷。

Read more

param_attrs 將在Rust 1.39.0版本穩定

讓人在#[feature(param_attrs)] 小括號中加入參數

fn len(
    #[cfg(windows)] slice: &[u16],
    #[cfg(not(windows))] slice: &[u8],
) -> usize {
    slice.len()
}

可以做到程式碼裡,依不同作業系統編譯不同的程式碼。

Read more

在rust 1.39 nightly 你可以使用aljabar的矢量來自動序列化任何大小的數組。

程式碼裡序列化成json

use aljabar::{Matrix, matrix, Vector, vector};

#[test]
fn test_serialize() {
    let v = vector![ 1u32, 2, 3, 4, 5, 6, 7 ];
    assert_eq!(
        serde_json::to_string(&v).unwrap(),
        "[1,2,3,4,5,6,7]"
    );
    let m = matrix![
        [ 1u32, 2 ],
        [ 3u32, 4 ],
    ];
    assert_eq!(
        serde_json::to_string(&m).unwrap(),
        "[[1,3],[2,4]]"
    );
}

本文分享自微信公众号 - Rust语言学习交流(rust-china),作者:damody

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【Rust日报】 2019-08-04:知乎专栏【CPP工程师的Rust迁移之路】新文章出炉

    知乎网友@黄珏珅开设了本专栏,主要针对对 Rust 感兴趣的 C++ 工程师,介绍了完成相同任务 C++ 和 Rust 中的异同,感兴趣可以专注专栏。本周第三篇...

    MikeLoveRust
  • 【Rust日报】 2019-07-30:CPP工程师的Rust迁移之路

    知乎网友@黄珏珅开设了本专栏,主要针对对 Rust 感兴趣的 C++ 工程师,介绍了完成相同任务 C++ 和 Rust 中的异同,感兴趣可以专注专栏,目前已经有...

    MikeLoveRust
  • 【Rust日报】 2019-08-16 - Rust如何走进Facebook

    Chaos: 今天刚看到Facebook内部meetup流出的Slides,原文标题很有意思:Bringing Rust Home to Meet the Pa...

    MikeLoveRust
  • PlayCoin量子英雄游戏定制开发

    PlayCoin量子英雄系统开发【韩先生181-4895-4141】PlayCoin量子英雄游戏定制开发

    用户2664499
  • 以太坊客户端连接远程节点

    本文主要介绍以太坊客户端geth和Ethereum Wallet连接远程节点的方式

    JouyPub
  • 典型机械臂结构-(图例详解)

    1.手臂直线运动机构 常见方式:行程小时:采用油缸或汽缸直接驱动;当行程较大时:可采用油缸或汽缸驱动齿条传动的倍增机构或采用步进电机或伺服电机驱动,并通过丝杆...

    机器人网
  • 数据的分页处理

    当页面中要显示的内容过多需要分多页显示、或是数据量过大内存吃不消时,需要分页处理。 原理:每次从数据库中取出一定量的数据,通过jsp页面显示 实现: ①写一个类...

    欠扁的小篮子
  • vagrant安装和使用

    在一次偶然的机会我碰到了vagrant,Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境,总之简单的说vagrant就是一款管理虚拟机的工具

    bboysoul
  • Gogland更名为GoLand,并附加新功能

    IDE改名 Jetbrains在2017年11月02日正式对外公布,Gogland IDE正式改名为GoLand。在社区之前的文章《你们使用的Go IDE要改名...

    李海彬
  • Leetcode: Set Matrix Zeroes

    题目: Given a m x n matrix, if an element is 0, set its entire row and column to...

    TheOneGIS

扫码关注云+社区

领取腾讯云代金券