返回

文章详情

展示HN:Wyzer编程语言

Hacker News2026年8月7日 12:28

"简单并不是缺乏力量,而是没有虚张声势的力量。" ~ Atiksh Sharma 随意地在任何地方使用这个矫揉造作的引用,哈哈。 Wyzer是一种静态类型、编译型、面向资源的编程语言,具有通过编舞式编程和Perceus内存模型集成的分布式安全性。 Wyzer的动机:Rust保证了进程内的安全,但对以下情况没有作用:分布式死锁、协议不匹配、跨服务正确性。 为了解决这个问题,Wyzer引入了编舞式编程的概念,这是为解决该问题而作出的少数几次严肃尝试之一。欢迎贡献,如果你想为语言做出贡献,请阅读RESEARCH.md。也请加入我们的Discord服务器:)) https://discord.gg/RhpPhkTrVu 文档 要学习如何在Wyzer中编程,请查看我们的官方文档:介绍、变量和类型、控制流、函数和结构、内存模型、如何在Wyzer中编码。 Wyzer旨在简单、明确、易于阅读。以下是编写Wyzer代码的一些快速示例。 1. 变量和类型 一切都有明确的类型,变量默认是不可变的(不能更改)。如果想更改变量,必须明确使用var而不是let。你也可以使用const定义编译时常量。 fn main() { const MAX: u32 = 100; // 编译时常量 let x: u32 = 10; // 不能被改变 var y: u32 = 20; // 可以被改变 y = y + x; std::io::println(y); } 2. 结构体和数据 可以定义自定义数据结构并直接访问其字段。 struct Point { x: u32, y: u32 } fn main() { let p: Point = Point { x: 10, y: 20 }; std::io::println(p.x); } 3. 控制流 Wyzer支持标准的if/else、while和for循环。注意,循环条件不需要括号。 fn main() { let mut i: u32 = 0; while i < 3 { std::io::println(i); i = i + 1; } } 4. 错误处理和匹配 错误并不会被隐藏。可能失败的函数返回Result<T, E>。你可以使用match表达式安全地处理成功(Ok)和错误(Err)两种情况。请注意,match 是一个表达式,因此如果作为独立语句使用,它需要一个分号! fn main() { let result: Result<u32, str> = Ok(42); match (result) { Ok(value) => std::io::println(value), Err(err_msg) => std::io::println(0) }; } 常见问题:它是什么,为什么存在,以及实际的新内容 一份简单的无数学内容指南。用这个来快速解释项目。 1. Wyzer是什么,一段话 Wyzer是一种基于一个理念构建的编程语言:大多数严重的问题(如内存错误、死锁和网络错误)发生的原因是它不清楚谁拥有资源。Wyzer使用一个所有工具都通用的所有权规则来解决内存、并发和网络问题,而不是使用三个不同的工具。 2. 为什么要创建一种新语言?这是一个很好的问题,诚实的答案应该从现有选项的优点出发,而不是指出它们的缺点。Rust证明了可以在没有垃圾回收器的情况下安全地管理内存。这很好,但Rust学习起来很困难,其规则使得一些常见的代码结构难以撰写。Go、Java、C#和Python使用垃圾回收器,这使得它们更易用,但速度较慢,不那么可预测。这对于实时或低级系统是不利的。网络编程仍然主要依赖于手动操作。你编写两个程序,希望它们能正确通信。当它们不时,你就会遇到错误。 Wyzer的目标是:在没有困难的情况下获得Rust的安全性,并使用相同的规则使网络程序同样安全。 3. 它实际上有什么新内容?大部分Wyzer的组件已经存在。新内容在于将它们组合在一起。 Perceus引用计数:快速的内存管理,没有Rust的复杂性。我们借鉴了Koka和Lean 4。 编舞式编程:编写一个网络规则,为每台计算机创建代码。我们借鉴了学术研究。 新内容是:我们不仅将编舞理念用于网络,还用于线程和中断。完全相同的规则证明了内存安全、中断安全和网络安全。好处在于:你只需学习一条规则即可安全地管理内存、线程和网络。 4. 核心设计原则 这些是驱动我们决策的价值观。它们解释了为什么Wyzer是这样的。 书写一件事情的唯一方法。如果有两种方法可以编写同一件事,我们会去除一种。没有隐藏的魔法,但保持代码整洁。重要的东西应该在代码中可见,但不应需要编写额外的样板代码。让编译器来做工作,除非这会令人困惑。我们希望编译器能够解决问题,但当事情变得复杂时我们需要明确的规则。 诚实地说明尚未完成的部分。我们清晰地标记未解决的问题,以便人们知道需要改进的地方。 5. 核心语义,用简单语言表达 本节是正式规则的简单映射。首先阅读这一部分以理解基础知识。 内存(第5节):你编写的是不改变数据的函数式代码。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