{"id":47674111,"url":"https://github.com/authorss81/ipp","last_synced_at":"2026-04-26T02:00:50.314Z","repository":{"id":346512979,"uuid":"1190281540","full_name":"authorss81/Ipp","owner":"authorss81","description":"a new programming language.","archived":false,"fork":false,"pushed_at":"2026-04-21T05:37:29.000Z","size":8587,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-21T07:37:10.509Z","etag":null,"topics":["game-development","language","programming","programming-language","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/authorss81.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP_V2 (1).md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-24T06:08:14.000Z","updated_at":"2026-04-21T05:37:22.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/authorss81/Ipp","commit_stats":null,"previous_names":["authorss81/ipp"],"tags_count":77,"template":false,"template_full_name":null,"purl":"pkg:github/authorss81/Ipp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/authorss81%2FIpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/authorss81%2FIpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/authorss81%2FIpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/authorss81%2FIpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/authorss81","download_url":"https://codeload.github.com/authorss81/Ipp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/authorss81%2FIpp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32283294,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T18:29:39.964Z","status":"online","status_checked_at":"2026-04-26T02:00:05.962Z","response_time":129,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["game-development","language","programming","programming-language","python"],"created_at":"2026-04-02T13:17:56.064Z","updated_at":"2026-04-26T02:00:50.306Z","avatar_url":"https://github.com/authorss81.png","language":"Python","readme":"\u003cdiv align=\"center\"\u003e\n\n# Ipp Language\n\n\u003cimg src=\"https://img.shields.io/badge/version-1.5.36-blue.svg\" alt=\"Version\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/python-3.8+-green.svg\" alt=\"Python\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/license-MIT-orange.svg\" alt=\"License\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/builtins-163+-brightgreen.svg\" alt=\"Builtins\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/tests-37%20passing-brightgreen.svg\" alt=\"Tests\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/status-stable-green.svg\" alt=\"Status\"\u003e\n\n**A beginner-friendly scripting language for game development.**  \nPython-like syntax · Closures · Classes with Inheritance · Pattern Matching · Lambda Functions · Bytecode VM · Async/Await · World-Class REPL\n\n\u003c/div\u003e\n\n---\n\n## What is Ipp?\n\nIpp is a dynamically-typed, interpreted scripting language designed to feel like Python and Lua combined, built specifically for game development scripting. It compiles to a custom bytecode VM and also runs on a tree-walking interpreter for rapid development.\n\n**v1.5.30** includes Emergency Bug Fixes: For-in loop, pi/e constants, let immutability, __str__ method, static methods, continue in loops, and MultiVarDecl + Dict comprehension.\n\n---\n\n## Quick Start\n\n```bash\n# Clone the repo\ngit clone https://github.com/authorss81/Ipp\ncd Ipp\n\n# Run a script\npython main.py examples/hello_world.ipp\n\n# Start the REPL\npython main.py\n```\n\nNo dependencies required. Python 3.8+ only.\n\n### Install via PyPI\n```bash\npip install ipp-lang\nipp repl\nipp run hello.ipp\n```\n\n---\n\n## VSCode Extension\n\n\u003e **Note:** VSCode extension marketplace publish coming soon. Currently available for local installation.\n\nIpp includes a VSCode extension in `vscode-extension/`:\n\n```bash\ncd vscode-extension\nnpm install\nnpm run compile\ncode .\n```\n\n**Features:**\n- Syntax highlighting\n- 15 code snippets (func, class, for, while, if, match, try, etc.)\n- Task runner for `ipp run` and `ipp check`\n- LSP support: go-to-definition, completion, hover, rename\n\n**Commands:**\n- `ipp lsp` — Start LSP server\n- `F5` — Run current file\n\n---\n\n## REPL Features\n\nIpp has a world-class REPL with 30+ built-in commands:\n\n```\n  ██╗██████╗ ██████╗\n  ██║██╔══██╗██╔══██╗\n  ██║██████╔╝██████╔╝\n  ██║██╔═══╝ ██╔═══╝\n  ██║██║     ██║\n  ╚═╝╚═╝     ╚═╝\n\n  Ipp  v1.5.4.5\n  A scripting language for game development\n──────────────────────────────────────────\n  ❯ var x = 2 ** 10\n  → 1024  0.1ms\n\n  ❯ var name = \"World\"\n  ❯ print(\"Hello, \" + name + \"!\")\n  Hello, World!\n```\n\n### Tab Completion\n- **Builtins**: Type `ht` + Tab → `http_get`, `http_post`, `http_put`, etc.\n- **Variables**: Type `my` + Tab → `my_variable`, etc.\n- **Dict keys**: Type `person[\"` + Tab → `name`, `age`, `city`\n- **Fuzzy matching**: `htgt` → `http_get`, `http_put`\n- **REPL commands**: `.h` + Tab → `.help`, `.history`\n\n### REPL Commands\n\n| Category | Commands |\n|----------|----------|\n| **Core** | `.help`, `.vars`, `.fns`, `.builtins`, `.modules`, `.types`, `.version`, `.clear` |\n| **Session** | `.load`, `.save`, `.export`, `.session save/load/clear/export`, `.sessions` |\n| **History** | `.history`, `.last`, `$_`, `.history $_` |\n| **Undo/Redo** | `.undo`, `.redo` |\n| **Debugging** | `.debug start/stop`, `.break \u003cline\u003e`, `.watch \u003cexpr\u003e`, `.locals`, `.stack` |\n| **Inspection** | `.which \u003cname\u003e`, `.doc \u003cfn\u003e`, `.pretty \u003cexpr\u003e`, `.json \u003cexpr\u003e`, `.table \u003cvar\u003e` |\n| **Performance** | `.time \u003cexpr\u003e`, `.profile` |\n| **Shell** | `! \u003ccmd\u003e`, `.pipe \u003ccmd\u003e`, `.cd \u003cdir\u003e`, `.ls [dir]`, `.pwd` |\n| **Customization** | `.theme dark/light/solarized`, `.prompt dir/time/full`, `.alias`, `.bind` |\n| **Code** | `.edit`, `.format \u003cexpr\u003e`, `.search \u003ckw\u003e`, `.examples`, `.tutorial`, `.plugin load` |\n\n### Prompt Customization\n- `.prompt ipp` — Default prompt (`❯`)\n- `.prompt dir` — Show current directory (`(Ipp) ❯`)\n- `.prompt time` — Show current time (`[14:30:00] ❯`)\n- `.prompt full` — Show time + directory (`[14:30:00] C:\\Ipp ❯`)\n\n### Color Themes\n- `.theme dark` — Dark theme (default)\n- `.theme light` — Light theme\n- `.theme solarized` — Solarized theme\n\n---\n\n## Language Tour\n\n### Variables\n\n```ipp\nvar x = 10          # mutable\nlet y = 20          # immutable binding\nvar name: string = \"Ipp\"   # optional type annotation\n```\n\n### Compound Assignment\n\n```ipp\nvar score = 0\nscore += 10\nscore *= 2\nscore -= 5\n```\n\n### Functions \u0026 Closures\n\n```ipp\nfunc greet(name) {\n    return \"Hello, \" + name\n}\n\n# Named arguments\ngreet(name=\"Alice\", greeting=\"Hi\")\n\n# Closures\nfunc make_counter() {\n    var count = 0\n    return func() {\n        count = count + 1\n        return count\n    }\n}\nvar counter = make_counter()\nprint(counter())  # 1\nprint(counter())  # 2\n```\n\n### Lambda Expressions\n\n```ipp\nvar double = func(x) =\u003e x * 2\nprint(double(5))  # 10\n```\n\n### Classes \u0026 Inheritance\n\n```ipp\nclass Animal {\n    func init(name) {\n        this.name = name\n    }\n    func speak() {\n        print(this.name + \" makes a sound\")\n    }\n}\n\nclass Dog : Animal {\n    func speak() {\n        print(this.name + \" says woof!\")\n    }\n}\n\nvar dog = Dog(\"Rex\")\ndog.speak()  # Rex says woof!\n```\n\n### Pattern Matching\n\n```ipp\nvar x = 2\nmatch x {\n    case 1 =\u003e print(\"one\")\n    case 2 =\u003e print(\"two\")\n    case 3 =\u003e print(\"three\")\n    default =\u003e print(\"other\")\n}\n```\n\n### Error Handling\n\n```ipp\ntry {\n    var result = risky_operation()\n} catch e {\n    print(\"Error: \" + e)\n} finally {\n    print(\"Cleanup\")\n}\n```\n\n### List Comprehensions\n\n```ipp\nvar squares = [x*x for x in 1..10]\nvar evens = [x for x in 1..20 if x % 2 == 0]\n```\n\n### Nullish Coalescing\n\n```ipp\nvar name = user_name ?? \"Anonymous\"\n```\n\n### Ternary Operator\n\n```ipp\nvar status = age \u003e= 18 ? \"adult\" : \"minor\"\n```\n\n### Tuple Unpacking\n\n```ipp\nvar a, b = [1, 2]\nprint(a)  # 1\nprint(b)  # 2\n```\n\n### Operator Overloading\n\n```ipp\nclass Vector {\n    func init(x, y) {\n        this.x = x\n        this.y = y\n    }\n    func __add__(other) {\n        return Vector(this.x + other.x, this.y + other.y)\n    }\n}\n```\n\n### Custom `__str__` Method\n\n```ipp\nclass Point {\n    func init(x, y) {\n        this.x = x\n        this.y = y\n    }\n    func __str__() {\n        return \"(\" + this.x + \", \" + this.y + \")\"\n    }\n}\nvar p = Point(3, 4)\nprint(p)  # (3, 4)\n```\n\n---\n\n## Built-in Functions (130+)\n\n### Core (20)\n`print`, `len`, `type`, `input`, `exit`, `assert`, `str`, `int`, `float`, `bool`, `to_number`, `to_int`, `to_float`, `to_bool`, `to_string`, `abs`, `min`, `max`, `sum`, `range`\n\n### Math \u0026 Trigonometry (22)\n`sin`, `cos`, `tan`, `asin`, `acos`, `atan`, `atan2`, `log`, `log10`, `degrees`, `radians`, `pi`, `e`, `sqrt`, `pow`, `round`, `floor`, `ceil`, `lerp`, `clamp`, `distance`, `normalize`, `dot`, `cross`, `sign`, `smoothstep`, `move_towards`, `angle`, `factorial`, `gcd`, `lcm`, `hypot`, `floor_div`\n\n### Random (5)\n`random`, `randint`, `randfloat`, `choice`, `shuffle`\n\n### String (18)\n`upper`, `lower`, `strip`, `split`, `join`, `replace`, `replace_all`, `starts_with`, `ends_with`, `find`, `index_of`, `char_at`, `substring`, `count`, `contains`, `split_lines`, `ascii`, `from_ascii`\n\n### File I/O (7)\n`read_file`, `write_file`, `append_file`, `file_exists`, `delete_file`, `list_dir`, `mkdir`\n\n### Data Formats (15)\n`json_parse`, `json_stringify`, `xml_parse`, `xml_to_string`, `yaml_parse`, `yaml_to_string`, `toml_parse`, `toml_to_string`, `csv_parse`, `csv_parse_dict`, `csv_to_string`, `regex_match`, `regex_search`, `regex_replace`, `hash`\n\n### Hashing \u0026 Encoding (8)\n`md5`, `sha256`, `sha1`, `sha512`, `base64_encode`, `base64_decode`, `gzip_compress`, `gzip_decompress`\n\n### Collections (12)\n`keys`, `values`, `items`, `has_key`, `set`, `deque`, `ordict`, `PriorityQueue`, `Tree`, `Graph`, `uuid4`, `uuid1`\n\n### Networking (12)\n`http_get`, `http_post`, `http_put`, `http_delete`, `http_request`, `http_serve`, `ftp_connect`, `ftp_disconnect`, `ftp_list`, `ftp_get`, `ftp_put`, `smtp_connect`, `smtp_disconnect`, `smtp_send`\n\n### WebSocket (4)\n`websocket_connect`, `websocket_send`, `websocket_receive`, `websocket_close`\n\n### URL Utilities (6)\n`url_parse`, `url_build`, `url_encode`, `url_decode`, `url_query_parse`, `url_query_build`\n\n### Time \u0026 OS (10)\n`time`, `sleep`, `clock`, `datetime`, `os_platform`, `os_cwd`, `env_get`, `env_set`, `path_dirname`, `path_basename`\n\n### Advanced (8)\n`printf`, `sprintf`, `scanf`, `logger`, `thread`, `thread_sleep`, `thread_current`, `argparse`\n\n### Game Types (4)\n`vec2`, `vec3`, `color`, `rect`, `complex`\n\n### Generators (2)\n`next`, `is_generator`\n\n### Async/Await (4)\n`async_run`, `create_task`, `is_coroutine`, `sleep`\n\n### Additional Builtins (31)\n`seed`, `normal`, `now`, `delta`, `format_duration`, `from_hex`, `to_hex`, `blend`, `hsl`, `ease_in`, `ease_out`, `bounce`, `spring`, `read_lines`, `words`, `truncate`, `pad_left`, `pad_right`, `reverse`, `binary_search`, `group_by`, `zip_with`, `find_all`, `sub`, `escape`, `glob`, `pathfind`, `neighbors`, `flood_fill`, `assert_eq`, `inspect`\n\n---\n\n## Async/Await + Coroutines\n\nIpp supports async/await with a built-in event loop:\n\n```ipp\nasync func fetch_data(url) {\n    print(\"Fetching:\", url)\n    sleep(0.1)\n    return \"data from \" + url\n}\n\nvar coro = fetch_data(\"https://example.com\")\nvar result = async_run(coro)\nprint(result)  # data from https://example.com\n```\n\n### Multiple Workers\n\n```ipp\nasync func worker(name, delay) {\n    print(name, \"started\")\n    sleep(delay)\n    print(name, \"finished\")\n    return name + \" done\"\n}\n\nvar r1 = async_run(worker(\"Worker1\", 0.01))\nvar r2 = async_run(worker(\"Worker2\", 0.02))\n```\n\n### Built-in Async Functions\n| Function | Description |\n|----------|-------------|\n| `async_run(coro)` | Run a coroutine and wait for result |\n| `create_task(coro)` | Create and run a coroutine task |\n| `is_coroutine(obj)` | Check if object is a coroutine |\n| `sleep(seconds)` | Sleep for given seconds (awaitable) |\n\n---\n\n## Generators\n\nIpp supports generator functions using the `yield` keyword:\n\n```ipp\nfunc count_up() {\n    var i = 0\n    while i \u003c 5 {\n        yield i\n        i = i + 1\n    }\n}\n\nvar gen = count_up()\nprint(next(gen))  # 0\nprint(next(gen))  # 1\nprint(next(gen))  # 2\n```\n\n### For-in with Generators\n\n```ipp\nfunc fibonacci(n) {\n    var a = 0\n    var b = 1\n    var count = 0\n    while count \u003c n {\n        yield a\n        var temp = a\n        a = b\n        b = temp + b\n        count = count + 1\n    }\n}\n\nfor n in fibonacci(10) {\n    print(n)  # 0, 1, 1, 2, 3, 5, 8, 13, 21, 34\n}\n```\n\n### Generator Utilities\n\n```ipp\nvar gen = count_up()\nprint(is_generator(gen))  # true\nprint(is_generator(42))   # false\n```\n\n---\n\n## Standard Library\n\n### HTTP Client\n```ipp\nvar res = http_get(\"https://httpbin.org/get\")\nprint(res[\"status\"])\nprint(res[\"body\"])\n\nvar post_res = http_post(\"https://httpbin.org/post\", \"data=value\")\n```\n\n### HTTP Server\n```ipp\nfunc handler(method, path, headers, body) {\n    return (200, {\"Content-Type\": \"text/plain\"}, \"Hello from Ipp!\")\n}\nhttp_serve(handler, \"localhost\", 8080)\n```\n\n### FTP Client\n```ipp\nvar ftp = ftp_connect(\"ftp.example.com\", \"user\", \"pass\")\nvar files = ftp_list(ftp)\nftp_get(ftp, \"remote.txt\", \"local.txt\")\nftp_disconnect(ftp)\n```\n\n### SMTP Email\n```ipp\nvar smtp = smtp_connect(\"smtp.gmail.com\", 587, true, \"user@gmail.com\", \"password\")\nsmtp_send(smtp, \"user@gmail.com\", \"recipient@example.com\", \"Subject\", \"Body\")\nsmtp_disconnect(smtp)\n```\n\n### PriorityQueue\n```ipp\nvar pq = PriorityQueue()\npq.push(\"low\", 3)\npq.push(\"high\", 1)\npq.push(\"medium\", 2)\nprint(pq.pop())  # high\nprint(pq.pop())  # medium\n```\n\n### Tree\n```ipp\nvar root = Tree(\"root\")\nroot.add_child(Tree(\"child1\"))\nroot.add_child(Tree(\"child2\"))\nprint(root.traverse_preorder())\nprint(root.traverse_bfs())\n```\n\n### Graph\n```ipp\nvar g = Graph()\ng.add_edge(\"A\", \"B\", 1)\ng.add_edge(\"B\", \"C\", 2)\ng.add_edge(\"A\", \"C\", 4)\nprint(g.shortest_path(\"A\", \"C\"))  # [A, B, C]\n```\n\n---\n\n## Version History\n\n| Version | Focus |\n|---|---|\n| v1.3.0 | String interpolation, REPL redesign |\n| v1.3.1 | Performance optimization |\n| v1.3.2 | VM upvalues, Set type, bug fixes |\n| v1.3.3 | Bug fixes + Standard Library + Networking (HTTP/FTP/SMTP) |\n| v1.3.4 | Comprehensive stdlib testing (130+ builtins) |\n| v1.3.5 | Regex fix + REPL color fix |\n| v1.3.6 | VM compatibility tests + REPL warning |\n| v1.3.7 | REPL enhancements (.load, .save, .doc, .time, .which, .undo, .profile, .alias, .edit, .last) |\n| v1.3.8 | HTTP Server, WebSocket, PriorityQueue, Tree, Graph |\n| v1.3.9 | REPL error handling (smart suggestions, highlight fix, .colors fix) |\n| v1.3.10 | REPL Intelligence (tab completion, debugger, pretty printing, shell integration, themes) |\n| v1.4.0 | Generator functions (`yield`) + VM Bug Fixes (all 7 VM bugs fixed) |\n| v1.4.1 | Error Documentation + Error Reference Guide (ERRORS.md) |\n| v1.4.2 | Tutorial Documentation + Getting Started Guide (TUTORIAL.md) |\n| v1.4.3 | PyPI Publishing + `pip install ipp-lang` |\n| v1.5.0 | Async/Await + Coroutines + Event Loop + 31 New Builtins |\n| v1.5.1 | VSCode Extension + LSP (snippets, task runner, hover, completion) |\n| v1.5.2 | WASM Backend Infrastructure + Web Playground |\n| v1.5.3 | 2D Canvas API (Tkinter) + WebGL Bindings |\n| v1.5.4.3 | Easy Enhancements (.html, .hist, better errors) |\n| v1.5.4.4 | Medium Features (.bg, .jobs, .plot, .async) |\n| v1.5.4.5 | Advanced Features (.serve, .compare, REPL server) |\n| v1.5.4.6 | Expert Features (Plugins, ML autocomplete) |\n| v1.5.5 | 3D Math (vec4, mat4, quat) + Scene Graph (Scene, Node, Camera, Mesh, Light) |\n| v1.5.6 | 3D Primitives (mesh_cube, mesh_sphere, mesh_plane) |\n| v1.5.7 | 3D Visualization (wireframe, point cloud rendering via canvas) |\n| v1.5.8 | Performance \u0026 Profiling (memory_info, benchmark, gc_stats) + Full OpenGL |\n| v1.5.9 | Error Handling \u0026 Debugging (get_stack_trace, error_info, breakpoints) |\n| v1.5.10 | Standard Library (math_degrees, math_gcd, fs_exists, date_timestamp) |\n| v1.5.11 | Module System (module_cache_info, import_module, list_exports) |\n| v1.5.12 | Documentation \u0026 Testing (doc, apidoc, test_report, benchmark_full) |\n| v1.5.13 | Final Polish (cleanup_check, perf_tips, health_check, version_info) |\n| v1.5.14 | Critical Bug Fixes (append, pop, insert, remove, clear + VM global_env fix) |\n| v1.5.15 | Syntax Additions (Lambda with func keyword, Match expression, Enum, else in match) |\n| v1.5.16 | VM/Performance (for-loop in VM works, .cache command, wasm_run function) |\n| v1.5.17 | Missing Features (HTML templates, f-strings, decorator @, event_loop, future, Unicode fix) |\n| v1.5.18 | PyPI Release Polish (workflow fix, documentation update) |\n| v1.5.19 | Polish (OpenGL shaders, async completion) |\n| v1.5.20 | Polish (OpenGL restored, data structures verified) |\n| v1.5.21 | Emergency Fixes (for-in loop in VM) |\n| v1.5.22 | Emergency Fixes (pi, e constants) |\n| v1.5.23 | Emergency Fixes (let immutability) |\n| v1.5.24 | Emergency Fixes (__str__ method) |\n| v1.5.25 | Emergency Fixes (static methods) |\n| v1.5.26 | Emergency Fixes (continue in while/for loops + VM perf) |\n| v1.5.27 | Emergency Fixes (continue in for-in loops) |\n| v1.5.28 | Emergency Fixes (MultiVarDecl in VM) |\n| v1.5.29 | Fixes (list comprehension in interpreter) |\n| v1.5.30 | Emergency Fixes (dict comprehension) |\n| v1.5.31 | Fixes (global cache hash collision) |\n| v1.5.31 | Emergency Fixes (global cache hash collision) |\n| v1.5.32 | Emergency Fixes (SET_INDEX stack fix) |\n| v1.5.33 | Syntax (do-while) + Interpreter bug fix |\n| v1.5.34 | Exception (multiple catch blocks) |\n| v1.5.35 | Syntax (variadic parameters) |\n| v1.5.36 | Syntax (f-strings) |\n| v1.5.37 | Fix (VM import system) |\n| v1.5.38 | Fix (spread operator) |\n| v1.6.0 | Feature (operator overloading) |\n| v1.6.1 | Feature (exception type hierarchy) |\n| v1.6.2 | Feature (decorator execution) |\n| v1.6.3 | Feature (multiple return values) |\n| v1.6.4 | Feature (named function arguments) |\n| v1.6.5 | Feature (property accessors) |\n| v1.6.6 | Feature (signal/event system) |\n| v1.6.7 | Feature (list slicing) |\n| v1.6.8 | Feature (Matrix4x4 + Quaternion) |\n| v1.6.9 | Feature (async/await in VM) |\n| v1.6.10 | Fix (IppSet attribute) |\n| v1.6.11 | Fix (TAIL_CALL crash) |\n| v1.6.12 | Feature (fluent list methods) |\n| v1.6.13 | Feature (string format) |\n| v1.6.14 | Feature (bytecode caching) |\n| v1.6.15 | Feature (static linter) |\n| v1.7.0 | Interpreter (archive) |\n| v1.7.1 | Testing (opcode unit tests) |\n| v1.7.2 | Error Quality (line numbers + call stacks) |\n| v1.7.3 | Package Manager (ippkg) |\n| v1.7.4 | LSP (completion + diagnostics) |\n| v1.7.5 | WASM Backend (real implementation) |\n| v2.0.0 | Package Manager + Full Ecosystem + Game Engine |\n\n---\n\n## Testing\n\n```bash\n# Run all regression tests\npython tests/regression.py\n\n# Run a single test\npython main.py run tests/v1_3_10/test_repl_intelligence.ipp\n```\n\nAll 37 test suites pass with zero failures.\n\n---\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\nFork → Branch → Fix → Pull Request\n\n---\n\n## License\n\nMIT License — see [LICENSE](LICENSE) for details.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fauthorss81%2Fipp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fauthorss81%2Fipp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fauthorss81%2Fipp/lists"}