Important
I am developing various projects, and since I manage, maintain, and update all of them myself, there may be times when I can't attend to each project individually. For example, large-scale projects like Zeta-LLM are very difficult to develop. PyYPSH is also a challenging project, as it implements a custom programming language using ASTs, which is quite advanced. If you would like to report bugs or suggest new features for my projects, I would greatly appreciate it if you could use pull requests and make them ready to merge, if possible. Also, if someone else has already created an issue, I would be thankful if you could create a pull request that immediately addresses the problem, if you're able to. (This message is displayed in some repositories created by Nercone. Translated by GPT-4o.)
YPSH - Your route of Programming is Starting from Here
PyYPSH is one of the official implementations of the YPSH programming language.
It is being developed by DiamondGotCat (hereafter referred to as the creator) alone and is available on GitHub under the MIT license.
The creation of the YPSH language was prompted by a problem the creator was struggling with.
The creator, who uses Python, Swift, PHP, etc. (primarily Python), noticed that certain language-specific issues, such as Python's indentation and PHP's ;, were inherently inconvenient, leading him to wonder, "Isn't it possible to combine the best parts of various languages?"
This is why PyYPSH has such strong integration with the Python interpreter. Python has a large number of libraries, so it's only natural that you'd want to use them in your own language.
The PyYPSH interpreter offers features that are only possible because it's based on Python, such as direct import of Python libraries.
- CPython (Behavior on other Python implementations has not been tested)
- pip/uv, rich, ulid-py, zstandard (for NABS)
- psutil, prompt_toolkit, rich, python‑dotenv (for PyYPSH Runtime)
- pyside6, requests (for PyYPSH Setup)
Supported Python Versions (Based on PyYPSH Runtime dependencies):
| Status | Reason | |
|---|---|---|
| 3.6 | Unsupported | Union type, rich, and python-dotenv are not supported. |
| 3.7 | Unsupported | Union type, rich, and python-dotenv are not supported. |
| 3.8 | Unsupported | Union type and python-dotenv are not supported. |
| 3.9 | Unsupported | Union type are not supported. |
| 3.10 | Supported | psutil ≥3.6, prompt_toolkit ≥3.6, rich ≥3.8, python‑dotenv ≥3.9 are met and PEP604 is available. |
| 3.11 | Recommended | Same as above |
| 3.12 | Recommended | Same as above |
| 3.13 | Supported | Same as above |
| 3.14+ | Maybe | Some libraries do not report support for this Python version. |
Windows 11 has recently caused many issues, and I do not believe that PyYPSH will continue to function properly. It might work, but I will not address any issues that arise on Windows 11 in the future.
PyYPSH uses GitHub Actions to automatically run NABS after each release.
Thanks to this, in most environments you won't need to build it manually. However, in some environments, certain features may not function properly.
If you want to ensure everything works reliably, please refer to the "Manual Building on Your Env" section and build it in the environment where you plan to use it—or in an identical environment.
The pre-built executables can be downloaded from GitHub's Release tab or from the Download the PyYPSH page.
Build status of the pre-built executables:
You can see the pre-build status of PyYPSH Runtime here, and PyYPSH Setup here.
Verification results of the pre-built executables:
| macOS | Windows | Linux | |||
|---|---|---|---|---|---|
| PyInstaller | Runtime | x86_64 | Not Tested | Works properly | Works properly |
| aarch64 | Works properly | Not Tested | Not Tested | ||
| Setup | x86_64 | Not Tested | Works properly | Works properly | |
| aarch64 | Works properly | Not Tested | Not Tested | ||
| Nuitka | Runtime | x86_64 | Not Tested | Works properly | Works properly |
| aarch64 | Works properly | Not Tested | Not Tested | ||
| Setup | x86_64 | Not Tested | GUI does not work | Not tested | |
| aarch64 | GUI does not work | Not Tested | Not tested |
If you want to run and build NABS locally, follow these steps:
- Install Python. (See Supported Python Versions Section to Check supported Python's version.)
- Create and activate a Python virtual environment (using pyenv, venv, uv, anaconda, miniconda, etc.). Since NABS installs dependencies automatically, do this if you want to build in a different environment.
- Prepare a configuration file (used by the configurator.py` to configure PyYPSH). If not provided, defaults will be applied.
- Install
richandulid-py(using pip, uv, or any other package manager that supports PyPI). - Run the
configurator.py. (You can specify the config file using the-coption.) - Run
nabs.py(with-m pyinstalleror-m nuitka). (You can set the output filepath using the-ooption.)
Both PyInstaller and Nuitka are tools for distributing Python scripts as executable files, but they work in completely different ways. PyInstaller bundles Python scripts with the Python interpreter and all required modules into a single executable, ensuring full compatibility. Nuitka translates Python code into C code that uses the CPython C API to execute Python semantics at the C level. Nuitka supports almost all Python syntax and standard libraries, though a few highly dynamic features may have limited support. Because Nuitka compiles Python code into C and then into machine code, it can run faster than PyInstaller-based executables. If compatibility is important, use PyInstaller; if speed is important, use Nuitka.
Previously, Used "DGC-AutoBuild," an automated build system that utilizes GitHub Actions.
Versions:
- V1: 1st version, PyInstaller, 3 platforms
- V2: 2nd version, Nuitka, 4 platforms
- V3: 3rd version, Nuitka, 6 platforms
- V4 (Last): 4th version, PyInstaller, 6 platforms
- V4.5: 5th version, PyInstaller, 6 platforms, 1 experimental platforms (Reverted to V4 partway through)
YPSH is under active development on GitHub.
If you need a feature or fix, please open an issue or make your own changes and submit a pull request.
Your contributions are welcome.
Some texts have been translated from ja-JP using LLM or translation services.