{"id":32197132,"url":"https://github.com/kuroko-lang/kuroko","last_synced_at":"2026-02-23T05:02:10.754Z","repository":{"id":37743323,"uuid":"324509064","full_name":"kuroko-lang/kuroko","owner":"kuroko-lang","description":"Dialect of Python with explicit variable declaration and block scoping, with a lightweight and easy-to-embed bytecode compiler and interpreter.","archived":false,"fork":false,"pushed_at":"2026-02-16T22:36:17.000Z","size":3299,"stargazers_count":469,"open_issues_count":13,"forks_count":32,"subscribers_count":12,"default_branch":"master","last_synced_at":"2026-02-17T05:02:01.504Z","etag":null,"topics":["bytecode","bytecode-compiler","bytecode-vm","interpreter","kuroko","programming-language","python","repl","unicode-strings","vm"],"latest_commit_sha":null,"homepage":"https://kuroko-lang.github.io/","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/kuroko-lang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["klange"]}},"created_at":"2020-12-26T07:59:31.000Z","updated_at":"2026-02-16T22:36:21.000Z","dependencies_parsed_at":"2024-01-15T12:10:58.354Z","dependency_job_id":"8d5b1f6d-2e60-4ba0-b610-790758b4ccfc","html_url":"https://github.com/kuroko-lang/kuroko","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/kuroko-lang/kuroko","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuroko-lang%2Fkuroko","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuroko-lang%2Fkuroko/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuroko-lang%2Fkuroko/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuroko-lang%2Fkuroko/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kuroko-lang","download_url":"https://codeload.github.com/kuroko-lang/kuroko/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kuroko-lang%2Fkuroko/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29738083,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T04:51:08.365Z","status":"ssl_error","status_checked_at":"2026-02-23T04:49:15.865Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["bytecode","bytecode-compiler","bytecode-vm","interpreter","kuroko","programming-language","python","repl","unicode-strings","vm"],"created_at":"2025-10-22T02:51:58.199Z","updated_at":"2026-02-23T05:02:10.748Z","avatar_url":"https://github.com/kuroko-lang.png","language":"Python","funding_links":["https://github.com/sponsors/klange"],"categories":["Python"],"sub_categories":[],"readme":"# \u003cimg src=\"https://kuroko-lang.github.io/logo.png\" align=\"bottom\" height=\"24\"\u003e Kuroko\n\n**Kuroko** is a dynamic, bytecode-compiled programming language and a [dialect](#python-compatibility) of Python. The syntax features indentation-driven blocks, familiar keywords, and explicit variable declaration with block scoping. The runtime interpreter includes a tracing garbage collector, multithreading support without a global lock, and support for single-step debugging and bytecode disassembly. The full interpreter and compiler can be built on Unix-like platforms to a shared library of around 500K and is easy to embed and extend with a [clean C API](https://kuroko-lang.github.io/docs/embedding.html) and limited libc footprint. Kuroko has been successfully built for a wide range of targets, including Linux, [ToaruOS](https://github.com/klange/toaruos), WebAssembly, macOS (including M1 ARM devices), and Windows (with mingw64).\n\n## Build Kuroko\n\nOn most platforms, `make` is sufficient to build in the standard configuration which will produce both REPL binary (`kuroko`) with the compiler and interpreter included, as well as both a static (`libkuroko.a`) and shared library version (`libkuroko.so`) that can be used for embedding.\n\nAdditional build configurations are available with the following options:\n\n- `KRK_DISABLE_RLINE=1`: Do not build with support for the rich syntax-highlighted line editor.\n- `KRK_DISABLE_DEBUG=1`: Do not build support for disassembly. Not recommended, as it does not offer any visible improvement in performance.\n- `KRK_DISABLE_DOCS=1`: Do not include documentation strings for builtins. Can reduce the library size by around 100KB depending on other configuration options.\n\n### Windows\n\nTo build for Windows, it is recommended that a Unix-like host environment be used with the MingW64 toolchain:\n\n```sh\nCC=x86_64-w64-mingw32-gcc make\n```\n\n### WASM\n\nWASM builds can be built from [kuroko-lang/kuroko-wasm-repl](https://github.com/kuroko-lang/kuroko-wasm-repl).\n\nKuroko can be built with the Asyncify option and as a worker.\n\n### Android\n\nFor Android ARM64 targets with MTE (memory tagging extension), specify `KRK_HEAP_TAG_BYTE=0xb4` when building. Kuroko has not been tested with hardware-enforced memory tagging.\n\n### Fully Static\n\nNormally, the main interpreter binary statically links with the VM library, but is otherwise built as a dynamic executable and links to shared libraries for libc, pthreads, and so on. To build a fully static binary, adding `-static` to `CFLAGS` and building only the `kuroko` target should suffice.\n\nWhether a static build supports importing C extension modules depends on the specifics of your target platform.\n\n## Extend and Embed Kuroko\n\nKuroko is easy to embed in a host application or extend with C modules. Please see [the documentation on our website](https://kuroko-lang.github.io/docs/embedding.html) for further information.\n\n## Learn Kuroko\n\nIf you already know Python, adapting to Kuroko is a breeze.\n\nIf you want to get started, [try the interactive tutorial](https://kuroko-lang.github.io/?r=y\u0026c=tutorial()).\n\n## Supported Functionality\n\nKuroko supports a wide range of functionality and syntax expected from a Python implementation, and this list is by no means exhaustive:\n\n- Iteration loops with `for`\n- `list`, `dict` and `set` comprehensions with chained `for` expressions and `if` conditions.\n- Generator expressions and generator functions with `yield` and `yield from`.\n- Context managers and `with`.\n- Exceptions and `try`/`except`/`finally`.\n- Complex assignment targets.\n- Classes with inheritance, general attributes, methods (including static and class methods)\n- Decorators, both for classes and functions.\n- Type hints and other uses of function annotations.\n- Unicode strings.\n- Debugger hooks and instruction stepping.\n- Multithreading.\n- C extension modules.\n\n## Python Compatibility\n\nKuroko aims for wide compatibility with Python 3.x and supports most syntax features and a growing collection of standard library functions. The most notable difference between Kuroko and standard Python is explicit variable declaration and the use of the `let` keyword. Many Python snippets can be ported to Kuroko with only the addition of declaration statements. Some syntax features remain unimplemented, however:\n\n### `async for`, `async with`, `asyncio` module\n\nKuroko does not support the `async for`/`async with` constructs, and does not have a `asyncio` module. They are planned for a future release.\n\n### Iterables\n\nKuroko iterables do not use the `__next__()` method, but rather are called normally. This allows iteration objects to be implemented as simple functions. If you are porting code which has a different use of `__call__()` than `__next__()` it will likely be necessary to change the implementation. Kuroko also doesn't have a `StopIteration` exception; iterators return themselves to signal they are exhausted (if you need an iterator to return itself, consider boxing it in a tuple).\n\n### Inheritance\n\nKuroko provides only _single inheritance_. When porting from Python, mix-in classes and other uses of multiple inheritance may need to be redesigned.\n\n### Global/Nonlocal\n\nThe scoping system in Kuroko makes the `global` and `nonlocal` keywords unnecessary and they are not supported.\n\n### Walrus Operator\n\nKuroko has generalized assignment expressions, so skip the walrus and assign whatever you like (some additional parenthesis wrapping may be necessary to disambiguate assignments).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuroko-lang%2Fkuroko","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkuroko-lang%2Fkuroko","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuroko-lang%2Fkuroko/lists"}