只要验证者的输出为"这是安全的,这是安全的。或者"我不知道这是否是安全的,所以我赢了' t让你运行它",无论"安全"你要。在微不足道的情况下,验证者可以发出"唐' t知道"对于每个程序。诀窍是在挑选"安全",然后使可证实的安全子集足够大,以便在实践中有用,并且对于程序员来说,他们可以留在可怕的安全范围内的程序员。尝试编写他们知道的代码是安全的,而不是反复沮丧,但系统被系统拒绝。现有技术表明,即使对于高性能通用语言,也可以在实践中实现'虽然我认为它仍然是一个积极的研究主题。 (如果您以这样的语言编写整个操作系统,可能会有几个地方需要做出不可能安全的事情,但在这种情况下,您可以将无法移动的安全代码移动到可信计算中基地并希望它' s足够小,你可以用其他技术手动验证它。就像你使用rust,' overafe'块是不可推动的安全代码,我猜你' d想要将所有这样的块移动到TCB中的外部模块中,然后强制执行该应用程序不能使用'不安全'本身,并且必须拨打这些受信任的模块。)如果您的定义"安全"允许非暂停程序,并禁止禁止。内存安全问题,然后您的语言的可验证子集仍然可以完成:在例如,您可以轻松地为基于磁带的图灵机器编写模拟器。 JavaScript,程序显然将是内存安全的(因为js始终是),并且模拟器仍然可以计算任何图灵机可以(忽略关于无限内存的需要谱值的任何东西。除非你想保证终止,否则你不必牺牲完整性。 (BPF确实希望保证终止,但软件隔离的一般概念(在奇点感觉中)并不需要。)