Metadata-Version: 2.4
Name: origin-or
Version: 1.7.31
Summary: The Origin programming language
Author: Nikhil Mahankali
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Topic :: Software Development :: Interpreters
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: MacOS
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Provides-Extra: pi
Requires-Dist: RPi.GPIO; extra == "pi"
Requires-Dist: adafruit-circuitpython-servokit; extra == "pi"
Requires-Dist: smbus2; extra == "pi"
Provides-Extra: build
Requires-Dist: pyinstaller; extra == "build"
Dynamic: author
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: provides-extra
Dynamic: requires-python
Dynamic: summary

# Origin Programming Language · v1.7.31

**Origin** is my programming language — English-like syntax, strict typing, hardware-first (GPIO/servo primitives for Raspberry Pi), and the full Python ecosystem underneath. this repo is the stable release: `pip install origin-or` and you're writing `.or` files. dev chaos happens in `origin-dev`; this is the polished snapshot.

docs live at [docs-origin.onrender.com](https://docs-origin.onrender.com).

## what's new in v1.7.31

- **JS-shaped default dialect** — the bundled `origin.toml` now maps JavaScript-style lines (`console.log(x);`, `x++;`, `a === b;`, `Math.floor(x);`, `arr.push(x);`, `//` comments, trailing `;`) to real Origin. keyword-led lines (`let`, `if`, `while`, ...) still parse natively, semicolon-free.
- **dialect preset pack** — `tomls/` ships `js/py/ts/c/cpp/rs/java_or.toml` shorthands plus `origin_dialect.md`, the authoring spec (rules, keyword guard, debugging recipe).

## what's new in v1.7.30

- **dialect support (TOML)** — mix foreign-language lines straight into `.or` programs. each line is looked up in the bundled `origin.toml` (`"<origin source>" _ "<dialect line>"`) and compiled to real Origin before execution, including `$name` template captures (e.g. `"let $n:int = $v" _ "$n:$v"` turns `x:5` into `let x:int = 5`). expansion is inline, sharing constants and control flow.
- **dialect-aware runner** — `origin/runner.py` preloads `origin.toml`, precompiles exact mappings to `origin_bytecode.toml`, resolves templates at parse time. interpreter mode (`origin i`) skips dialect lines; use default VM mode.
- **`open ... as` statement** — `open "data.txt", "r" as f` binds a file handle (new `OPEN_FILE` opcode `0x53` on the VM, `name = open(path, mode)` in the interpreter). path/mode accept plain strings, f-strings, and variables.
- **dialect guard** — templated mappings (e.g. `"$n:$v"`) no longer hijack lines starting with a core keyword, so `open f"C:/..."` paths and typed declarations compile as real statements.
- fresh `origin.exe` + `OriginInstallerV1.7.30.zip`, carried-over modular layout (lexer/parser/interpreter/classes subpackages) with the bytecode VM as default backend.

## quickstart

```powershell
git clone https://github.com/boblio-max/origin.git
pip install -r requirements.txt
```

```origin
let x: int = 10
let name: str = "Origin"
let flag: bool = true
const e: float = 2.71828

let a, b = 1, 2
print x + a
```

```bash
python -m origin main.or    # bytecode VM (default)
python -m origin i main.or  # AST interpreter
```

## how it actually works

`origin/` package pipeline: `lexer.py` tokenizes → `parser.py` builds the AST → either `bc/to_byte.py` compiles to bytecode for `bc/svm.py` (the stack VM, default) or the interpreter generates Python and `exec`s it. `dialect.py` + `origin.toml` handle the foreign-line expansion before parsing. `errors.py` gives friendly diagnostics with suggestions instead of raw tracebacks.

## features

English-like syntax · strict (recommended) type annotations with inference · classes/OOP · `try/except/else` · `parallel` thread blocks · module system (`import math as m`, `from lib import x`) · `.or` library imports (`calc.or`, `graph.or`) · hardware I/O (GPIO, ServoKit/PCA9685 with 0–180° servo clamping) · binary builder (PyInstaller `.exe`) · binary + `install.sh`/`secure_install.ps1` installers.

## stack

Python 3.10+, zero runtime deps (extras: Pi/servo libs, pyinstaller for builds). see `requirements.txt`, `setup.py`, `helloworld.or`.
