it资讯 > > 正文

微软研究院开源编程言语Verona学习RustCyclone等特性

2020-05-19

机器之心报导

作者:一鸣、Jamin

近来,微软研讨院开源了一个名为 Verona 的项目。这是一个面向研讨的编程言语,旨在处理内存办理和计算机安全方面的问题,并学习了 Rust 等的新特性。

计算机安全中许多问题都和内存办理相关,许多相关研讨机构正在探求一些办法。近来,微软研讨院开源了一个研讨型的编程言语项目——Verona。

Verona 言语是一个开源项目,微软研讨院期望经过这个项目协助学界研讨更好的内存办理办法。据悉,该项目吸收了 Rust、Cyclone 的一些特色。

开源地址:https://github.com/microsoft/verona

Verona 言语是什么

Verona 是一个微软研讨院建议的项目,用于研讨并发方面的问题。研讨者期望供给一种新的并发模型,能够无缝地和一切权结合。

依据微软给出的介绍,Verona 项目旨在探究有关言语和 runtime 方面的研讨,以完结安全的可扩展内存办理和分区作业。

首要的研讨问题如下:

假如规划的言语没有并发骤变,是否能够构建可扩展的内存办理;

能否在不献身内存办理的情况下,运用线性区域来消除每个目标线性度的约束;

能否运用言语等级的分隔?

现在 Verona 仍然是一个处于很前期的研讨类项目,部分类型查看器还有待完结,一起完结的言语功用也较少。

社区点评

项目开源后引起了社区的评论。一些开发者以为,Verona 测验笼统一切者模型,更挨近人们的运用习气,能够在不失安全性的情况下创立数据结构,可是是否能够成功有待调查。

还有开发者以为,从微软自身(而不是微软研讨院)的视点来看,树立一个像 Go 言语那样的原生言语也是应该的。

Verona 要处理的问题

「体系编程言语」是一个有着广泛规模的问题。从高档要害功能体系到初级的内存办理器,以及内核模块都有所触及。体系编程有两个不同的方面:

可猜测性

推迟

资源占用

原始拜访(Raw access)

可将内存直接视作位(bits)和字节(bytes)

硬件层面运用更少的笼统(乃至彻底不需求)

并发骤变和内存安全

在 Verona 项目中,研讨者以为抛弃并发型骤变(concurrent mutation)是可扩展内存办理的必要一步。经过消除并发型骤变,开发者就不能将并发完结成库。通常情况下有两种挑选,露出「unsafe」以启用不安全的库去完结并发(如 Rust),或许为言语供给一个并发模型(如 Pony)。

前者意味着编程言语只能依靠较少的不变量,因为它无法了解那些非安全模块中的代码是怎么供给并发才能的。后者意味着需求一个惊人的 Concurrency Story,因为只能有一个 Concurrency Story。

同享一切权

在 Verona 中,研讨者引进一种新的并发型编程模型:并发一切者,简称 cowns。它封装了一些资源集(如内存区域),一起保证了每次由一个履行线程拜访这些资源。

在 Verona 中,咱们我们能够将一个目标包装在 cown 中,使其并发。

一旦运用者将一个目标包装在一个 cown 中,便只能经过调度的办法去拜访它。在 Verona 中,这一办法经过要害词 when 完结的。

分区

Verona 运用分区和目标组,作为一切权中的基本概念。研讨者没有将目标一切权指定为一个 reference 有一个目标,而是将其归纳为一个引证能够对应具有一个分区,而一个分区是一组目标。在一个分区内,任何目标都能够引证该分区内的任何其他目标。可是研讨者对拓扑结构没有约束。当整个分区的 reference 消失时,则收回整个分区。

在类型中,运用 iso(isolated)去表明这是对某个分区的引证。关于可变的则运用 mut 表明,在类型中表明可变但不行具有的引证。当 mut 用于字段类型时,引证指向与字段目标坐落同一分区。当对参数类型运用 mut 时,引证会指向不知道分区中的目标。这学习了 Rust 中的一种类型。

当分配一个目标时,指定它是否应该在自己的分区中:

或许与另一个目标在同一分区中:

分区能够嵌套,并构成一个分区树,其间的根分区要么在仓库中或在 cowns 中。

体系测验

由 P 和 P# 启示,Verona 的 runtime 和体系测验在规划时深度结合。Verona 的并发模型让一切的并发交互都在 runtime 上进行。

根底的运用原本是针对 runtime 的测验,可是研讨者想到了一种言语上的代替编译器,因为协助测验。它由 veronac-sys 和 interpeter-sys 构建,需求以下额定的参数:

所以

运用如下指令,便能够运转 100 个穿插存取(一种内存加快办法)样例。

据项目介绍称,这一项目期望能够经过开源和研讨界打开更多的协作。现在项目仍在前期阶段,关于微软自身运用的工程建设项目不会有影响。

本文为机器之心报导,转载请联络本大众号取得授权。

-

-

相关阅读

kzhuaiming资讯网