返回

文章详情

展示HN:Mach - 一种寻找贡献的编译系统语言

Hacker News2026年6月8日 23:05

Mach是一种静态类型、编译的系统语言,旨在简单、快速、冗长和直观。我们有一个官方Discord!概述 核心哲学 入门 使用示例 文档 版权 许可证 核心哲学 Mach是基于以下原则设计的: 简单性:Mach旨在易于学习、阅读、编写和维护。 明确性:Mach是明确和冗长的。WYSIWYG,总是如此。计算机不是魔法。您的代码不应促进这种幻想。 可维护性:Mach的语义和设计原则优先考虑长期可维护性,而不是短期便利性。 Mach并不旨在优先考虑: 特性:电池不包含在内。永远不。 灵活性:Mach不允许以多种方式做同一件事。 代码冗余:Mach是设计上明确和冗长的。更多代码并不是更糟的代码。 手把手指导:Mach不会阻止您做危险的事情。安全性是程序员做出的决定,而不是强加给他们的限制。 入门 在安装之前请阅读语言参考。文档的编写方式更像是小册子而不是圣经,并假定读者对其他语言的基本编程概念有一定的了解。 构建Mach Mach构建自身,因此从源代码构建需要现有的mach - 首先安装最新版本。 git clone --recurse-submodules https://github.com/octalide/mach cd mach mach build 编译器写在out/<target>/bin/mach中。 用法 mach <命令> [选项] 命令描述 build 将当前项目编译为可执行文件或目标 run 构建并执行当前项目(-- args...转发到程序) test 构建并运行项目的测试 dep 管理供应的依赖(list,add,remove,sync,vendor) init 创建一个新项目(--lib,--name,--force) doc 从源文档注释生成Markdown参考文档 help 显示用法;有关详细信息,请查看mach help <command> 运行mach help <command>以获取有关特定子命令的更多信息,或查看完整的CLI参考。 示例 以下示例需要将标准库作为依赖。如需独立的起始点,请参见Mach Sieve项目或运行mach init以创建一个。 你好世界 use std.runtime; use print: std.print; $main.symbol = "main"; fun main(argc: i64, argv: **u8) i64 { print.println("Hello, World!"); ret 0; } 斐波那契 use std.runtime; use print: std.print; fun fibr(n: u64) u64 { if (n < 2) { ret n; } ret fibr(n - 1) + fibr(n - 2); } $main.symbol = "main"; fun main(argc: i64, argv: **u8) i64 { print.printf("fib(%d) = %d\n", 10::i64, fibr(10)); ret 0; } 阶乘 use std.runtime; use print: std.print; fun fact(n: u64) u64 { if (n == 0) { ret 1; } ret n * fact(n - 1); } $main.symbol = "main"; fun main(argc: i64, argv: **u8) i64 { print.printf("fact(%d) = %d\n", 10::i64, fact(10)); ret 0; } 文档 完整的语言参考在doc/language/中。 构建系统的文档见: doc/manifest.md - mach.toml清单参考 doc/cli.md - mach命令行参考 版权 Mach的灵感来自于数不胜数的语言。编译器本身的直接灵感来自几个特定来源: Golang Vlang Zig Rust Mach站在无数巨人的肩膀上,他们通过直接或间接的方式为这些语言的发展做出了贡献。正是出于对他们工作的尊重,Mach将始终是完全开源的。谢谢大家。 贡献 我们欢迎对Mach的贡献!如果您想贡献,请先阅读我们的贡献指南。 许可证 Mach的许可协议为MIT许可证。

赞助内容

NordVPN Next-gen Antivirus

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

请我喝杯咖啡