From 8f3462669e8d536c841d3ce07bfed5432cb379bc Mon Sep 17 00:00:00 2001 From: Li Jin Date: Tue, 24 Feb 2026 17:03:14 +0800 Subject: Updated README.md and CHANGELOG.md. [skip CI] --- README.md | 85 +++++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 47 insertions(+), 38 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 73fadf7..caff885 100644 --- a/README.md +++ b/README.md @@ -1,55 +1,58 @@ # YueScript -logo +YueScript logo [![IppClub](https://img.shields.io/badge/IppClub-Certified-11A7E2?logo=data%3Aimage%2Fsvg%2Bxml%3Bcharset%3Dutf-8%3Bbase64%2CPHN2ZyB2aWV3Qm94PSIwIDAgMjg4IDI3NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWw6c3BhY2U9InByZXNlcnZlIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjIiPjxwYXRoIGQ9Im0xNDYgMzEgNzIgNTVWMzFoLTcyWiIgc3R5bGU9ImZpbGw6I2Y2YTgwNjtmaWxsLXJ1bGU6bm9uemVybyIvPjxwYXRoIGQ9Im0xNjkgODYtMjMtNTUgNzIgNTVoLTQ5WiIgc3R5bGU9ImZpbGw6I2VmN2EwMDtmaWxsLXJ1bGU6bm9uemVybyIvPjxwYXRoIGQ9Ik0yNiAzMXY1NWg4MEw4MSAzMUgyNloiIHN0eWxlPSJmaWxsOiMwN2ExN2M7ZmlsbC1ydWxlOm5vbnplcm8iLz48cGF0aCBkPSJNMTA4IDkydjExMmwzMS00OC0zMS02NFoiIHN0eWxlPSJmaWxsOiNkZTAwNWQ7ZmlsbC1ydWxlOm5vbnplcm8iLz48cGF0aCBkPSJNMCAyNzR2LTUyaDk3bC0zMyA1MkgwWiIgc3R5bGU9ImZpbGw6I2Y2YTgwNjtmaWxsLXJ1bGU6bm9uemVybyIvPjxwYXRoIGQ9Im03NyAyNzQgNjctMTA3djEwN0g3N1oiIHN0eWxlPSJmaWxsOiNkZjI0MzM7ZmlsbC1ydWxlOm5vbnplcm8iLz48cGF0aCBkPSJNMTUyIDI3NGgyOWwtMjktNTN2NTNaIiBzdHlsZT0iZmlsbDojMzM0ODVkO2ZpbGwtcnVsZTpub256ZXJvIi8%2BPHBhdGggZD0iTTE5MSAyNzRoNzl2LTUySDE2N2wyNCA1MloiIHN0eWxlPSJmaWxsOiM0ZTI3NWE7ZmlsbC1ydWxlOm5vbnplcm8iLz48cGF0aCBkPSJNMjg4IDEwMGgtMTdWODVoLTEzdjE1aC0xN3YxM2gxN3YxNmgxM3YtMTZoMTd2LTEzWiIgc3R5bGU9ImZpbGw6I2M1MTgxZjtmaWxsLXJ1bGU6bm9uemVybyIvPjxwYXRoIGQ9Im0yNiA4NiA1Ni01NUgyNnY1NVoiIHN0eWxlPSJmaWxsOiMzMzQ4NWQ7ZmlsbC1ydWxlOm5vbnplcm8iLz48cGF0aCBkPSJNOTMgMzFoNDJsLTMwIDI5LTEyLTI5WiIgc3R5bGU9ImZpbGw6IzExYTdlMjtmaWxsLXJ1bGU6bm9uemVybyIvPjxwYXRoIGQ9Ik0xNTggMTc2Vjg2bC0zNCAxNCAzNCA3NloiIHN0eWxlPSJmaWxsOiMwMDU5OGU7ZmlsbC1ydWxlOm5vbnplcm8iLz48cGF0aCBkPSJtMTA2IDU5IDQxLTEtMTItMjgtMjkgMjlaIiBzdHlsZT0iZmlsbDojMDU3Y2I3O2ZpbGwtcnVsZTpub256ZXJvIi8%2BPHBhdGggZD0ibTEyNCAxMDAgMjItNDEgMTIgMjctMzQgMTRaIiBzdHlsZT0iZmlsbDojNGUyNzVhO2ZpbGwtcnVsZTpub256ZXJvIi8%2BPHBhdGggZD0ibTEwNiA2MCA0MS0xLTIzIDQxLTE4LTQwWiIgc3R5bGU9ImZpbGw6IzdiMTI4NTtmaWxsLXJ1bGU6bm9uemVybyIvPjxwYXRoIGQ9Im0xMDggMjA0IDMxLTQ4aC0zMXY0OFoiIHN0eWxlPSJmaWxsOiNiYTAwNzc7ZmlsbC1ydWxlOm5vbnplcm8iLz48cGF0aCBkPSJtNjUgMjc0IDMzLTUySDBsNjUgNTJaIiBzdHlsZT0iZmlsbDojZWY3YTAwO2ZpbGwtcnVsZTpub256ZXJvIi8%2BPHBhdGggZD0iTTc3IDI3NGg2N2wtNDAtNDUtMjcgNDVaIiBzdHlsZT0iZmlsbDojYTgxZTI0O2ZpbGwtcnVsZTpub256ZXJvIi8%2BPHBhdGggZD0iTTE2NyAyMjJoNThsLTM0IDUyLTI0LTUyWiIgc3R5bGU9ImZpbGw6IzExYTdlMjtmaWxsLXJ1bGU6bm9uemVybyIvPjxwYXRoIGQ9Im0yNzAgMjc0LTQ0LTUyLTM1IDUyaDc5WiIgc3R5bGU9ImZpbGw6IzA1N2NiNztmaWxsLXJ1bGU6bm9uemVybyIvPjxwYXRoIGQ9Ik0yNzUgNTVoLTU3VjBoMjV2MzFoMzJ2MjRaIiBzdHlsZT0iZmlsbDojZGUwMDVkO2ZpbGwtcnVsZTpub256ZXJvIi8%2BPHBhdGggZD0iTTE4NSAzMWg1N3Y1NWgtMjVWNTVoLTMyVjMxWiIgc3R5bGU9ImZpbGw6I2M1MTgxZjtmaWxsLXJ1bGU6bm9uemVybyIvPjwvc3ZnPg%3D%3D&labelColor=fff)](https://ippclub.org) [![Ubuntu](https://github.com/pigpigyyy/Yuescript/actions/workflows/ubuntu.yml/badge.svg)](https://github.com/pigpigyyy/Yuescript/actions/workflows/ubuntu.yml) [![Windows](https://github.com/pigpigyyy/Yuescript/actions/workflows/windows.yml/badge.svg)](https://github.com/pigpigyyy/Yuescript/actions/workflows/windows.yml) [![macOS](https://github.com/pigpigyyy/Yuescript/actions/workflows/macos.yml/badge.svg)](https://github.com/pigpigyyy/Yuescript/actions/workflows/macos.yml) [![Discord Badge](https://img.shields.io/discord/844031511208001577?color=5865F2&label=Discord&logo=discord&logoColor=white&style=flat-square)](https://discord.gg/cRJ2VAm2NV) -YueScript is a MoonScript dialect. It is derived from [MoonScript language](https://github.com/leafo/moonscript) 0.5.0 and continuously adopting new features to be more up to date. +YueScript is a MoonScript dialect that compiles to Lua. It is derived from [MoonScript](https://github.com/leafo/moonscript) `0.5.0` and continues to adopt new features to stay up to date. -MoonScript is a language that compiles to Lua. Since original MoonScript has been used to write web framework [lapis](https://github.com/leafo/lapis) and run a few business web sites like [itch.io](https://itch.io) and [streak.club](https://streak.club) with some large code bases. The original language is getting too hard to adopt new features for those may break the stablility for existing applications. +## Quick Links -So YueScript is a new code base for pushing the language to go forward and being a playground to try introducing new language syntax or programing paradigms to make MoonScript language more expressive and productive. +- Website: +- Documentation: +- Changelog: [`CHANGELOG.md`](./CHANGELOG.md) +- Discord: -Yue (月) is the name of moon in Chinese and it's pronounced as [jyɛ]. +## Overview +MoonScript has been used to build real-world projects such as [Lapis](https://github.com/leafo/lapis), [itch.io](https://itch.io), and [streak.club](https://streak.club). As the original implementation became harder to evolve without risking compatibility, YueScript was created as a modernized code base for pushing the language forward. +YueScript is both a production-ready compiler and a playground for exploring new syntax and programming paradigms that make MoonScript-style development more expressive and productive. + +Yue (月) is the Chinese word for moon and is pronounced [jyɛ]. ## About Dora SSR YueScript is being developed and maintained alongside the open-source game engine [Dora SSR](https://github.com/ippclub/Dora-SSR). It has been used to create engine tools, game demos and prototypes, validating its capabilities in real-world scenarios while enhancing the Dora SSR development experience. - - ## Features -* Based on modified [parserlib](https://github.com/axilmar/parserlib) library from Achilleas Margaritis with some performance enhancement. **lpeg** library is no longer needed. -* Written in C++17. -* Support most of the features from MoonScript language. Generate Lua codes in the same way like the original compiler. -* Reserve line numbers from source file in the compiled Lua codes to help debugging. -* More features like macro, existential operator, pipe operator, Javascript-like export syntax and etc. -* See other details in the [changelog](./CHANGELOG.md). Find document [here](http://yuescript.org). - - +- Based on a modified [parserlib](https://github.com/axilmar/parserlib) with performance enhancements. `lpeg` is no longer required. +- Written in C++17. +- Supports most MoonScript features and generates Lua code in a style compatible with the original compiler. +- Preserves source line numbers in generated Lua to improve debugging. +- Adds features like macros, existential operator, pipe operator, JavaScript-like export syntax, and more. +- See [`CHANGELOG.md`](./CHANGELOG.md) for more details. -## Installation & Usage +## Installation -* **Lua Module** +### Lua Module -  Build `yue.so` file with +Build `yue.so` with: ```sh > make shared LUAI=/usr/local/include/lua LUAL=/usr/local/lib/lua ``` -  Then get the binary file from path `bin/shared/yue.so`. +Then get the binary file from `bin/shared/yue.so`. -  Or you can install [luarocks](https://luarocks.org), a package manager for Lua modules. Then install it as a Lua module with +Or install via [LuaRocks](https://luarocks.org): ```sh > luarocks install yuescript ``` -  Then require the YueScript module in Lua: +Then require the YueScript module in Lua: ```lua require("yue")("main") -- require `main.yue` @@ -65,26 +68,27 @@ f! }) ``` +### Binary Tool (CLI) +Clone this repo, then build and install executable with: -* **Binary Tool** - -  Clone this repo, then build and install executable with: ```sh > make install ``` -  Build YueScript tool without macro feature: +Build YueScript tool without macro feature: + ```sh > make install NO_MACRO=true ``` -  Build YueScript tool without built-in Lua binary: +Build YueScript tool without built-in Lua binary: + ```sh > make install NO_LUA=true ``` -  Use YueScript tool with: +Use YueScript tool with: ```sh > yue -h @@ -131,24 +135,29 @@ Options: in a single line to start/stop multi-line mode ``` -Use cases: +### Common Usage -* Recursively compile every YueScript file with extension `.yue` under current path: `yue .` -* Compile and save results to a target path: `yue -t /target/path/ .` -* Compile and reserve debug info: `yue -l .` -* Compile and generate minified codes: `yue -m .` -* Execute raw codes: `yue -e 'print 123'` -* Execute a YueScript file: `yue -e main.yue` +- Recursively compile every YueScript file with extension `.yue` under current path: `yue .` +- Compile and save results to a target path: `yue -t /target/path/ .` +- Compile and reserve debug info: `yue -l .` +- Compile and generate minified codes: `yue -m .` +- Execute raw codes: `yue -e 'print 123'` +- Execute a YueScript file: `yue -e main.yue` +## Mascot (Xiaoyu / 小玉) +Xiaoyu, the YueScript mascot -## Editor Support +Xiaoyu (小玉) is YueScript's official mascot, a cyber rabbit often seen perched on a crescent moon and coding on a laptop. -* [Vim](https://github.com/pigpigyyy/YueScript-vim) -* [ZeroBraneStudio](https://github.com/pkulchenko/ZeroBraneStudio/issues/1134) (Syntax highlighting) -* [Visual Studio Code](https://github.com/pigpigyyy/yuescript-vscode) +- English page: [here](https://yuescript.org/doc/extras/mascot.html) +- Artwork by [Tyson Tan](https://tysontan.com) +## Editor Support +- [Vim](https://github.com/pigpigyyy/YueScript-vim) +- [ZeroBraneStudio](https://github.com/pkulchenko/ZeroBraneStudio/issues/1134) (Syntax highlighting) +- [Visual Studio Code](https://github.com/pigpigyyy/yuescript-vscode) ## License -- cgit v1.2.3-55-g6feb