news 2026/8/22 13:37:29

YAMLScript快速上手教程:5步安装ys和libys,跑通你的第一个YAML程序

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
YAMLScript快速上手教程:5步安装ys和libys,跑通你的第一个YAML程序

YAMLScript快速上手教程:5步安装ys和libys,跑通你的第一个YAML程序

【免费下载链接】yamlscriptProgramming in YAML项目地址: https://gitcode.com/gh_mirrors/ya/yamlscript

🐍 想在 YAML 里直接写程序?YS(YAMLScript)就是这样一种工具:它把代码变成数据,让你用熟悉的 YAML 语法写变量、函数、循环和逻辑,一条命令安装ys解释器和libys共享库,5 分钟就能跑通第一个 YAML 程序。本教程面向新手,带你完整走完安装与运行全流程。

为什么选择 YAMLScript?

传统 YAML 只是配置文件格式,想合并配置、计算字段、转换数据,就得额外写一堆脚本。YAMLScript(简称 YS)让你直接在 YAML 文件里写逻辑,而且 100% 兼容现有 YAML 文件——不加代码就只是普通 YAML,加了代码才执行。

YS 的核心优势:

  • 32 种语言统一 API:Python、Rust、NodeJS、Go、Ruby 等,同一套语法到处用
  • 原生编译yslibys都是原生二进制,速度快、零运行时依赖
  • 🧰内置 1000+ 函数:字符串处理、数据转换、文件导入、环境变量,一应俱全
  • 📦完整编程语言:底层编译为 Clojure,需要时可用全部函数式编程能力

准备工作:确认系统支持

yslibys由 GraalVM 的 native-image 编译,目前支持:

操作系统架构
Linux / macOSIntel/AMD(x86_64)、ARM(aarch64)

💡 Windows 支持即将到来。只需bashcurl即可安装,无需其他依赖。

第 1 步:一行命令安装 ys 和 libys

打开终端,运行安装脚本,同时安装ys命令和libys共享库:

curl https://yamlscript.org/install | bash

这条命令会下载对应系统的预编译包,安装到~/.local/bin/ys~/.local/lib/libys.so

几个常用可选参数:

# 安装指定版本 curl https://yamlscript.org/install | VERSION=0.2.29 bash # 只装共享库 libys curl https://yamlscript.org/install | LIB=1 bash # 只装 ys 命令 curl https://yamlscript.org/install | BIN=1 bash

📌 官方完整安装说明见仓库中的doc/install.md,安装脚本源码在www/src/install

备选方案:用 Homebrew 安装

如果你使用 macOS 或 Linux 上的 Homebrew:

brew tap yaml/yamlscript brew install ys brew install yaml/yamlscript/libys

以后升级只需brew upgrade,同样省心。

第 2 步:验证安装是否成功

运行版本命令确认安装:

ys --version

看到版本号输出(如ys version 0.2.29)就说明一切就绪。如果提示"找不到命令",按安装脚本的提示把~/.local/bin加入 PATH:

export PATH=$HOME/.local/bin:$PATH

第 3 步:编写你的第一个 YAML 程序

新建文件hello.ys,内容如下(与仓库示例sample/www/hello.ys一致):

#!/usr/bin/env ys-0 defn main(name='world'): greet: name defn greet(name): say: "Hello, $name!"

看不懂没关系,逐行解释:

  • 第一行的#!/usr/bin/env ys-0是文件头标记,声明这是一个 YS 程序
  • defn main(...)定义主函数,name参数默认值为world
  • say: "Hello, $name!"打印字符串,$name是变量插值

这就是全部——用 YAML 写的函数定义和变量插值,是不是比想象中简单?

第 4 步:运行程序,看到输出

在终端执行:

ys hello.ys Ingy

输出:

Hello, Ingy!

🎉 恭喜!你的第一个 YAML 程序跑通了。不传参数时则输出Hello, world!

想看看 YS 底层编译出了什么 Clojure 代码?用-c参数:

ys -c hello.ys

学习时这个调试技巧非常有用(详见doc/tutorial.md语法基础教程)。

第 5 步:加载现有 YAML 并转成 JSON

YS 同时也是个强大的 YAML 加载器。假设你有配置文件file.yaml

name: Fido age: 6 dog years: 42 likes: [running, fetching, playing, treats]

一行命令转成 JSON:

ys --json file.yaml

输出:

{"name":"Fido", "age":6, "dog years":42, "likes":["fetching", "playing", "running", "treats"]}

更进一步,加上!ys-0标签后就能在 YAML 里写逻辑,让dog years自动计算、likes自动排序:

!ys-0: age =: 6 name: Fido age:: age dog years:: age * 7 likes:: sort:: [running, fetching, playing, treats]

=用于赋值变量,::表示后面的值是代码表达式——就这两个符号,你已经会写"会思考的 YAML"了。

进阶:在自己编程语言中集成 libys

libys共享库可以被几乎所有语言调用,作为现有 YAML 加载器的直接替代。以 Python 为例,安装同版本库后:

import yamlscript ys = yamlscript.YAMLScript() config = ys.load(open('config.yaml').read())

仓库为每种语言都提供了绑定模块和测试,例如:

  • Python 绑定:python/lib/yamlscript
  • Rust 绑定:rust/src
  • NodeJS 绑定:nodejs/lib
  • Go 绑定:go/yamlscript.go

各语言的使用示例完整收录在根目录ReadMe.md中。

常见问题快速解答

Q:libys 版本需要和语言库版本一致吗?需要。安装某语言的 YS 加载库时,请安装完全相同版本libys共享库。

Q:只想临时体验一下 ys 命令?可以把PREFIX指向临时目录:curl https://yamlscript.org/install | PREFIX=/tmp/yamlscript bash

Q:没有 brew、网络受限怎么办?可以克隆源码仓库(https://gitcode.com/gh_mirrors/ya/yamlscript)后运行make install,只需 bash、git、make、curl 四个工具,Linux 上另需libz-dev包。

下一步学什么?

  • 语法基础:doc/tutorial.md(斐波那契数列例子带你入门)
  • 完整安装指南:doc/install.md
  • 可运行的示例程序:sample/目录下有大量 YS 示例,包括 Rosetta Code 经典题目
  • 项目总览与 32 种语言用法:根目录ReadMe.md

现在你已经完成了 YAMLScript 快速上手:5 步安装yslibys,并跑通了第一个 YAML 程序。把配置文件从"静态数据"升级为"可执行逻辑",就从你的下一个.yaml文件开始吧!

【免费下载链接】yamlscriptProgramming in YAML项目地址: https://gitcode.com/gh_mirrors/ya/yamlscript

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 13:33:58

IP地址与子网掩码深度解析:从原理到实战的网络配置指南

你是不是也遇到过这样的问题:给新买的电脑配置网络,面对“IP地址”、“子网掩码”、“默认网关”和“DNS服务器”这几个选项,完全不知道该怎么填?或者,在开发调试时,服务器明明在线,客户端却提示…

作者头像 李华
网站建设 2026/8/22 13:33:33

Numa Balancing 入门

NUMA 与远端访存 AMD EPYC 9004(Genoa,Zen 4)采用 chiplet 设计:多个 Core Compute Die(CCD)通过 Infinity Fabric 接到中央的 I/O Die(IOD),IOD 上集成 12 个内存控制器…

作者头像 李华