Ü 编程语言

Hacker News Top 工具

摘要

Ü 是一种静态类型的编译型编程语言,专为可靠性和速度而设计,具有安全/不安全代码分离、RAII 和 LLVM 后端。它的目标是优于 C++ 且比 Rust 更易用。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/06/04 00:43

Panzerschrek/U-00DC-Sprache Source: https://github.com/Panzerschrek/U-00DC-Sprache

Ü编程语言

Ü是一种静态类型编译编程语言,专为编写既可靠又快速的程序而设计。它具备安全代码与不安全代码的分离、编译时正确性检查、强大的抽象特性(如RAII和模板)、封装机制、丰富的类型系统、lambda表达式、协程以及许多其他实用功能。Ü采用RAII进行内存和资源管理(不涉及垃圾回收),但在不安全代码中仍可使用手动内存管理。只要完全不涉及不安全代码,或不安全代码编写正确,Ü就是内存安全且竞态安全的。Ü深受C++启发,但不具备其缺点。同时,它也受到Rust影响,但影响较小,因此与Rust相比使用起来要简单得多。与任何其他编程语言在设计和功能上的相似之处纯属巧合。

Ü编译器基于LLVM库,因此充分利用了其强大能力,包括大量优化以及对多种CPU架构和操作系统的代码生成支持。此外,Ü有两个编译器:第一个用C++编写,第二个大部分用Ü自身编写(前端部分,后端仍然是LLVM)。除了编译器,Ü还包含许多其他组件。Ü提供自己的标准库,包含基本容器类、辅助工具和操作系统交互功能。还有一套构建系统,用于简化复杂Ü程序的构建并(部分地)管理包。为提升开发体验,Ü还提供了语言服务器以及适用于某些IDE和文本编辑器的多种语法高亮文件。最后但同样重要的是,Ü有一个C头文件转换工具,可简化与外部代码的交互。

支持的系统

下表列出了支持运行和目标的操作系统与架构。

操作系统架构运行Ü编译器目标备注
Windowsx86++可能需要安装MSVC。
Windowsx86_64++同时也支持运行为x86编译的Ü编译器。
GNU/Linuxx86++可能需要安装32位C库。
GNU/Linuxx86_64++
GNU/LinuxAArch64++
FreeBSDx86_64++
OS XAArch64+±仍处于实验阶段,部分标准库功能可能无法正常工作。

除x86、x86_64和AArch64外的CPU架构未经测试,但如果Ü编译器在构建时启用了这些架构支持(参见 LLVM_TARGETS_TO_BUILD 选项),它们可能可以工作。由于LLVM库中的一些错误,不支持使用x32 ABI的GNU/Linux。

文档

