运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

【Rust日报】2020-01-13 用rust编写的最小系统兼容服务管理器 : rustysd 更

运维开发网 https://www.qedev.com 2021-05-19 14:39 出处:51CTO 作者:mob604756f79c64
【Rust日报】2020-01-13 用rust编写的最小系统兼容服务管理器 : rustysd 更,mob604756f79c64的博客原创的Java文章。

用rust编写的最小系统兼容服务管理器 : rustysd 更新

Rustysd是一个服务管理器,复制系统行为一部分配置。它着重于服务管理器的核心功能。因此,rustysd提供的功能数量很少。如果使用musl和strip'ed构建二进制文件,则二进制文件可能会很小,但通常rust会生成相对较大的二进制文件。

这意味着只要服务知知悉rustysd可以读取systemd单元文件(的一部分)并像运行systemd一样运行它们。由于rustysd不需要是PID1,因此它可以为不使用systemd的Linux发行版以及FreeBSD提供此功能(现在还未经测试其他BSD)。另外,它可以在docker中用作PID1,因此您可以运行需要由systemd在容器中运行的服务。

rustysd的下一个目标是:

  • 成为一个很好的工具

  • 成为rustysd在VM中充当init系统

  • 开发一个测试套件以能够捕获回归/错误的功能

项目仓库地址:https://github.com/KillingSpark/rustysd/tree/v0.1.0

用于Rust的Cranelift后端

目前项目正在进行中的工作是为在Cranelift 上构建的Rust创建后端,这有望大大减少调试编译耗时。

除了Rustc测试套件中的57个测试之外,其他所有测试都已通过,并取得惊人的进步。

几乎所有这些工作都是由bjorn3一手完成的。

详情前往项目GitHub仓库查看。

Rust数据库连接性(RDBC)更新

同时支持面向行和面向列的数据实际上非常简单。RDBC API应该支持将成批数据提取到实现RowSet特征的行集中,从而提供面向行和面向列的访问。

因为列中的所有值都具有相同的数据类型,所以我们可以使用类型安全的特征来访问这些值。

pub trait ColumnAccessor<T> {

   fn get(&self, i: u64) -> Result<Option<T>>;

}

行通常包含混合类型,因此这里我们将在方法而不是特征上指定泛型。

pub trait RowAccessor {

   fn get<T>(&self, i: u64) -> Result<Option<T>> where Self: Sized;

}

RowSet特征示例

pub trait RowSet {

   /// get meta data about this row set

   fn meta_data(&self) -> Result<Box<dyn RowSetMetaData>>;

   /// Get an accessor for a row containing mixed types

   fn get_row(&self, i: u64) -> Result<Box<dyn RowAccessor>>;

   /// Get a column as a type-safe accessor

   fn get_column<T>(&self, i: u64) -> Result<Box<dyn ColumnAccessor<T>>>;

}

支持的数据RowSet将是面向行的或面向列的,始终可以同时以行和列的形式访问数据,但是其中一种方法肯定比另一种方法更有效。对于大多数用例来说这可能并不太重要,但是在某些用例中却很重要,因此元数据应公开有关本机格式的信息。

pub trait RowSetMetaData {

   fn row_oriented(&self) -> bool;

   fn num_rows(&self) -> u64;

   fn num_columns(&self) -> u64;

   fn column_name(&self, i: u64) -> String;

   fn column_type(&self, i: u64) -> DataType;

}

RDBC只是底层数据访问和查询执行API。它不打算取代像Diesel这样的ORM,尽管很快将有可能使用RDBC代替Diesel构建应用程序。

前往博客了解有关RDBC连接与RDBC迁移至 tokio 的消息。

git-poly:用rust编写的极简multi repo工具

帮助越跨50多个git仓库进行开发更加轻松的工具。这是一个简单、轻巧的工具,可并行处理许多git repos。

以下项目与本项目处于同一位置:

  • git repo

  • git subtree

  • git slave

  • git submodule

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消