文档可在此处获取:英文 (https://panzerschrek.github.io/U-00DC-Sprache-site/docs/en/contents.html),俄文 (https://panzerschrek.github.io/U-00DC-Sprache-site/docs/ru/contents.html)。语言本身有详细描述,其他组件有基础但不够深入的文档。此外,还有一些基础用法示例。

为什么选择Ü?

简单回答是:在安全性、可靠性、表达力和功能可用性方面,Ü优于许多其他编程语言。下表比较了包括Ü在内的各种编程语言的重要特性、优点和缺点。表中仅列出可与Ü直接比较的语言——无繁重运行时和/或GC的静态类型编译语言。

特性/语言CC++SwiftZigOdinRustÜ
构造函数(特殊的构造方法,而非用户自定义名称的工厂方法)-++---+
析构函数(对象销毁时自动调用的特殊方法)-++--++
封装(限制某些项仅能从某些作用域访问的可能性)-++++++
内存安全(无越界读写、无释放后使用等错误)--+⁶--++
线程安全(无竞态条件)-----++
类型模板-++++++
函数模板-++++++
模板中的鸭子类型(无需强制指定模板类型要求)-+⁴-++-+
引用(自动创建引用和解引用)-+-⁷---¹⁵+
函数重载-++-+¹¹-+
运算符重载-++--++
无摩擦复制(通过 = 操作符获取值的深拷贝)-¹++-⁹-¹²-¹⁶+
编译时计算-²+-++++
编译时类型信息---+--+
类继承及基于它的运行时多态-++--¹³-+
无异常(即不可能隐式跳过控制流传递)+³-+⁸++±¹⁷+
异步函数-+⁵+±¹⁰-++
lambda(表达式上下文中定义的匿名函数,有时称为闭包)-++--¹⁴++

脚注 1 - 结构体可通过 = 复制,但仅为浅拷贝。 2 - 仅有限地编译时计算常量如 1 + 2,无编译时变量常量和函数求值。 3 - 仍可使用 setjump/longjump,但通常来说这不是语言特性,几乎任何语言都可以实现。 4 - 在某些罕见情况下,模板中需要 typename 关键字。较新的C++标准中有概念(concepts),但如果需要鸭子类型,可以避免使用它们。 5 - C++ 具有更底层的协程,不仅可以实现异步函数,还可以实现生成器和其他构造。 6 - 语言的新版本中加入了内存安全性。 7 - 通常没有引用,有 inout 函数参数,但它们要求传递参数时指定 &。 8 - Swift 有 throw 关键字、throws 函数说明符和 catch 语句,但没有意外的控制流,因为每个可能的错误值必须显式处理或传递出去。因此,它更像是一个函数的第二个返回通道,而非真正的异常。 9 - 运算符 = 仅创建浅拷贝,与C一样。 10 - 异步函数目前正在开发中。 11 - 重载是显式的,需要添加额外代码。 12 - 运算符 = 仅创建浅拷贝,与C一样。 13 - 存在子类型多态,但没有基于运行时实际类型的正确继承式多态(通过虚函数或类似机制)。 14 - 只有在其他函数内部定义的无捕获函数。 15 - Rust 所谓的“引用”实际上只是指针,需要添加 & 来创建引用,使用 * 解引用。 16 - 所有类型分为两类:第一类允许通过 = 复制(基本是 memcpy),第二类需要显式调用 clone 方法。 17 - Rust 代码中不能抛出异常,但如果异常来自外部代码(如C++),Rust 支持栈展开(调用析构函数)。编写代码时应考虑展开的可能性。

由此可见,只有Ü同时具备强大的安全/可靠性保证以及许多必要且易于使用的特性和抽象。其他语言要么不安全,要么缺少一些对高效编程至关重要的特性。

如何构建

构建项目需要现代的C++编译器(clang、GCC、MSVC)。还需要 CMake 和 Ninja。

选项0 - 使用 LLVM 源码构建

  • 在此处下载 LLVM 源码 (https://github.com/llvm/llvm-project/releases/)(本项目使用版本17.0.6)。
  • 针对 source/CMakeLists.txt 文件运行 cmake,为你喜欢的IDE或构建系统生成项目。必须在 cmake 参数中设置 LLVM_SRC_DIR。
  • 为了加速构建,可以通过 cmake 变量 LLVM_TARGETS_TO_BUILD 禁用不必要的目标构建。例如,仅设置为 X86。
  • 建议禁用 LLVM 测试和基准测试。更多信息请参阅 LLVM 文档。
  • 执行构建。

选项1 - 使用 LLVM 二进制库构建

  • 通过系统包管理器安装合适版本的 LLVM 库,或在此处手动下载 (https://github.com/llvm/llvm-project/releases/)。
  • 针对 source/CMakeLists.txt 文件运行 cmake,并指定 cmake 变量 LLVM_LIB_DIR。
  • 执行构建。

某些组件是可选的,可以通过 cmake 选项禁用(参见 source/CMakeLists.txt)。需要使用 Python 3 来构建和运行用 Python 编写的测试。需要使用 Sphinx 来构建文档。更多信息/示例请参见 ci 目录中的构建脚本。

组件说明

编译器 语言服务器 语法高亮 标准库 构建系统 C++头文件转换器 解释器 QtCreator插件 Visual Studio扩展 文档 示例 额外库

IDE支持

Ecode (https://github.com/SpartanJ/ecode/) 内置了Ü语法高亮、Ü语言服务器支持以及调试支持。建议至少尝试使用它。QtCreator (https://www.qt.io/product/development-tools) 也可用作Ü的IDE。它有对应的语法高亮文件,并且支持自定义语言服务器,因此可以使用Ü语言服务器。还有一个适用于Microsoft Visual Studio的Ü扩展,详情请参见相应的说明。

许多其他IDE也可以使用。任何支持指定自定义语言服务器的IDE都可用来编写Ü代码。一些IDE还允许创建自定义语法高亮规则,你可以自行创建。

下载

编译器下载可在Actions页面获取——作为构建产物提供。建议使用 master 分支的最新构建之一。

作者

版权所有 © 2016-2026 “Panzerschrek”.

相似文章

@rauchg:我们可以做得比 Rust 更好

X AI KOLs Following

Malte Ubl(cramforce)在回应 @rauchg 的一篇帖子时,讨论了 scriptc,这是一款 TypeScript 原生编译器,可通过计算异常行为来生成更优化的代码,是让编译后的 TS 比 Rust 更快这一努力的一部分。

使用 Verus 开发可证明正确的 Rust 代码

Hacker News Top

Verus 是一个开源的自动化程序验证器,专为 Rust 设计,通过数学证明帮助确保代码正确性,并被亚马逊用于像 Nitro Isolation Engine 这样的项目。

七大编程原语言(2022)

Hacker News Top

一篇文章探讨了七种构成大多数现代编程语言基础的编程语言原型(原语言),认为学习植根于这些原型的基础知识比选择特定语言更重要。

Jam 编程语言

Lobsters Hottest

Raphael Amorim 宣布了 Jam,一种旨在结合 Rust 的安全性和 Zig 的简洁性的新编程语言,解决了在 AI 生成代码时代现有系统语言的复杂性和验证开销。

Verus:验证 Rust 代码正确性的工具

Hacker News Top

Verus 是一款针对 Rust 的静态验证工具,利用 SMT 求解在不引入运行时检查的前提下,证明底层系统代码的完整功能正确性。